A causa do seu erro ListObjects
é que você atribuiu permissão para acessar o conteúdo do seu intervalo ( arn:aws:s3:::bucket/*
), mas você não deu permissões ao próprio bloco ( arn:aws:s3:::bucket
). O comando ListObjects
requer acesso ao intervalo.
Para testar isso, fiz o seguinte:
- Utilizou duas contas da AWS: conta A, conta B
- Criado
bucket-a
na conta A - Criado
bucket-b
na conta B - Criado um usuário do IAM
user-a
na conta A com permissões para acessarbucket-a
-
Adicionada uma política de 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" ] } } ] }
Em seguida, iniciei a sincronização usando user-a
na conta A:
aws s3 sync s3://bucket-a s3://bucket-b --profile user-a
Funcionou com sucesso.