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

如何通过CloudFormation创建CloudWatch Logs资源策略(Route53场景)

使用CloudFormation配置Route53 DNS查询日志的CloudWatch资源策略

没问题!你完全可以通过CloudFormation来创建允许Route53发送DNS查询日志到CloudWatch Logs的资源策略。下面是一个完整的YAML模板示例,包含了必要的配置(如果你的日志组已经存在,可以去掉日志组的定义部分):

AWSTemplateFormatVersion: '2010-09-09'
Description: CloudFormation template to create CloudWatch Logs resource policy for Route53 DNS query logs

Resources:
  # 可选:如果需要在模板中创建目标日志组
  Route53DNSQueryLogGroup:
    Type: AWS::Logs::LogGroup
    Properties:
      LogGroupName: /aws/route53/my-dns-queries
      RetentionInDays: 30

  # 核心:允许Route53写入日志的资源策略
  Route53LogResourcePolicy:
    Type: AWS::Logs::ResourcePolicy
    Properties:
      PolicyName: Route53-DNS-Query-Logs-Policy
      PolicyDocument: !Sub |
        {
          "Version": "2012-10-17",
          "Statement": [
            {
              "Effect": "Allow",
              "Principal": {
                "Service": "route53.amazonaws.com"
              },
              "Action": [
                "logs:CreateLogStream",
                "logs:PutLogEvents"
              ],
              "Resource": "${Route53DNSQueryLogGroup.Arn}"
            }
          ]
        }

关键部分说明:

  • AWS::Logs::ResourcePolicy:这是CloudFormation中专门用于定义CloudWatch Logs资源权限的资源类型,和你提到的CLI命令aws logs put-resource-policy、Terraform的aws_cloudwatch_log_resource_policy作用完全一致。
  • PolicyDocument:这里的JSON策略明确授权Route53服务主体(route53.amazonaws.com)对指定日志组执行logs:CreateLogStream和logs:PutLogEvents操作——这两个动作是Route53写入日志到CloudWatch Logs必须的权限。
  • !Sub 函数:用来动态插入日志组的ARN,避免手动硬编码,确保模板的灵活性。

如果你的日志组已经存在,只需要把Resource字段替换为你现有日志组的ARN即可,比如:

"Resource": "arn:aws:logs:us-east-1:123456789012:log-group:/aws/route53/existing-dns-queries:*"

创建完这个CloudFormation栈后,你就可以在Route53控制台中配置DNS查询日志,选择对应的日志组作为目标了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 09:08:25