使用boto3将Pandas DataFrame上传至S3为Parquet时参数验证失败的解决方法
解决boto3上传Parquet到S3的参数验证失败问题
问题根源
错误提示已经明确指出核心问题:
Parameter validation failed:
Missing required parameter in input: "Key"
Unknown parameter in input: "key"
boto3的put_object方法要求必填参数为大写的Key,你代码中误写为小写的key,导致API无法识别必填参数,同时将小写key判定为非法参数。
修正后的代码
key = 'xetra_daily_report_' + datetime.today().strftime("%Y%m%d_%H%M%S") + '.parquet' out_buffer = BytesIO() df_all.to_parquet(out_buffer, index = False) bucket_target = s3.Bucket('name-bucket') # 将小写的key改为大写的Key bucket_target.put_object(Body = out_buffer.getvalue(), Key = key)
额外提示
- 虽然当前使用
out_buffer.getvalue()可以正常读取内容,但如果后续对out_buffer有其他操作,建议在调用getvalue()前添加out_buffer.seek(0),将文件指针重置到起始位置。 - 你的存储桶策略中,
"arn:aws:s3:::name-bucket/+"属于冗余配置,"arn:aws:s3:::name-bucket/*"已经覆盖了桶内所有对象,可删除该条目简化策略。
内容的提问来源于stack exchange,提问作者Ayush Saxena
相关产品推荐
相关产品推荐

