LambdaHook
The LambdaHook resource lets you manage AWS CloudFormation LambdaHooks for controlling the lifecycle of your CloudFormation stacks via AWS Lambda functions.
Minimal Example
Section titled “Minimal Example”Create a basic LambdaHook with required properties and one optional property for stack filters.
import AWS from "alchemy/aws/control";
const simpleLambdaHook = await AWS.CloudFormation.LambdaHook("simpleLambdaHook", { HookStatus: "ACTIVE", Alias: "myLambdaHookAlias", TargetOperations: ["Create", "Update"], LambdaFunction: "arn:aws:lambda:us-west-2:123456789012:function:myLambdaFunction", ExecutionRole: "arn:aws:iam::123456789012:role/myExecutionRole"});
Advanced Configuration
Section titled “Advanced Configuration”Configure a LambdaHook with advanced settings, including target filters and a failure mode.
const advancedLambdaHook = await AWS.CloudFormation.LambdaHook("advancedLambdaHook", { HookStatus: "ACTIVE", Alias: "myAdvancedLambdaHook", StackFilters: { Region: ["us-west-2"], AccountId: ["123456789012"] }, TargetOperations: ["Delete"], TargetFilters: { ResourceTypes: ["AWS::S3::Bucket"] }, LambdaFunction: "arn:aws:lambda:us-west-2:123456789012:function:myAdvancedLambdaFunction", ExecutionRole: "arn:aws:iam::123456789012:role/myAdvancedExecutionRole", FailureMode: "ROLLBACK"});
Adoption of Existing Resource
Section titled “Adoption of Existing Resource”Create a LambdaHook that adopts an existing resource if it already exists.
const adoptingLambdaHook = await AWS.CloudFormation.LambdaHook("adoptLambdaHook", { HookStatus: "ACTIVE", Alias: "myAdoptLambdaHook", TargetOperations: ["Update"], LambdaFunction: "arn:aws:lambda:us-west-2:123456789012:function:myAdoptLambdaFunction", ExecutionRole: "arn:aws:iam::123456789012:role/myAdoptExecutionRole", adopt: true // Adopt existing resource instead of failing});
Integration with IAM Policy
Section titled “Integration with IAM Policy”Define a LambdaHook alongside an IAM policy for execution.
const lambdaExecutionRole = await AWS.IAM.Role("lambdaExecutionRole", { AssumeRolePolicyDocument: { Version: "2012-10-17", Statement: [{ Effect: "Allow", Principal: { Service: "lambda.amazonaws.com" }, Action: "sts:AssumeRole" }] }, Policies: [{ PolicyName: "LambdaHookPolicy", PolicyDocument: { Version: "2012-10-17", Statement: [{ Effect: "Allow", Action: ["cloudformation:DescribeStacks", "cloudformation:UpdateStack"], Resource: "*" }] } }]});
const lambdaHookWithIAM = await AWS.CloudFormation.LambdaHook("lambdaHookWithIAM", { HookStatus: "ACTIVE", Alias: "myIAMLambdaHook", TargetOperations: ["Create", "Update"], LambdaFunction: "arn:aws:lambda:us-west-2:123456789012:function:myIAMLambdaFunction", ExecutionRole: lambdaExecutionRole.Arn});