J'ai installé l'AWS cli sur une instance EC2 et je l'ai configuré en exécutant aws configure
et en lui donnant mes clés AWSAccessKeyId et AWSSecretKey, donc si j'exécute la commande aws s3 ls
il renvoie le nom de mon compartiment S3 (appelez-le "mybucket").
Mais si j'essaye alors aws s3 cp localfolder/ s3://mybucket/ --recursive
J'ai une erreur qui ressemble à
A client error (AccessDenied) occurred when calling the CreateMultipartUpload operation: Anonymous users cannot initiate multipart uploads. Please authenticate.
Je pensais qu'en exécutant aws configure et en lui donnant ma clé racine, je donnais effectivement à aws cli tout ce dont il avait besoin pour s'authentifier Y a-t-il quelque chose qui me manque concernant la copie dans un compartiment S3 au lieu de les répertorier?
Les clés d'accès racine et la clé secrète ont un contrôle total et des privilèges complets pour interagir avec l'AWS. Veuillez essayer d'exécuter le aws configure
à nouveau pour revérifier le paramètre et réessayer.
PS: il est fortement déconseillé d'utiliser des clés d'accès root - pensez à créer un IAM (qui prend des privilèges d'administrateur comme root) et utilisez-les.
Je pensais que j'ajouterais un problème très similaire que j'avais lorsque je pouvais répertorier les compartiments mais ne pouvais pas écrire dans un compartiment donné renvoyant l'erreur
An error occurred (AccessDenied) when calling the CreateMultipartUpload operation: Access Denied
Si le compartiment utilise chiffrement côté serveur vous devrez ajouter le --sse
flag pour pouvoir écrire dans ce compartiment.
Si vous avez des variables d'environnement AWS_SECRET_ACCESS_KEY
, AWS_ACCESS_KEY_ID
et AWS_REGION
set, AWS CLI leur donne une priorité plus élevée, et non aux informations d'identification que vous spécifiez avec aws configure
.
Donc, dans mon cas, la commande bash unset AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY
résolu le problème.