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

创建CloudFormation自定义资源关联Lambda出错,无法找到请求日志

自定义资源Lambda无响应且找不到对应日志的排查要点

问题场景

通过TS文件创建Java 11运行时的Lambda函数,配置如下:

description: 'Lambda request handler to automate the DDL commands',
name: LAMBDA_NAME,
timeout: Duration.minutes(10),
memorySize: 512,
componentName: 'DdlLambda',
runtime: Runtime.JAVA_11,
handler: 'handler.ddllambda',
packageName: 'DDLManagementLambda-1.0',
deadLetterQueueEnabled: false,
tracing: Tracing.ACTIVE,
profiling: false,
logRetention: RetentionDays.FOUR_MONTHS

随后创建自定义资源:

import {CustomResource} from "monocdk";

const customResource = new CustomResource(this, 'CustomResource', {
  serviceToken: ddllambda.functionArn,
  properties: {
      version: "version_0"
  }
});

出现错误:

CloudFormation did not receive a response from your Custom Resource.
Please check your logs for requestId [c634da01-9c4d-4f8e-a2fc-a28724aa8206].
If you are using the Python cfn-response module, you may need to update your
Lambda function code so that CloudFormation can attach the updated version.

且无法找到该requestId对应的日志,以下是可能遗漏的排查点:


排查要点

1. Lambda未被触发

如果Lambda根本没执行,自然不会生成对应日志,检查以下内容:

  • 确认自定义资源的serviceToken是否为正确的Lambda ARN,无拼写错误,且未使用未发布的版本/别名(CloudFormation需要调用Lambda的具体版本或$LATEST)。
  • 检查IAM权限:确保CloudFormation服务角色有lambda:InvokeFunction权限调用该Lambda;同时Lambda的执行角色需具备基础权限(比如写入CloudWatch Logs的权限,否则即使执行也无法生成日志)。
  • 查看CloudFormation控制台的自定义资源事件记录,确认是否有触发Lambda的请求记录。

2. Lambda执行但日志无法写入/找不到

  • 检查Lambda执行角色的权限:是否包含logs:CreateLogGroup、logs:CreateLogStream、logs:PutLogEvents权限,缺失这些权限会导致日志无法写入CloudWatch,自然找不到对应记录。
  • 确认日志组路径:默认Lambda日志组为/aws/lambda/${LAMBDA_NAME},检查是否找错了日志组(比如是否有额外的前缀/后缀)。
  • 查看Lambda控制台的「监控」->「最近调用」,是否有失败的调用记录,即使日志未写入,这里可能会显示初始化错误或执行错误的基本信息。

3. Java Lambda的自定义资源实现不符合协议

自定义资源要求Lambda必须严格按照CloudFormation的协议返回响应,否则CloudFormation会一直等待直到超时:

  • 必须处理事件中的ResponseURL,无论执行成功或失败,都要向该URL发送POST请求,携带符合格式的响应数据(包含Status、Reason、PhysicalResourceId、StackId、RequestId等字段)。
  • 确保代码处理了所有自定义资源事件类型(Create/Update/Delete),且在异常场景下也能发送失败响应,避免静默失败。
  • 检查Lambda handler的正确性:配置的handler.ddllambda对应Java类的包结构和方法签名是否正确(比如方法需接收Map<String, Object>事件和Context上下文,且返回正确格式的响应)。

4. CDK部署相关问题

  • 确认自定义资源代码是否完整(用户提供的代码片段未闭合,需检查实际代码是否正确初始化CustomResource)。
  • 检查Lambda包是否正确部署:如果CDK部署时Lambda包未上传完成就触发了自定义资源,会导致无响应,可尝试重新部署并等待Lambda部署完成后再触发自定义资源。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 13:09:26