如何使用 boto3 将标签添加到 Cloudwatch 日志组?

How to add tags to Cloudwatch log group using boto3?

正在尝试使用 boto3 使用 ResourceGroupsTaggingAPI 服务向 cloudwatchLog 组添加标签。 代码似乎正在执行且没有错误,但看不到正在添加的标签。 如何将标签添加到 cloudwatchLog 群组?

代码:

log_group=[]
client = boto3.client('logs')
client_api=boto3.client('resourcegroupstaggingapi')

 def lambda_handler(event, context):
    paginator = client.get_paginator('describe_log_groups')
    response_iterator = paginator.paginate()
    for page in response_iterator:
        for grp in page['logGroups']:
            log_group.append(str(grp['arn']))
    client_api.tag_resources(
        ResourceARNList=log_group,
        Tags={
            'Header1':'value1',
            'Header2':'value2',
            'header3':'value3'}
        )    

这里有几件事。

  1. 打印 tag_resources API 的回复,它可能包含指向正确方向的消息。

  2. 您使用的是较新的 tag_resources API。这个 API 建立在较早的资源之上,每个资源 APIs。就像本例中的 tag_log_group API 一样。这意味着您的 lambda 将需要 tag:TagResourceslogs:TagLogGroup.

  3. 的权限
  4. 您正在发送通过调用 describe_log_groups 获得的 ARN。这些 ARN 的格式为 arn:aws:logs:REGION:ACCOUNT:log-group:LOG_GROUP_NAME:*。由于下划线 tag_log_group API 适用于日志组名称而非 ARN,因此您需要从 ARN 中删除最后一个 :* 以便提取正确的日志组名称。

  5. 我不是 100% 确定您甚至可以在 UI 中看到日志组上的标签。您可能需要调用 list_tags_log_group API 来验证标签是否存在。