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

使用Boto3向其他AWS账户S3写入数据时遇无效ARN格式错误

解决S3 put_object的ARN格式无效问题

问题根源

普通S3存储桶的Bucket参数不能直接传入桶ARN,仅当使用S3访问点(Access Point)或S3 on Outposts时,才需要用ARN替代桶名。你传入的是普通跨账户桶的ARN,不符合参数校验规则,因此触发ParamValidationError。

解决方案

方案1:直接使用桶名称(推荐)

从ARN中提取存储桶名称foo-bar-staging,替换Bucket参数的ARN值即可:

s3.put_object(
    Body=open("/tmp/file.csv", "rb"),
    Bucket="foo-bar-staging",
    Key="foo_barr/to_process/1234.csv",
    ACL='bucket-owner-full-control'
)

补充权限说明

跨账户写入需确保:

  • 当前执行代码的IAM身份(如Lambda角色、ECS任务角色等)拥有目标桶的s3:PutObject权限
  • 目标桶的桶策略已授权该IAM身份的写入操作
  • 指定的ACL='bucket-owner-full-control'可保证目标账户拥有文件的完全控制权,避免后续权限纠纷

方案2:使用S3访问点(若有特殊需求)

如果必须通过ARN访问,需在目标AWS账户创建S3访问点,将访问点ARN传入Bucket参数,并配置访问点的跨账户权限。此时Bucket参数需使用访问点ARN格式(如arn:aws:s3:eu-west-1:123456789123:accesspoint/your-access-point-name)。


内容的提问来源于stack exchange,提问作者Stéphane GRILLON

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 19:20:09