如何将AWS Lambda /tmp目录下的文件保存到S3存储桶?现有代码运行报错
Lambda /tmp文件上传到S3故障解决
你当前的代码只自定义了异常打印逻辑,没有输出系统抛出的真实错误信息,首先需要调整异常捕获部分定位根因,修改后的参考代码如下:
import boto3 import os temp_input_filepath = r'/tmp/audio_file.wav' # 先确认临时文件写入成功 with open(temp_input_filepath, 'wb') as handle: handle.write(mpeg_bytes) # 校验文件是否存在 if not os.path.exists(temp_input_filepath): print("临时文件生成失败") raise try: s3 = boto3.resource('s3') bucket = s3.Bucket('wav-audio-bucket') key = 'wav-files/' + user_id_uuid + ".wav" bucket.upload_file(temp_input_filepath, key) print(f"文件上传成功,目标路径:{key}") except Exception as e: # 打印真实错误信息 print(f"文件上传失败,目标路径:{key},错误原因:{str(e)}")
常见故障排查点
- IAM权限配置错误:Lambda执行角色必须附加包含
s3:PutObject权限的策略,资源范围需要覆盖你的目标桶路径,示例权限配置如下:
{ "Effect": "Allow", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::wav-audio-bucket/*" }
- 临时文件异常:确认
mpeg_bytes变量不为空,写入/tmp的文件大小正常,避免空文件或者损坏文件导致上传失败 - 网络访问限制:如果你的Lambda配置了VPC,需要为VPC配置S3网关端点或者公网NAT网关,否则VPC内的Lambda无法访问S3服务
- 桶配置冲突:确认目标桶名拼写正确,桶策略没有拦截Lambda执行角色的写入请求,桶没有开启对象锁等限制写入的配置
- 变量异常:确认
user_id_uuid变量已正确赋值,没有包含S3对象键不允许的特殊字符
内容的提问来源于stack exchange,提问作者Eli7
相关产品推荐
相关产品推荐

