随着时间的推移,CDK变得更加完整和强大,我们现在将无服务器代码替换为CDK。
在开发过程中,我们注意到要使用CDK处理lambda的保留,它正在创建一个自定义资源来处理它。
const lambdaFn = new lambda.Function(this, 'FuncName', {
functionName: `lambda-${props?.appCode}-FuncName-${props?.stage}`,
runtime: lambda.Runtime.NODEJS_12_X,
code: lambda.Code.asset('lambdas/FuncName'),
handler: 'index.handler',
logRetention: 14,
role: lambdaRole,
timeout: cdk.Duration.seconds(60),
});
在我们的情况下,我们只允许在DEVOPS链中使用具有特定名称模式的lambda。这意味着要成功部署我们的堆栈,我们必须向我们的“部署者角色”添加以下权限:
"arn:aws:lambda:\*:${AWS::AccountId}:function:stack-${VAR}-*"
我不知道CDK是否正在创建自定义lambda的其他用例,因此我们保留了“ stack-$ {VAR}-*”以防止出现此问题。截止到今天,我们还没有找到其他方法来管理它。
最终,两者都在生成CloudFormation堆栈。以前,我们通过使用本机属性直接在logGroup中配置日志保留来处理它。 (比较https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-loggroup.html) 我相信这样做是有原因的,或者我们缺少一些东西。
是否可以配置自定义资源的名称,或者计划实施?或者更好的是,在需要自定义Lambda的情况下考虑了保留选项?
提前感谢您的见解!
CDK CLI版本:CDK版本:1.57.0(内部版本2ccfc50) 操作系统:全部 语言:TypeScript
答案 0 :(得分:0)
你可以看这里:How to get logical ID of resource with CDK?
resource.node.default_child.overrideLogicalId("AnyStringHere")