【问题标题】:How to copy specific files between 2 different accounts S3 buckets如何在 2 个不同帐户 S3 存储桶之间复制特定文件
【发布时间】:2019-08-09 19:08:29
【问题描述】:

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

我想要的是只打开file2companys3clients3 的解决方案。

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

到目前为止,通过 Kubernetes pod 复制文件,但文件变得太大而无法以这种方式处理(一个文件超过 20GB),所以我正在寻找允许我们退出使用 Kubernetes pod 广告传输客户端的解决方案。

【问题讨论】:

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


    【解决方案1】:

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

    aws s3 cp s3://COMPANY_BUCKET/filename s3://CLIENT_BUCKET/filename
    

    【讨论】:

      【解决方案2】:

      假设您有 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
      

      【讨论】:

        【解决方案3】:

        您还需要将 IAM 策略附加到源存储桶以添加对目标账户的访问权限。然后您可以使用 AWS CLI 检查复制存储桶内容 this guide

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-06-30
          • 1970-01-01
          • 2018-11-20
          • 1970-01-01
          • 1970-01-01
          • 2021-07-03
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多