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

如何将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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 16:54:03