网站搜索

typescript - CDK 未将标签添加到资源


我正在尝试向一个日志组添加某个标签,但它没有被添加。我检查了 cdk.out,它不在那里,当然,它也没有被添加到资源本身。

      const lg = new LogGroup(this, `${id}-lg`, {
        logGroupName: `/aws/appsync/apis/${this.graphQLApi.attrApiId}`,
        removalPolicy: RemovalPolicy.DESTROY,
      });
      Tags.of(lg).add('test', 'works');

答案#1

我们联系了 AWS,结果发现 Cloudformation 对日志组不支持标签,因此 CDK 也不支持。

答案#2

即使 AWS 资源本身支持,CDK 或 CloudFormation(CDK 实际上是 CloudFormation 模板的生成器)中也并不总是支持标签。CDK 仍然是一个相对较新的项目,采用快速发布周期,因此在某些情况下很难判断它是在按设计工作还是存在小错误。

CloudFormation 的 AWS::Logs::LogGroup 资源目前不支持标记。截至 2021 年 5 月,通过 CloudFormation 添加标记的 PR 最近已被合并,但尚未公开发布。因此,CDK/CloudFormation 目前不支持对该资源进行标记——在该功能在 CloudFormation 中公开可用之后,很可能需要发布 CDK 更新。

验证标签是否受支持的一种方法是使用 CDK 方面将标签应用于所有资源。参见标签。通过将 myConstruct 替换为整个 CDK 应用构造,CDK 应用中的所有资源将继承该标签。这是一种应用项目范围标签(例如项目代码、环境标签)的简单方法。

Tags.of(myConstruct).add('key', 'value');

这也可以通过 core.Tag.add 完成。

In Python
from aws_cdk import (
    core
)
core.Tag.add(
    scope=app,
    key=key,
    value=value
)

如果通过 CDK 创建的 AWS 资源没有标签,那么我们可以说 CDK 不支持该资源的标签。

请务必搜索 CDK 的 GitHub 问题。否则,你可能会花费数小时排查问题,最后才发现这是 CDK 的一个错误。