CloudFormation Hooks不将日志推送到Cloudwatch日志



我正在开发一个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

当我选择钩子时,点击编辑->编辑日志配置,我可以看到以下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

奇怪……

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

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日志中看到任何日志流。

最新更新