Я пытаюсь использовать aws s3 sync на awscli между двумя учетными записями.
Аккаунт A принадлежит мне. Учетная запись B, принадлежащая третьей стороне.
Учетная запись B предоставила пользователю: jon on account A разрешение на ведро через предположение role: acceptDevOps.
Джон предполагает, что DevOps получит доступ к корзине в учетной записи B. Но теперь мне нужно выполнить синхронизацию с корзиной обратно в учетной записи A.
Мне отказано в доступе. Возможно, потому, что эта роль, которую взял на себя Джон, не имеет разрешений на ведро в моей учетной записи.
Как мне это сделать?
Есть ли документация по этой конкретной ситуации?
По сути, вам нужно создать политику, чтобы разрешить доступ к корзине S3 на вашей стороне и роли, и привязать эту политику к роли.
Затем пользователь в учетной записи B должен взять на себя эту созданную вами роль, которая разрешает доступ к вашей корзине.
Я считаю, что это именно та статья, которую вы ищете (более подробная): https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_cross-account-with-roles.html
А это более конкретная статья: https://aws.amazon.com/premiumsupport/knowledge-center/copy-s3-objects-account/
Учетные данные, используемые для выполнения aws s3 sync
команда требует:
Поскольку вы принимаете роль из исходной учетной записи (которая уже имеет разрешения на чтение в исходной корзине), вам необходимо: предоставить разрешения этой роли на запись в целевую корзину в вашем аккаунте.
Это можно сделать с помощью политики сегмента для целевого сегмента, которая будет выглядеть примерно так:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:PutObjectAcl",
"s3:GetObject",
"s3:ListBucket",
"s3:GetBucketLocation"
],
"Resource": [
"arn:aws:s3:::destination-bucket/*",
"arn:aws:s3:::destination-bucket"
],
"Principal": {"AWS":"arn:aws:iam::bbbbbbbbbbbb:role/assumeDevOps"}
}
]
}