簡単な質問。しかし、それを働かせることはできません。PHP SDK IAMロールを添付したEC2インスタンスでAWS資格情報を取得できません
CloudWatchへのフルアクセスでEC2のIAMロールを作成しました。 このIAMロールを添付して新しいEC2インスタンスを開始しました。 このEC2インスタンスで、CloudWatchにメトリックを公開しようとする単純なPHPアプリケーションを作成しました。その同じEC2インスタンスから
2017/08/23 11:44:06 [error] 32142#32142: *5 FastCGI sent in stderr:
"PHP message: PHP Fatal error:
Uncaught Aws\Exception\CredentialsException:
Cannot read credentials from /var/www/.aws/credentials
in /var/www/app/vendor/aws/aws-sdk-php/src/Credentials/CredentialProvider.php:394
、コマンド:レスポンスでアクセスキーとシークレットと200 OK
curl http://169.254.169.254/latest/meta-data/iam/security-credentials/<role-attached-to-ec2-instance>
戻り
私はnginxのログで、このエラーを取得しています。
これはCloudWatchのメトリックを書き込もうとする私のPHPコードです:
<?php
require 'vendor/autoload.php';
use Aws\CloudWatch\CloudWatchClient;
use Aws\Exception\AwsException;
$count = $_GET["count"];
publishMetric($count);
function publishMetric($count) {
$client = new CloudWatchClient([
'profile' => 'default',
'region' => 'us-east-1',
'version' => '2010-08-01'
]);
try {
$result = $client->putMetricData(array(
'Namespace' => 'com.mynamespace',
'MetricData' => array(
array(
'MetricName' => 'Count',
//Timestamp : mixed type: string (date format)|int (unix timestamp)|\DateTime
'Timestamp' => time(),
'Value' => $count,
'Unit' => 'Number'
)
)
));
var_dump($result);
echo 'Done publishing metrics';
} catch (AwsException $e) {
// output error message if fails
error_log($e->getMessage());
echo 'Failure to publish metrics';
}
}
?>
このセットアップに欠けているものを任意のアイデア?
編集した質問をご覧ください。私は自分のコードを追加しました。私は明示的に資格情報を提供していない。また、上記のアプローチ#1を使いたいと思いますが、それは自動的には機能しません。 – Bonton255