J'essaie de configurer la synchronisation entre deux godets sur différents comptes AWS.
J'ai eu cp
travaillant avec:
@ubuntu:~$ s3cmd cp -v s3://src/dir/ s3://dest/folder --recursive
Je suis l'utilisateur qui possède /src/dir
et j'ai ajouté:
{
"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/*"
}
]}
À la stratégie d'autorisations de seau sur le godet de test.
Maintenant je suis après aws sync
Pour travailler, comme en utilisant s3 cp
n'est pas recommandé pour utiliser avec cron.
J'ai essayé
user@ubuntu:~$ aws s3 sync --dryrun s3://src/ s3://dest/ --region eu-central-1
mais je reçois accès refusé:
erreur fatale: une erreur s'est produite (accès) lors de l'appel de l'opération ListObjects: Accès refusé
Comment puis-je obtenir l'accès refusé s'il s'agit de l'utilisateur qui possède le godet et de se synchroniser?
La cause de votre erreur ListObjects
est que vous avez attribué la permission d'accéder au contenu de votre godet (arn:aws:s3:::bucket/*
) Mais vous n'avez pas donné des autorisations au seau lui-même (arn:aws:s3:::bucket
). La commande ListObjects
nécessite un accès au godet.
Pour tester cela, j'ai fait ce qui suit:
bucket-a
en compte abucket-b
en compte buser-a
En compte A avec des autorisations pour accéder à bucket-a
Ajout d'une stratégie de godet à 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"
]
}
}
]
}
J'ai ensuite déclenché la synchronisation en utilisant user-a
en compte A:
aws s3 sync s3://bucket-a s3://bucket-b --profile user-a
Cela a fonctionné avec succès.