有没有办法在由logRetention参数创建的aws-cdk中强制使用Lambda自定义资源名称?

时间:2020-08-17 08:10:47

标签: aws-cdk

问题

随着时间的推移,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

1 个答案:

答案 0 :(得分:0)

你可以看这里:How to get logical ID of resource with CDK?

resource.node.default_child.overrideLogicalId("AnyStringHere")