wake-up-neo.com

Statischer Inhalt für AWS EC2 mit IAM-Rolle

Wenn ich durch die / viele / -Ressourcen über die Verwendung temporärer AWS-Berechtigungsnachweise in einer gestarteten EC2-Instanz verweise, kann ich nicht scheinen, dass ein extrem einfaches POC ausgeführt wird.

Gewünscht:

  1. Starten Sie eine EC2-Instanz
  2. SSH in
  3. Ziehen Sie einen statischen Inhalt aus einem privaten S3-Bucket

Schritte:

  1. Erstellen Sie eine IAM-Rolle
  2. Starten Sie eine neue EC2-Instanz mit der oben angegebenen IAM-Rolle. SSH in
  3. Legen Sie die Berechtigungsnachweise mithilfe von aws configure und den Details fest, die ( erfolgreich ) in http://169.254.169.254/latest/meta-data/iam/security-credentials/iam-role-name angegeben wurden.
  4. Versuchen Sie, den AWS CLI direkt für den Zugriff auf die Datei zu verwenden

IAM Rolle:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject"
      ],
      "Resource": "arn:aws:s3:::bucket-name/file.png"
    }
  ]
}

Wenn ich AWS CLI für den Zugriff auf die Datei verwende, wird dieser Fehler ausgegeben:

A client error (Forbidden) occurred when calling the HeadObject operation: Forbidden
Completed 1 part(s) with ... file(s) remaining

Welchen Schritt habe ich vermisst?

14
jterry

Als Referenz diente das Problem, wie ich den AWS CLI anrief. vorher war ich gelaufen:

aws configure

... und die Details des automatisch generierten Rollenprofils angeben.

Nachdem ich ihm einfach erlaubt hatte, seine eigenen temporären Anmeldeinformationen zu finden, und nur den anderen erforderlichen Parameter manuell angegeben (Region):

aws s3 cp s3://bucket-name/file.png file.png --region us-east-1

... die Datei gut gezogen. Hoffentlich hilft das in Zukunft jemandem weiter!

14
jterry

Ich hoffe, das könnte einem anderen Googler helfen, der hier landet.

Das 

A client error (403) occurred when calling the HeadObject operation: Forbidden

ein Fehler kann auch auftreten, wenn Ihre Systemuhr zu weit entfernt ist. Ich war 12 Stunden in der Vergangenheit und habe diesen Fehler bekommen. Stellen Sie die Uhr auf eine Minute innerhalb der Minute ein, und der Fehler ist verschwunden.

12
Don Law

Gemäß Gewähren des Zugriffs auf einen einzelnen S3-Bucket mithilfe von Amazon IAM muss die IAM-Richtlinie möglicherweise auf zwei Ressourcen angewendet werden: 

  1. Der eigentliche Eimer (z. B. "arn: aws: s3 ::: 4ormat-knowledge-base")
  2. Alle Objekte im Bucket (z. B. "arn: aws: s3 ::: 4ormat-knowledge-base/*")

Noch ein Tripwire. Verdammt!

8
David Tonhofer

Ich habe gerade diese Fehlermeldung erhalten, weil ich eine alte Version von awscli hatte:

Gebrochen:

$ aws --version aws-cli/1.2.9 Python/3.4.0 Linux/3.13.0-36-generic

Werke:

$ aws --version aws-cli/1.5.4 Python/3.4.0 Linux/3.13.0-36-generic

3
pwaller

Diese Fehlermeldung wird auch angezeigt, wenn der Schlüssel nicht im Bucket vorhanden ist. 

Überprüfen Sie den Schlüssel noch einmal. Ich hatte ein Skript, das am Anfang des Schlüssels einen zusätzlichen Schrägstrich hinzufügte, als er Elemente in den Bucket POST brachte. Also das:

aws s3 cp --region us-east-1 s3://bucketname/path/to/file /tmp/filename

fehlgeschlagen mit "Ein Clientfehler (Verboten) ist beim Aufrufen des HeadObject-Vorgangs aufgetreten: Verboten."

Aber dieses:

aws s3 cp --region us-east-1 s3://bucketname//path/to/file /tmp/filename

hat gut funktioniert. Überhaupt keine Berechtigungsfrage, nur die Erstellung von Schlüsseln.

2
Chris Snyder

Ich hatte diesen Fehler, weil ich meinem IAM-Benutzer keine Richtlinie angehängt habe.

How it should look

tl; dr: Die Wildcard-Datei gliederte in s3cmd für mich besser.

So cool wie aws-cli ist - für mein Problem mit der S3-Dateimanipulation, das nicht sofort funktionierte, wie ich es mir hoffte und dachte, es könnte ... - endete die Installation und Verwendung von s3cmd.

Unabhängig von der Syntax und der Arbeit hinter den Kulissen, die ich mir konzeptionell vorgestellt hatte, war s3cmd intuitiver und zu meinen Vorurteilen zugemessen.

Vielleicht ist es nicht die Antwort, für die Sie hergekommen sind, aber es hat für mich funktioniert.

0
BradChesney79