如何在2个不同帐户S3存储桶之间复制特定文件

时间:2019-08-09 08:38:20

标签: python amazon-web-services api amazon-s3 kubernetes

我有公司S3(companys3)存储桶,其中包含多个文件,例如file1file2file3。客户端S3存储桶(clients3)中包含一些我不知道的文件。

我想要的是从file2companys3仅打开clients3的解决方案。

我找到了有关如何复制/克隆整个存储桶的解决方案。但是找不到仅复制特定文件的文件。

这一次通过kubernetes pod进行wi复制文件,但是文件太大,无法以这种方式处理(一个20GB的文件),因此我正在寻找一种解决方案,该解决方案允许我们使用Kubernetes pods广告传输客户端退出。

3 个答案:

答案 0 :(得分:1)

您可以使用S3命令行(awscli)。

foreach

答案 1 :(得分:0)

您还需要将IAM策略附加到源存储桶,以添加对目标帐户的访问权限。然后,您可以使用AWS CLI Check this guide

复制存储桶内容

答案 2 :(得分:0)

假设您有SOURCE和DESTINATION存储桶。您需要正确地委派权限。

源S3

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "DelegateS3Access",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::DESTINATION_BUCKET_ACCOUNT_NUMBER:root"
            },
            "Action": [
                "s3:ListBucket",
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::SOURCE_BUCKET_NAME/*",
                "arn:aws:s3:::SOURCE_BUCKET_NAME"
            ]
        }
    ]
}

目的地S3

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket",
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::SOURCE_BUCKET_NAME",
                "arn:aws:s3:::SOURCE_BUCKET_NAME/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket",
                "s3:PutObject",
                "s3:PutObjectAcl"
            ],
            "Resource": [
                "arn:aws:s3:::DESTINATION_BUCKET_NAME",
                "arn:aws:s3:::DESTINATION_BUCKET_NAME/*"
            ]
        }
    ]
}

之后,您将使用AWS CLI

aws s3 sync s3://SOURCE-BUCKET-NAME s3://DESTINATION-BUCKET-NAME --source-region SOURCE-REGION-NAME --region DESTINATION-REGION-NAME
相关问题