AWS Lambda Function接收POST请求时无法触发求助
排查S3触发Lambda无响应的配置问题
针对你遇到的S3上传文件未触发Go Lambda的问题,从AWS配置层面给出以下排查步骤:
检查Lambda的资源策略
确保S3服务有权调用你的Lambda函数。进入Lambda控制台→目标函数→配置→权限→资源策略,确认存在类似以下的策略(替换为你的桶ARN和Lambda ARN):{ "Version": "2012-10-17", "Id": "example-ID", "Statement": [ { "Sid": "example-sid", "Effect": "Allow", "Principal": { "Service": "s3.amazonaws.com" }, "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:区域:账号ID:function:函数名", "Condition": { "ArnLike": { "AWS:SourceArn": "arn:aws:s3:::你的桶名" } } } ] }如果没有这个策略,可重新添加S3触发器让AWS自动生成,或手动配置该策略。
验证S3事件通知配置
- 确认事件类型:检查S3桶的事件通知是否选择了正确的触发事件(比如
s3:ObjectCreated:*或s3:ObjectCreated:Put,控制台上传文件通常触发Put事件,而非POST); - 排查过滤规则:如果配置了前缀/后缀过滤,确保测试文件的路径、文件名符合过滤条件(比如前缀设为
uploads/但测试文件直接传在桶根目录,就不会触发); - 确认目标Lambda:检查通知规则的目标是否是你配置的Lambda函数,ARN是否正确。
- 确认事件类型:检查S3桶的事件通知是否选择了正确的触发事件(比如
查看CloudWatch日志
进入Lambda控制台→目标函数→监控→查看日志:- 如果有调用记录但报错,说明触发成功但代码/执行环境存在问题;
- 如果没有调用记录,说明触发链路存在问题(权限、事件配置错误)。
也可开启S3桶的访问日志,查看S3是否尝试向Lambda发送通知请求及是否有错误返回。
确认基础配置状态
- 检查S3桶和Lambda函数是否在同一AWS区域,跨区域触发可能存在配置限制或延迟;
- 在Lambda控制台的触发器标签页,确认S3触发器的状态为“Enabled”,未被禁用。
验证Go Lambda部署包
确认Go编译产物符合Lambda要求:- 使用
GOOS=linux GOARCH=amd64 go build -o main main.go编译静态二进制文件; - 将编译后的
main文件打包成zip上传,Handler设置为main。
- 使用
内容的提问来源于stack exchange,提问作者TheUnknown_8261
相关产品推荐
相关产品推荐

