我有公司S3(companys3
)存储桶,其中包含多个文件,例如file1
,file2
和file3
。客户端S3存储桶(clients3
)中包含一些我不知道的文件。
我想要的是从file2
到companys3
仅打开clients3
的解决方案。
我找到了有关如何复制/克隆整个存储桶的解决方案。但是找不到仅复制特定文件的文件。
这一次通过kubernetes pod进行wi复制文件,但是文件太大,无法以这种方式处理(一个20GB的文件),因此我正在寻找一种解决方案,该解决方案允许我们使用Kubernetes pods广告传输客户端退出。
答案 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