起動されたEC2インスタンスで一時的なAWS認証情報を利用する方法について the / many / resources を読んで、私は極端に取得できないようです単純なPOCの実行。
望ましい:
ステップ:
IAM
ロールを作成しますIAM
ロールを指定して新しいEC2
インスタンスを起動します。 SSH
inaws configure
を使用して資格情報を設定し、(successfully)がhttp://169.254.169.254/latest/meta-data/iam/security-credentials/iam-role-name
に入力した詳細を設定しますAWS CLI
を直接使用してファイルにアクセスしてみてくださいIAM
ロール:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetObject"
],
"Resource": "arn:aws:s3:::bucket-name/file.png"
}
]
}
AWS CLI
を使用してファイルにアクセスすると、次のエラーがスローされます。
A client error (Forbidden) occurred when calling the HeadObject operation: Forbidden
Completed 1 part(s) with ... file(s) remaining
どのステップを逃しましたか?
将来の参考のために、問題は私がAWS CLI
をどのように呼んでいたかにありました。以前私は走っていました:
aws configure
...そして自動生成された役割プロファイルにある詳細を提供します。
自分の一時的な資格情報を見つけることを許可し、他の必要なパラメーターのみを手動で指定した後(リージョン):
aws s3 cp s3://bucket-name/file.png file.png --region us-east-1
...ファイルは正常にプルされました。うまくいけば、これは将来誰かを助けるでしょう!
これがここに上陸する他のGoogle社員に役立つことを願っています。
ザ・
A client error (403) occurred when calling the HeadObject operation: Forbidden
システムクロックが離れすぎている場合にも、エラーが発生する可能性があります。私は過去12時間で、このエラーが発生しました。時計を実際の時刻から1分以内に設定すると、エラーはなくなりました。
Amazon IAMを使用した単一のS3バケットへのアクセスの許可 によると、IAMポリシーを2つのリソースに適用する必要がある場合があります。
さらに別のトリップワイヤー。くそー!
古いバージョンのawscliがあったため、このエラーが発生しました。
壊れた:
$ aws --version aws-cli/1.2.9 Python/3.4.0 Linux/3.13.0-36-generic
作品:
$ aws --version aws-cli/1.5.4 Python/3.4.0 Linux/3.13.0-36-generic
キーがバケットに存在しない場合にも、このエラーが発生します。
キーを再確認します-アイテムをバケットにPOSTしたときに、キーの先頭にスラッシュを追加するスクリプトがありました。したがって、この:
aws s3 cp --region us-east-1 s3://bucketname/path/to/file /tmp/filename
「HeadObject操作の呼び出し時にクライアントエラー(禁止)が発生しました:禁止」で失敗しました。
しかしこれは:
aws s3 cp --region us-east-1 s3://bucketname//path/to/file /tmp/filename
うまくいきました。権限の問題ではなく、骨の折れるキーの作成だけです。
IAMユーザーにポリシーを添付しなかったため、このエラーが発生しました。
tl; dr:ワイルドカードファイルのグロブは、s3cmdでうまく機能しました。
Aws-cliと同じくらいかっこいいですが、S3ファイルの操作に関する1回限りの問題で、期待どおりにすぐには機能しなかったため、s3cmdをインストールして使用することになりました。
私が概念的に想像した構文や舞台裏での作業が何であれ、s3cmdはより直感的で、先入観に焼き付いたものに対応していました。
多分それはあなたがここに来た答えではないかもしれません、しかしそれは私のために働きました。