【发布时间】:2020-12-06 08:39:51
【问题描述】:
问题
随着时间的推移,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),
});
在我们的例子中,我们只允许 lambda 在我们的 DEVOPS 链中具有特定的名称模式。这意味着要成功部署我们的堆栈,我们必须向我们的“部署者角色”添加以下权限:
"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) 操作系统:全部 语言:打字稿
【问题讨论】:
-
如果有用,可以在这里讨论这个话题:github.com/aws/aws-cdk-rfcs/issues/83
标签: aws-cdk