如何使用命令行在不同 AWS 帐户的 S3 存储桶之间传输数据

如何使用命令行在不同 AWS 帐户的 S3 存储桶之间传输数据

如何使用 s3cmd 在不同 aws 帐户的 s3 存储桶之间传输数据?

command will be like this: s3cmd rsync s3://acc1_bucket/folder/ s3://acc2_bucket/folder --recursive 

但是它将如何识别第二个存储桶环境?正确的做法是什么?

答案1

您只需授权您的 IAM 用户在 S3 存储桶策略中访问该存储桶,如下所示:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "whatever",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "<ARN OF YOUR IAM USER>"
                ]
            },
            "Action": [
                "s3:ListBucket",
                "s3:GetBucketLocation",
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::<YOUR BUCKET NAME>", 
                "arn:aws:s3:::<YOUR BUCKET NAME>/*"
            ]
        }
    ]
}

然后,因为这是跨账户的,您还必须允许您的 IAM 用户执行 S3 调用,通过将策略附加到您的 IAM 用户,如下所示:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "whateveryoulike",
            "Effect": "Allow",
            "Action": [
                "s3:*"
            ],
            "Resource": [
                "arn:aws:s3:::<BUCKET_NAME>",
                "arn:aws:s3:::<BUCKET_NAME>/*"
            ]
        }
    ]
}

只需配置您的 cli,您就可以访问您的跨存储桶帐户。

答案2

您可以使用Minio 客户端又名 mc,它是开源的并且与 AWS S3 兼容。

在 Linux 上安装 Minio 客户端

$ wget https://dl.minio.io/client/mc/release/linux-amd64/mc
$ chmod 755 mc
$ ./mc --help

添加 AWS S3 凭证

$ ./mc config host add mys3one https://s3.amazonaws.com BKIKJAA5BMMU2RHO6Izz V7f1CwQqAcwo80UEIJEjc5gVQUSSx5ohQ9GSrr12

$ ./mc config host add mys3two https://s3.amazonaws.com BKIKJAA5BMMU2RHO6IBB V7f1CwQqAcwo80UEIJEjc5gVQUSSx5ohQ9GSaa64

使用 mc mirror 将对象/存储桶从一个帐户转移到另一个帐户。

$ ./mc mirror mys3one/photos mys3two/photos2

在此示例中,别名为“mys3one”且存储桶名为“photos”的 s3 帐户正在镜像到别名为“mys3two”且存储桶名为 photo2 的 s3 帐户。

您可以通过将其添加到 cron 来自动执行相同操作,这样无论何时需要,都可以定期同步内容。

希望对您有所帮助。免责声明:我为米尼奥

答案3

帐户使用不同的凭证。无法从一个帐户同步到另一个帐户并提供单独的凭证。唯一的方法是使用临时帐户允许公众访问第二个存储桶。

如果这不是一个选择,那么最好的选择是:

s3 sync s3://acct1/bucket . --profile acct1 s3 sync . s3://acct2/bucket --profile acct2

相关内容