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

如何用Python AWS Lambda函数上传Excel至S3并解决文件损坏问题?

解决Lambda上传Excel到S3后文件损坏的问题

你的代码核心问题是传递给put_object的Body参数错误:你传入的是文件路径字符串,而非实际的文件二进制内容,导致S3中存储的只是一段文本,而非真正的Excel文件,因此无法正常打开。

修正方案一:读取文件内容后上传

通过open函数以二进制读模式打开文件,将文件对象作为Body参数传入:

import boto3

def uploadtoS3(filename=str):
    s3 = boto3.client('s3')
    bucket = 'aws-day-ahead-estimations'
    file_path = '/tmp/' + filename
    # 二进制读模式打开文件,确保读取Excel的二进制内容
    with open(file_path, 'rb') as file_obj:
        s3.put_object(Bucket=bucket, Body=file_obj, Key=filename)
    print('put complete')

修正方案二:使用更简洁的upload_file方法

boto3提供了upload_file方法,直接接收文件路径即可完成上传,代码更简洁:

import boto3

def uploadtoS3(filename=str):
    s3 = boto3.client('s3')
    bucket = 'aws-day-ahead-estimations'
    file_path = '/tmp/' + filename
    # 直接传入文件路径、桶名和目标键
    s3.upload_file(file_path, bucket, filename)
    print('upload complete')

额外注意事项

  • Lambda的/tmp目录默认最大可用空间为512MB,确保生成的Excel文件大小不超过此限制;
  • 确认Lambda执行角色已配置s3:PutObject权限,且权限范围覆盖目标存储桶aws-day-ahead-estimations。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 12:50:22