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

使用Boto3复制文件到跨账号Amazon S3桶后无法打开或下载如何解决

问题解答
  • 你参考的服务端重加密方案是完全正确的,不需要你手动解密源文件再重新加密:S3跨账号复制时会在AWS服务端自动完成「源KMS解密→目标KMS重加密」的全流程,全程不会暴露明文数据,也不需要你在Lambda中做额外的加解密运算,不会额外消耗计算资源。
  • 对方账号用户访问被拒绝绝大多数是权限配置遗漏导致,你可以逐项排查以下配置项:

必须检查的配置项

  • Lambda执行角色权限配置

    你使用的Lambda执行角色需要同时配置两类权限:
    1. 源端权限:源S3桶的s3:GetObject权限、源桶关联KMS密钥的kms:Decrypt权限
    2. 目标端权限:目标S3桶的s3:PutObject权限、对方提供的KMS密钥的kms:GenerateDataKey、kms:Encrypt权限
  • 复制操作的参数配置

    你在调用Boto3的copy_object方法时,必须额外添加以下3个核心参数:
    s3.copy_object(
        Bucket=目标桶名,
        Key=目标对象键,
        CopySource={'Bucket': 源桶名, 'Key': 源对象键},
        # 跨账号复制必填参数
        ACL='bucket-owner-full-control', # 给目标桶所有者授予对象完全控制权限,解决跨账号对象所有权问题
        ServerSideEncryption='aws:kms', # 指定目标端使用KMS加密
        SSEKMSKeyId='对方提供的KMS密钥ARN' # 指定使用对方账号的KMS密钥加密
    )
    
  • 对方账号的KMS密钥策略配置

    对方账号的KMS密钥的资源策略中,必须显式允许你的Lambda执行角色ARN调用kms:Encrypt、kms:Decrypt、kms:GenerateDataKey、kms:DescribeKey这几个权限,仅你侧配置角色权限不生效,KMS资源策略的优先级更高。
  • 目标桶的所有权配置

    建议对方账号的目标桶开启「桶所有者强制所有权」设置,开启后所有上传到桶的对象所有权自动归桶所有者所有,可避免ACL配置遗漏导致的访问拒绝问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 19:15:03