配置S3触发的Python Lambda返回NoSuchKey错误如何解决
问题原因排查方向
- 测试事件桶名配置错误
你当前测试事件中s3.bucket.name字段填写的是占位符MY_BUCKET_NAME,需要替换为你实际使用的S3桶的准确名称,否则Lambda会尝试访问和你存文件的桶不匹配的资源,自然找不到对应Key。 - 测试对象实际不存在
你仅确认了桶内存在posters/文件夹,但测试事件中指定的Key是posters/HappyFace.jpg,需要确认对应S3桶内确实上传了该路径的文件:S3的文件夹是逻辑虚拟结构,仅创建posters/文件夹不会自动生成posters/HappyFace.jpg这个对象,你需要手动上传对应名称的文件到该目录下,测试才能正常通过。 - S3桶区域不匹配
你代码中硬编码了S3客户端的区域为us-east-2,需要确认你存放文件的S3桶确实位于美东2(俄亥俄)区域,区域不匹配也会导致GetObject请求找不到对应资源。 - 额外校验点
如果以上配置都正确,可在Lambda代码中读取bucket、key的逻辑后添加一行打印print(f"Bucket: {bucket}, Key: {key}"),运行测试后在CloudWatch日志中确认实际请求的桶名和Key是否和你预期的一致,避免编码转义或者字段读取错误导致的Key异常。
内容的提问来源于stack exchange,提问作者darkhorse
相关产品推荐
相关产品推荐

