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:
Schritte:
IAM
-RolleEC2
-Instanz mit der oben angegebenen IAM
-Rolle. SSH
inaws configure
und den Details fest, die ( erfolgreich ) in http://169.254.169.254/latest/meta-data/iam/security-credentials/iam-role-name
angegeben wurden.AWS CLI
direkt für den Zugriff auf die Datei zu verwendenIAM
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?
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!
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.
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:
Noch ein Tripwire. Verdammt!
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
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.
Ich hatte diesen Fehler, weil ich meinem IAM-Benutzer keine Richtlinie angehängt habe.
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.