You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过CDK为AppSync API创建的日志组添加标签?

如何给AppSync API自动创建的日志组添加标签

我用CDK创建了一个AppSync API,代码如下:

const api = new appsync.GraphqlApi(this, 'Api', {
  name: 'demo',
  schema: 'schema.graphql',
  authorizationConfig: {
    defaultAuthorization: {
      authorizationType: appsync.AuthorizationType.API_KEY,
    },
  },
  xrayEnabled: true,
  logConfig: {
    fieldLogLevel: appsync.FieldLogLevel.ALL
  }
});

但通过全局添加标签的方式,只有API本身会被打上标签,自动创建的CloudWatch日志组不会被标记:

const app = new cdk.App();
new ApiStack(app, 'ApiStack');

Tags.of(app).add('environment', 'dev');

请问怎么确保日志组也能被打上标签?


解决方案

方法一:直接给日志组添加标签

AppSync的GraphqlApi实例暴露了logGroup属性,可以直接获取到自动创建的日志组对象,然后为它单独添加标签:

const api = new appsync.GraphqlApi(this, 'Api', {
  // 保留原有的API配置
  name: 'demo',
  schema: 'schema.graphql',
  authorizationConfig: {
    defaultAuthorization: {
      authorizationType: appsync.AuthorizationType.API_KEY,
    },
  },
  xrayEnabled: true,
  logConfig: {
    fieldLogLevel: appsync.FieldLogLevel.ALL
  }
});

// 给日志组添加指定标签
Tags.of(api.logGroup!).add('environment', 'dev');

由于启用了logConfig,api.logGroup必然存在,所以可以用!断言非空。

方法二:配置标签全局传播策略

如果希望全局标签自动覆盖所有资源(包括隐式创建的日志组),可以在Stack层面添加标签时,设置传播规则为包含所有子资源:

const app = new cdk.App();
const apiStack = new ApiStack(app, 'ApiStack');

// 让标签应用到Stack下的所有资源,包括自动创建的日志组
Tags.of(apiStack).add('environment', 'dev', {
  excludeResourceTypes: [], // 不排除任何资源类型
  applyToLaunchedInstances: true // 确保传播到嵌套资源
});

这种方式不需要单独处理日志组,所有属于该Stack的资源都会被打上标签。


内容的提问来源于stack exchange,提问作者Ryan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 03:35:22