Я уже видел много ответов, в которых пользователь / роль в учетной записи (учетная запись A) с SourceBucket
должны добавить политику чтения к DestinationBucket
, и в то же время целевой контейнер должен добавить политику корзины пользователю / роли из учетной записи A для доступа на чтение / запись.
Но моя проблема немного другая.
У меня есть доступ к пользователю из учетной записи A, которая имеет только список и доступ для чтения к SourceBucket
. У меня также есть полный доступ к учетной записи B и впоследствии DestinationBucket
.
Теперь, что я могу успешно сделать, это aws s3 sync
из корзины A на локальный диск, используя программный c доступ к пользователю. Затем используйте пользователя / роль из учетной записи B для синхронизации c локального диска с DestinationBucket
.
Я пытаюсь найти решение, в котором я могу напрямую синхронизировать c между двумя сегментами, не синхронизируя его в центральном хранилище.
Я попытался создать роль в учетной записи B, которая имеет права на чтение и запись для DestinationBucket
и пыталась с помощью учетной записи A получить эту роль, чтобы иметь доступ как к SourceBucket
, так и к DestinationBucket
, но у меня нет разрешения принимать на себя роль и с этой учетной записью. Пользователь
Редактировать: На основе комментариев добавляю немного больше информации, которую я уже попробовал. Надеюсь получить ответ сейчас.
Ниже приведена политика для пользователя A, чей ключ доступа и секрет у меня есть, я могу прочитать содержимое корзины источника, используя эти ключи:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ListSourceBucket",
"Effect": "Allow",
"Action": [
"s3:ListBucketMultipartUploads",
"s3:ListBucket",
"s3:GetBucketLocation"
],
"Resource": "arn:aws:s3:::SourceBucket"
},
{
"Sid": "ReadSourceBucketObjects",
"Effect": "Allow",
"Action": [
"s3:GetObjectAcl",
"s3:GetObject"
],
"Resource": "arn:aws:s3:::SourceBucket/*"
}
]
}
Ниже приведена политика корзины, к которой я прикрепил DestinationBucket
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ListBucket",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::012345678910:user/userA"
},
"Action": [
"s3:ListBucketMultipartUploads",
"s3:ListBucket",
"s3:GetBucketLocation"
],
"Resource": "arn:aws:s3:::DestinationBucket"
},
{
"Sid": "ReadAndPutObjects",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::012345678910:user/userA"
},
"Action": [
"s3:PutObjectAcl",
"s3:PutObjectTagging",
"s3:PutObject",
"s3:GetObjectAcl",
"s3:GetObjectTagging",
"s3:GetObject"
],
"Resource": "arn:aws:s3:::DestinationBucket/*"
}
]
}
Но у пользователя A нет политики чтения DestinationBucket
, связанной с его политиками IAM, поэтому прямая команда aws s3 sync
не работает. Когда я пытаюсь это сделать, выдается следующая ошибка:
Произошла ошибка (AccessDenied) при вызове операции ListObjectsV2: Доступ запрещен