当前位置: 首页 > 知识库问答 >
问题:

将文件从一个帐户中的S3存储桶复制到另一个帐户中的S3存储桶

汝楷
2023-03-14

我有2个AWS帐户。我试图复制文件从帐户1到帐户2在桶2在美国西部2地区。我有所有必要的IAM政策,相同的凭据适用于两个帐户。我使用python boto3库。

cos = boto3.resource('s3', aws_access_key_id=COMMON_KEY_ID, aws_secret_access_key=COMMON_ACCESS_KEY, endpoint_url="https://s3.us-west-2.amazonaws.com")

copy_source = {
                'Bucket': bucket1,
                'Key': SOURCE_KEY
              }
cos.meta.client.copy(copy_source, "bucket2", TARGET_KEY)

如图所示,复制函数在指向目标帐户2/us-west-2的客户端对象上执行。它是如何获取帐户1/us-east1中的源文件的?我应该提供SourceClient作为复制函数的输入吗?

共有1个答案

嵇弘新
2023-03-14

执行此类复制的最干净方法是:

  • 使用来自Account-2的凭据(IAM用户或IAM角色),这些凭据在Bucket-1(或所有Bucket)上具有GetObject权限,并且在Bucket-2
  • 上具有PutObject权限

此方法很好,因为它只需要一组凭据。

需要注意的几点:

  • 如果您改为使用源帐户的凭据复制文件,请确保将ACL=bucket owner-full-control设置为将所有权移交到目标bucket。

 类似资料:
  • 我正在尝试使用Node将文件从AWS S3存储桶复制到另一个存储桶。问题是,如果文件名没有空格,例如:“abc.csv”,它就可以正常工作。但如果我要复制到的文件名中有空格,例如:“abc xyz.csv”。它抛出了下面的错误。 “指定的密钥不存在。”“NoSuchKey:指定的密钥不存在。应请求。extractError(d:\Projects\Other\testproject\s3filet

  • 有没有一种方法可以将文件列表从一个S3存储桶复制到另一个存储桶?两个S3存储桶都在同一个AWS帐户中。我可以使用aws cli命令一次复制一个文件: 然而,我有1000份文件要复制。我不想复制源存储桶中的所有文件,因此无法使用sync命令。有没有一种方法可以用需要复制的文件名列表来调用一个文件,从而自动化这个过程?

  • 是否可以将文件从源AWS S3 bucket发送/同步到位于不同位置的不同AWS帐户上的目标S3 bucket? 我发现了以下内容:https://aws.amazon.com/premiumsupport/knowled-center/copy-s3-objects-account/ 但是如果我理解正确的话,这就是如何从目标帐户同步文件的方法。 有没有别的方法可以做呢?从源帐户访问目标桶(使用源

  • 我有一个aws组织,有几个S3桶和成员帐户。我在其中一个S3 bucket中添加了bucket策略,允许根据aws在下面URL中提供的文档从成员帐户访问它。 但是在登录了特定的会员账号之后,我仍然无法在那里看到S3的bucket。所以请告诉我这里出了什么问题。

  • 我正在尝试将S3 bucket对象从一个AWS复制到另一个AWS帐户。我在这里遵循了这个链接,它与一个帐户A一起工作,但当我与另一个帐户B一起使用时,会出现拒绝访问错误,这可能是什么原因?是不是跟一些防火墙或者安全问题有关,连源帐户B桶都公开了。这是应用于源桶B的策略 这是应用于目标帐户的策略 我正在使用以下命令从bucket B复制到目标帐户(使用目标帐户配置文件)

  • 我试图在Python3中使用boto3将文件从一个S3桶复制到另一个。我看过以下这些, 使用boto3在两个AWS S3存储桶之间移动文件 boto3文档 aws s3 boto3复制() 如何使用boto3将文件或数据写入S3对象 我的代码如下。 据我所知,这正是医生们的建议。我在命令中尝试了使用和不使用arg名称。 和行按预期执行,程序成功完成。但是,不幸的是,该文件没有出现在新位置。看起来,