14

AWS 認証情報に問題があります。~/.aws/credentials に作成した資格情報ファイルは、AWS ドキュメントに書かれているとおりに使用しました。ただし、Apacheはそれを読み取ることができません。

まず、次のエラーが発生しました。

インスタンス プロファイル メタデータ サーバーから認証情報を取得中にエラーが発生しました。Amazon EC2 内で実行していない場合は、クライアントを作成するときに「key」および「secret」オプションで AWS アクセス キー ID とシークレット アクセス キーを指定するか、インスタンス化された Aws\Common\Credentials CredentialsInterface オブジェクトを指定する必要があります。

次に、インターネットで見つけたいくつかの解決策を試しました。たとえば、HOME 変数を確認しようとしました。/home/ubuntu でした。Web サーバー ディレクトリでなくても、資格情報ファイルを /var/www ディレクトリに移動しようとしました。何も機能しませんでした。私はまだ同じエラーが発生していました。

2 番目の解決策として、CredentialsProvider を直接呼び出して、クライアントのディレクトリを示すことができることがわかりました。

https://forums.aws.amazon.com/thread.jspa?messageID=583216

エラーは変更されましたが、機能させることができませんでした:

/.aws/credentials から資格情報を読み取ることができません

また、パスを示す代わりに、CredentialsProvider の既定のプロバイダーを使用できることもわかりました。

http://docs.aws.amazon.com/aws-sdk-php/v3/guide/guide/credentials.html#using-credentials-from-environment-variables

私は試してみましたが、同じエラーが発生し続けます:

/.aws/credentials から資格情報を読み取ることができません

この情報が必要な場合に備えて、私は aws/aws-sdk-php (3.2.5) を使用しています。私が使用しようとしているサービスは、AWS Elastic Transcoder です。私の EC2 インスタンスは Ubuntu 14.04 です。Capifony を使用してデプロイされた Symfony アプリケーションを実行します。

この本番サーバーで試す前に、~/.aws/credentials ファイルのみで完全に機能する開発サーバーで試してみました。この開発サーバーは、実稼働サーバーの正確なコピーです。ただし、デプロイには Capifony を使用しません。これは、プロジェクトの通常の git クローンです。また、本番サーバーには OS 用とアプリケーション用に 1 つずつあるのに対し、EBS ボリュームは 1 つしかありません。

ああ!また、資格情報ファイルのアクセス許可/所有者が両方のサーバーで同じであり、それらが同じであるかどうかも確認しました。私は 777 を試してみて、何かを変えられるかどうかを確認しました。

誰かアイデアがありますか?

4

4 に答える 4

3

これが誰かを助けることができるなら、私は次のようにして.iniファイルを機能させることができました:

    $profile = 'default';
    $path = '/mnt/app/www/.aws/credentials/default.ini';
    $provider = CredentialProvider::ini($profile, $path);
    $provider = CredentialProvider::memoize($provider);
    $client = ElasticTranscoderClient::factory(array(
        'region'  => 'eu-west-1',
        'version' => '2012-09-25',
        'credentials' => $provider
    ));

CredentialProvider については、このドキュメントで説明されています。

http://docs.aws.amazon.com/aws-sdk-php/v3/guide/guide/credentials.html#ini-provider

あるサーバーではアプリケーションがホーム ディレクトリ (~/.aws/credentials/default.ini) のファイルを読み取れないのに、別のサーバーでは読み取れない理由はまだわかりません。

誰かがそれについて何か知っているなら、私に知らせてください。

于 2015-08-10T10:41:07.900 に答える
1

SDK はにあるファイル~/.aws/credentialsから読み取りますが、ファイルを に保存しているようです~/.aws/credentials/default.ini。ファイルを移動すると、発生していたエラーは解消されます。

于 2016-01-24T07:02:42.707 に答える