У вас есть 2 варианта:
Извлечение файлов
Установите политику сегмента в вашем источнике, предоставляя доступ на чтение пользователю / роли в целевой учетной записи.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Example",
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:ListBucket"
],
"Principal": {
"AWS": "arn:aws:iam::DEST_ACCOUNT:user/DestinationAccountUserName"
},
"Resource": [
"arn:aws:s3:::source-bucket",
"arn:aws:s3:::source-bucket/*"
]
}
]
}
Затем вы можете запустить aws s3 sync s3://source-bucket s3://dest-bucket
с пользователем в целевой учетной записи.
Push-файлы
Установите политику сегмента в вашем месте назначения, предоставляя права на запись пользователю / роли в исходной учетной записи.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Example",
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:PutObjectAcl"
],
"Principal": {
"AWS": "arn:aws:iam::SOURCE_ACCOUNT:user/SourceAccountUserName"
},
"Resource": [
"arn:aws:s3:::dest-bucket"
],
"Condition": {
"StringEquals": {
"s3:x-amz-acl": "bucket-owner-full-control"
}
}
}
]
}
Затем вы можете запустить aws s3 sync --acl bucket-owner-full-control s3://source-bucket s3://dest-bucket
с пользователем в исходной учетной записи. ВАЖНО Если вы не установите ACL, владелец корзины в целевой учетной записи не сможет получить доступ к объектам, поэтому мы применяем ACL в "Condition"
.
Вот сообщение AWS об этом: https://aws.amazon.com/es/premiumsupport/knowledge-center/cross-account-access-s3/