En parcourant les / plusieurs / ressources sur l'utilisation des informations d'identification AWS temporaires dans une instance EC2 lancée, il me semble impossible de faire fonctionner un POC extrêmement simple.
souhaité:
Étapes:
IAM
EC2
avec le rôle IAM
ci-dessus spécifié; SSH
dansaws configure
et les détails que ( avec succès ) ont été renseignés dans http://169.254.169.254/latest/meta-data/iam/security-credentials/iam-role-name
AWS CLI
directement pour accéder au fichierIAM
rôle:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetObject"
],
"Resource": "arn:aws:s3:::bucket-name/file.png"
}
]
}
Lorsque j'utilise le AWS CLI
pour accéder au fichier, cette erreur est générée:
A client error (Forbidden) occurred when calling the HeadObject operation: Forbidden
Completed 1 part(s) with ... file(s) remaining
Quelle étape ai-je raté?
Pour référence future, le problème était de savoir comment j'appelais le AWS CLI
; auparavant je courais:
aws configure
... et en fournissant les détails trouvés dans le profil de rôle généré automatiquement.
Une fois, je lui ai simplement permis de trouver ses propres informations d'identification temporaires et je viens de spécifier manuellement le seul autre paramètre requis (région):
aws s3 cp s3://bucket-name/file.png file.png --region us-east-1
... le fichier a bien tiré. Espérons que cela aidera quelqu'un dans le futur!
J'espère que cela pourrait aider un autre Googler qui atterrit ici.
Le
A client error (403) occurred when calling the HeadObject operation: Forbidden
une erreur peut également survenir si l'horloge de votre système est trop éloignée. J'avais 12 heures dans le passé et j'ai eu cette erreur. Réglez l'horloge à moins d'une minute du temps réel, et l'erreur disparaîtra.
Selon Octroi de l'accès à un seul compartiment S3 à l'aide d'Amazon IAM , la stratégie IAM peut devoir être appliquée à deux ressources:
Encore un autre tripwire. Zut!
Je viens de recevoir cette erreur parce que j'avais une ancienne version de awscli:
Cassé:
$ aws --version
aws-cli/1.2.9 Python/3.4.0 Linux/3.13.0-36-generic
Travaux:
$ aws --version
aws-cli/1.5.4 Python/3.4.0 Linux/3.13.0-36-generic
Vous obtenez également cette erreur si la clé n'existe pas dans le compartiment.
Vérifiez la clé. J'avais un script qui ajoutait une barre oblique supplémentaire au début de la clé lorsqu'il a posté des éléments dans le compartiment. Donc ça:
aws s3 cp --region us-east-1 s3://bucketname/path/to/file /tmp/filename
a échoué avec "Une erreur client (interdite) s'est produite lors de l'appel de l'opération HeadObject: interdite".
Mais ça:
aws s3 cp --region us-east-1 s3://bucketname//path/to/file /tmp/filename
a bien fonctionné. Pas un problème d'autorisations, juste la création de clé boneheaded.
J'ai eu cette erreur parce que je n'ai pas associé de stratégie à mon utilisateur IAM.
tl; dr: la suppression du fichier de carte générique fonctionnait mieux dans s3cmd pour moi.
Aussi cool qu'aws-cli soit - pour mon unique problème de manipulation de fichiers S3 qui ne fonctionnait pas immédiatement comme je l'espérais et pensais qu'il pourrait-, j'ai fini par installer et utiliser s3cmd.
Quelles que soient la syntaxe et les coulisses que j’ai imaginées conceptuellement, s3cmd était plus intuitif et plus accommodant avec mes idées préconçues.
Ce n’est peut-être pas la réponse pour laquelle vous êtes venu ici, mais cela a fonctionné pour moi.