web-dev-qa-db-fra.com

Contenu statique pour AWS EC2 avec rôle IAM

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é:

  1. Lancer une instance EC2
  2. SSH dans
  3. Extraire un contenu statique d'un seau privé S3

Étapes:

  1. Créer un rôle IAM
  2. Créez une nouvelle instance EC2 avec le rôle IAM ci-dessus spécifié; SSH dans
  3. Définissez les informations d'identification à l'aide de aws 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
  4. Essayez d'utiliser le AWS CLI directement pour accéder au fichier

IAM 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é?

14
jterry

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!

14
jterry

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.

12
Don Law

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: 

  1. Le seau proprement dit (par exemple, "arn: aws: s3 ::: 4ormat-knowledge-base")
  2. Tous les objets dans le compartiment (par exemple, "arn: aws: s3 ::: 4ormat-knowledge-base/*")

Encore un autre tripwire. Zut!

8
David Tonhofer

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

3
pwaller

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.

2
Chris Snyder

J'ai eu cette erreur parce que je n'ai pas associé de stratégie à mon utilisateur IAM.

How it should look

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.

0
BradChesney79