Я пытаюсь настроить синхронизацию между двумя сегментами в разных учетных записях AWS.
я получил cp
работаю с:
@ubuntu:~$ s3cmd cp -v s3://src/dir/ s3://dest/folder --recursive
Я пользователь, которому принадлежит /src/dir
и я добавил:
{
"Version": "2012-10-17",
"Id": "Policy1477299702471",
"Statement": [
{
"Sid": "Stmt1477299696163",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::awsid:user/name"
},
"Action": "s3:*",
"Resource": "arn:aws:s3:::bucket/*"
}
]}
К политике разрешений корзины в тестовой корзине.
Теперь я после aws sync
работать, как использовать s3 cp
не рекомендуется использовать с cron.
Я попытался
user@ubuntu:~$ aws s3 sync --dryrun s3://src/ s3://dest/ --region eu-central-1
но мне отказано в доступе:
фатальная ошибка: произошла ошибка (AccessDenied) при вызове операции ListObjects: доступ запрещен
Как я могу получить отказ в доступе, если это пользователь, которому принадлежит сегмент, и запустить синхронизацию?
Причина вашего ListObjects
ошибка в том, что вы дали разрешение на доступ к содержание вашего ведра (arn:aws:s3:::bucket/*
) но вы не дали разрешения к самому ведру (arn:aws:s3:::bucket
). В ListObjects
команде требуется доступ к ведру.
Чтобы проверить это, я сделал следующее:
bucket-a
в аккаунте Abucket-b
в аккаунте Buser-a
в учетной записи A с разрешениями на доступ bucket-a
Добавлена политика сегмента в bucket-b
:
{
"Id": "CopyBuckets",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1",
"Action": "s3:*",
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::bucket-b",
"arn:aws:s3:::bucket-b/*"
],
"Principal": {
"AWS": [
"arn:aws:iam::<account-a-id>:user/user-a"
]
}
}
]
}
Затем я запустил синхронизацию, используя user-a
в аккаунте A:
aws s3 sync s3://bucket-a s3://bucket-b --profile user-a
Это сработало успешно.