aws-sdk-php v2 で キーペア無しで EC2 Role を利用してS3アクセスする方法
EC2 上で aws_sdk_ruby を使って
Aws::S3::Client.new
で引数をつけないで S3 クライアントを作成した ruby プログラムは
自動的に EC2 Role の権限によって動くようなのですが
(EC2 に S3Full をつけたりはずしたりすると動いたり動かなかったりする)
Fuel 上の aws-sdk-php を使って同様にキーペアを渡さずにかいたプログラムが
EC2 Role に関係なく AccessDeny になります
use \Aws\S3\S3Client;
$s3 = S3Client::factory(array(
// "key" => Config::get("s3.$key.key"),
// "secret" => Config::get("s3.$key.secret"),
"region" => Config::get("s3.$key.region")
));
$s3->putObject(array(
"Bucket" => $bucket,
"Key" => "$prefix$path",
"Body" => $contents
));
コメントアウトをはずしてキーペアを明示的に渡せば動作します
https://github.com/aws/aws-sdk-php/blob/master/docs/guide/credentials.rst
によると
use Aws\Credentials\CredentialProvider;
use Aws\S3\S3Client;
// Use the default credential provider
$provider = CredentialProvider::defaultProvider();
// Pass the provider to the client.
$client = new S3Client([
'region' => 'us-west-2',
'version' => '2006-03-01',
'credentials' => $provider
]);
という書き方ができるらしいのですが
Class 'Aws\Credentials\CredentialProvider' not found
というエラーになってしまいます
aws-sdk-php 2.8.x-dev が入っているんですがこのバージョンでは使えない書き方なんでしょうか
aws-sdk を使ってる場所が多くてバージョンを変えると問題が出そうなので
このバージョンで EC2Role の権限を使うにはどうしたらいいでしょうか