Python 如何在两个不同的帐户之间复制特定文件

Python 如何在两个不同的帐户之间复制特定文件,python,amazon-web-services,api,amazon-s3,kubernetes,Python,Amazon Web Services,Api,Amazon S3,Kubernetes,我的公司S3(companys3)存储桶中有多个文件,例如file1、file2和file3。客户端S3 bucket(clients3)和一些我不知道的文件 我想要的是只打开file2从companys3到clients3的解决方案 我找到了如何复制/克隆整个存储桶的解决方案。但找不到任何只复制特定文件的文件 到目前为止,我们都是通过Kubernetes吊舱复制文件,但文件太大,无法以这种方式处理(一个文件的容量为20GB),因此我正在寻找一种解决方案,允许我们停止使用Kubernetes吊舱

我的公司S3(
companys3
)存储桶中有多个文件,例如
file1
file2
file3
。客户端S3 bucket(
clients3
)和一些我不知道的文件

我想要的是只打开
file2
companys3
clients3
的解决方案

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


到目前为止,我们都是通过Kubernetes吊舱复制文件,但文件太大,无法以这种方式处理(一个文件的容量为20GB),因此我正在寻找一种解决方案,允许我们停止使用Kubernetes吊舱ad传输客户端

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


您还需要将IAM策略附加到源bucket以添加对目标帐户的访问。然后,您可以使用AWS CLI检查复制存储桶内容,假设您有源存储桶和目标存储桶。您需要正确地委派权限

来源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
aws s3 sync s3://SOURCE-BUCKET-NAME s3://DESTINATION-BUCKET-NAME --source-region SOURCE-REGION-NAME --region DESTINATION-REGION-NAME