web-dev-qa-db-ja.com

IAMロールを持つAWSEC2の静的コンテンツ

起動されたEC2インスタンスで一時的なAWS認証情報を利用する方法について the / many / resources を読んで、私は極端に取得できないようです単純なPOCの実行。

望ましい:

  1. EC2インスタンスを起動します
  2. SSHで
  3. プライベートS3バケットから静的コンテンツの一部をプルします

ステップ:

  1. IAMロールを作成します
  2. 上記のIAMロールを指定して新しいEC2インスタンスを起動します。 SSH in
  3. aws configureを使用して資格情報を設定し、(successfully)がhttp://169.254.169.254/latest/meta-data/iam/security-credentials/iam-role-nameに入力した詳細を設定します
  4. 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

どのステップを逃しましたか?

15
jterry

将来の参考のために、問題は私がAWS CLIをどのように呼んでいたかにありました。以前私は走っていました:

aws configure

...そして自動生成された役割プロファイルにある詳細を提供します。

自分の一時的な資格情報を見つけることを許可し、他の必要なパラメーターのみを手動で指定した後(リージョン):

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

...ファイルは正常にプルされました。うまくいけば、これは将来誰かを助けるでしょう!

14
jterry

これがここに上陸する他のGoogle社員に役立つことを願っています。

ザ・

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

システムクロックが離れすぎている場合にも、エラーが発生する可能性があります。私は過去12時間で、このエラーが発生しました。時計を実際の時刻から1分以内に設定すると、エラーはなくなりました。

12
Don Law

Amazon IAMを使用した単一のS3バケットへのアクセスの許可 によると、IAMポリシーを2つのリソースに適用する必要がある場合があります。

  1. 適切なバケット(例: "arn:aws:s3 ::: 4ormat-knowledge-base")
  2. バケット内のすべてのオブジェクト(例: "arn:aws:s3 ::: 4ormat-knowledge-base/*")

さらに別のトリップワイヤー。くそー!

8
David Tonhofer

古いバージョンの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

3
pwaller

キーがバケットに存在しない場合にも、このエラーが発生します。

キーを再確認します-アイテムをバケットに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

うまくいきました。権限の問題ではなく、骨の折れるキーの作成だけです。

2
Chris Snyder

IAMユーザーにポリシーを添付しなかったため、このエラーが発生しました。

How it should look

tl; dr:ワイルドカードファイルのグロブは、s3cmdでうまく機能しました。

Aws-cliと同じくらいかっこいいですが、S3ファイルの操作に関する1回限りの問題で、期待どおりにすぐには機能しなかったため、s3cmdをインストールして使用することになりました。

私が概念的に想像した構文や舞台裏での作業が何であれ、s3cmdはより直感的で、先入観に焼き付いたものに対応していました。

多分それはあなたがここに来た答えではないかもしれません、しかしそれは私のために働きました。

0
BradChesney79