使用CDK阻止栈内Lambda资源被意外更新的方法咨询
在AWS CDK中配置CloudFormation栈策略保护Lambda资源
核心解决方案
CDK的Stack类提供了addStackPolicyStatement方法,可直接在代码中添加栈策略规则,阻止指定Lambda资源被更新。
代码示例(TypeScript)
import { Stack, StackProps, aws_lambda as lambda, CfnStackPolicy } from 'aws-cdk-lib'; import { Construct } from 'constructs'; export class MyLambdaStack extends Stack { constructor(scope: Construct, id: string, props?: StackProps) { super(scope, id, props); // 定义需要保护的Lambda函数 const protectedLambda = new lambda.Function(this, 'ProtectedLambda', { runtime: lambda.Runtime.NODEJS_20_X, handler: 'index.handler', code: lambda.Code.fromAsset('./lambda-src'), }); // 添加栈策略,禁止对该Lambda执行任何更新操作 this.addStackPolicyStatement(new CfnStackPolicy({ effect: 'Deny', principals: ['*'], actions: ['Update:*'], resources: [protectedLambda.functionArn], })); } }
关键说明
- 该策略会阻止CloudFormation对目标Lambda执行任何更新操作,包括因栈内其他资源变更触发的Lambda重新部署
- 若需要临时更新该Lambda,可通过AWS控制台手动修改栈策略,或临时注释CDK中的策略代码后重新部署
- 确保
resources字段正确引用Lambda的ARN,CDK会自动解析资源的ARN值,无需硬编码
内容的提问来源于stack exchange,提问作者therealdakotal
相关产品推荐
相关产品推荐

