如何通过AWS Python3 Lambda将API获取的JSON数据上传至S3 Bucket?
实现方案
你当前的实现思路是可行的,针对JSON数据上传的场景,补充适配调整如下:
核心注意点
- 从API拉取到的是Python字典对象,需要先序列化为标准JSON字符串再上传,避免出现格式异常
- 生产环境不要硬编码AWS凭证到代码中,boto3会自动读取环境变量、本地
~/.aws/credentials配置文件、或云服务实例绑定的IAM角色权限,安全性更高 - 上传时可指定
Content-Type为application/json,方便后续S3直接识别文件类型,支持在线预览或者接口直接调用解析
完整可运行代码示例
import boto3 import json # 初始化S3资源 s3 = boto3.resource( 's3', region_name='us-east-1' # 本地调试无默认凭证时可临时补充以下两行,请勿提交到公开代码仓库 # aws_access_key_id=你的KEY_ID, # aws_secret_access_key=你的ACCESS_KEY ) # 此处替换为你从API拉取到的实际数据 api_response_data = { 'id': 'sample_id_123', 'firstname': 'demo', 'Lastname': 'user' } # 序列化为JSON字符串,ensure_ascii=False避免中文等非ASCII字符乱码 json_content = json.dumps(api_response_data, ensure_ascii=False, indent=2) # 上传到S3 s3.Object('替换为你的桶名', '存储的文件名.json').put( Body=json_content, ContentType='application/json' )
如果你的JSON数据量较大,也可以考虑先写入本地临时文件再上传,避免占用过多内存,普通场景下上述代码完全可以满足需求。
内容的提问来源于stack exchange,提问作者rangelo313
相关产品推荐
相关产品推荐

