CloudFormation Registry提交私有资源类型未创建CloudWatch日志组求助
排查CloudFormation私有资源类型日志缺失问题
以下是逐步排查方案:
- 确认日志所在区域:私有资源类型是区域级资源,日志组只会创建在你执行
cfn submit的同一AWS区域,不要跨区域查找。 - 检查Handler执行角色权限:
- 进入IAM控制台,找到由
cfn submit自动创建的资源处理角色(名称通常包含ResourceHandlerRole及你的资源类型标识)。 - 验证该角色是否包含
logs:CreateLogGroup、logs:CreateLogStream、logs:PutLogEvents这三个权限。如果权限缺失,日志组无法创建,日志也无法写入。
- 进入IAM控制台,找到由
- 核对日志组命名规则:
官方标准日志组格式为/aws/cloudformation/resource-types/<资源类型全称>/<版本号>(例如/aws/cloudformation/resource-types/MyOrg::MyService::MyResource/00000001),而非你提到的堆栈名格式。直接在CloudWatch日志组列表中搜索你的资源类型全称,或者搜索aws/cloudformation/resource-types前缀快速定位。 - 检查资源操作状态:
- 进入CloudFormation控制台,查看包含私有资源的堆栈事件,确认资源是否成功完成创建/更新操作。如果操作失败(比如Handler超时、逻辑报错),可能日志未正常生成。
- 若堆栈事件中有Handler执行报错,可直接关联查看对应Lambda函数的日志。
- 验证Handler代码的日志逻辑:
使用cfn invoke命令本地调用Handler,测试日志是否正常输出:
若本地无日志输出,说明代码中的logger配置存在问题,需检查脚手架生成的logger对象是否正确初始化。cfn invoke --function-name <你的Handler Lambda函数名> --event test-event.json - 直接查看Lambda函数日志:
私有资源类型的Handler本质是Lambda函数,cfn submit会自动创建该函数(名称通常包含ResourceHandler及资源类型名)。进入Lambda控制台找到该函数,点击「监控」标签下的「查看CloudWatch日志」,直接查看Lambda默认的日志组(格式为/aws/lambda/<函数名>),部分场景下日志会输出到这里而非CFN指定的专用日志组。 - 检查资源类型注册详情:
进入CloudFormation Registry控制台,找到你的私有资源类型,查看其配置详情,确认是否有指定的日志组信息,或是否存在注册过程中的错误提示。
内容的提问来源于stack exchange,提问作者user981231237
相关产品推荐
相关产品推荐

