2016-04-05 18 views
0

AWS S3がローカルホストと私のライブウェブサイトで動作していますが、開発サーバー(まったく同じ構成です)が次のエラーをスローしています:http://xxx.xx.xxx.xxx/latest/meta-data/iam/security-credentials/resulted in a 404 Not Found`レスポンス:インスタンス・プロファイル・メタデータ・サーバーからの信任状。S3 putObjectが動作していないアクセスが拒否されました

Localhost URL is http://localhost/example 
Live URL is http://www.example.com 
Development URL is http://dev.example.com 

なぜローカルホストで動作しますが、私の開発サーバーでは動作しませんか?ここ

は私のサンプルコードである:ここ

$bucket = 'example' 
$s3Client = new S3Client([ 
       'region'=>'us-west-2', 
       'version'=>'2006-03-01', 
       'key'=>'xxxxxxxxxxxxxxxxxxxxxxxx', 
       'secret'=>'xxxxxxxxxxxxxxxxxxxxxxxx', 
      ]); 
      $uniqueFileName = uniqid().'.txt'; 
      $s3Client->putObject([ 
       'Bucket' => $bucket, 
       'Key' => 'dev/'.$uniqueFileName, 
       'Body' => 'this is the body!' 
      ]); 

はポリシー:

{ 
"Version": "2012-10-17", 
"Id": "Policyxxxxxxxxx", 
"Statement": [ 
    { 
     "Sid": "Stmtxxxxxxxxx", 
     "Effect": "Allow", 
     "Principal": "*", 
     "Action": "s3:GetObject", 
     "Resource": "arn:aws:s3:::example/*" 
    } 
] 
} 
+0

編集したxxx.xx.xxx.xxは169.254.169.254ですか? –

+0

はい、それは正しいです – LargeTuna

+0

EC2メタデータ仮想サーバの標準IPアドレスです。アプリケーションまたはAWSライブラリによってインスタンスロールベースの一時的な資格情報が取得されます。ローカルホスト上で動作する理由は、すべてが同一であれば、謎のように見えます。インスタンスロールを使用していますか? 2台のEC2マシンが同じ役割で構成されていますか? –

答えて

0

インスタンスが最初にあった場合http://169.254.169.254/latest/meta-data/iam/security-credentials/によって返される値は、EC2インスタンスに割り当て役割に関連付けられています開始されました。

回答が404 Not Foundであるため、開発サーバーにはロールが割り当てられていません。 EC2管理コンソールでチェックインできます。インスタンスをクリックし、詳細ペインを見てRole値を探します。

「完全に同一」の新しいサーバーを起動する場合は、[操作]メニューの[起動]コマンドを使用してください。ロールの設定もコピーされます。

関連する問題