【问题标题】:CloudFormation Hooks do not push logs to Cloudwatch LogsCloudFormation 挂钩不会将日志推送到 Cloudwatch Logs
【发布时间】:2022-11-19 16:18:11
【问题描述】:

我正在开发 Cloudformation Hook。我可以成功部署它并执行我的自定义处理程序。但是,我看不到任何 CloudWatch 日志组,因此无法调试 Hook 逻辑。

aws configure
cfn generate
cfn submit --set-default
HOOK_TYPE_ARN="arn:aws:cloudformation:eu-central-1:563262xxxxx:type/hook/My-Dummy-Hook"

aws cloudformation set-type-configuration \
  --configuration file://type_config.json \
  --type-arn $HOOK_TYPE_ARN \
  --region eu-central-1

当我选择我的 Hook 时,转到编辑 -> 编辑日志配置,我可以看到以下 json:

{
  "logGroupName": "my-dummy-hook-logs",
  "logRoleArn": "arn:aws:iam::563262xxxxx:role/CloudFormationManagedUplo-LogAndMetricsDeliveryRol-KYUY5H9D4XQN"
}

这个角色确实存在,它有创建日志组等所有必要的策略:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "logs:CreateLogGroup",
                "logs:CreateLogStream",
                "logs:DescribeLogGroups",
                "logs:DescribeLogStreams",
                "logs:PutLogEvents",
                "cloudwatch:ListMetrics",
                "cloudwatch:PutMetricData"
            ],
            "Resource": "*",
            "Effect": "Allow"
        }
    ]
}

但是我在 Cloudwatch 中仍然看不到任何日志,也没有创建日志组。一个有趣的观察是我无法通过 AWS 控制台更改此 json,它总是会引发错误(尽管我指定了有效的角色或日志组):

Please use arn or specify a type
JSON

诡异的...

【问题讨论】:

    标签: amazon-web-services amazon-cloudformation amazon-cloudwatch amazon-cloudwatchlogs


    【解决方案1】:

    我的问题是我忘记在处理程序代码中指定日志级别:

    import logging
    
    # Use this logger to forward log messages to CloudWatch Logs.
    
    LOG = logging.getLogger(__name__)
    LOG.setLevel(logging.INFO)            # <- this line was missing
    

    换句话说,如果未明确设置,将使用默认记录器级别,即WARNING。这意味着如果您在处理程序代码中调用 LOG.debug("test")LOG.info("test"),您将不会在 Cloudwatch Logs 中看到任何日志流。

    【讨论】:

      猜你喜欢
      • 2019-04-21
      • 1970-01-01
      • 2020-02-27
      • 2016-11-07
      • 2020-01-25
      • 1970-01-01
      • 2019-12-01
      • 1970-01-01
      • 2019-05-07
      相关资源
      最近更新 更多