

EC2 上で aws_sdk_ruby を使って

Aws::S3::Client.new

で引数をつけないで S3 クライアントを作成した ruby プログラムは  
自動的に EC2 Role の権限によって動くようなのですが  
(EC2 に S3Full をつけたりはずしたりすると動いたり動かなかったりする）

Fuel 上の aws-sdk-php を使って同様にキーペアを渡さずにかいたプログラムが  
EC2 Role に関係なく AccessDeny になります

[code]

    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
                ));
    
[/code]

コメントアウトをはずしてキーペアを明示的に渡せば動作します

<https://github.com/aws/aws-sdk-php/blob/master/docs/guide/credentials.rst>  
によると

[code]

    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
    ]);
    
[/code]

という書き方ができるらしいのですが  
`Class 'Aws\Credentials\CredentialProvider' not found`  
というエラーになってしまいます

aws-sdk-php 2.8.x-dev が入っているんですがこのバージョンでは使えない書き方なんでしょうか  
aws-sdk を使ってる場所が多くてバージョンを変えると問題が出そうなので  
このバージョンで EC2Role の権限を使うにはどうしたらいいでしょうか


CC BY-SA 4.0
2019-08-02T09:54:57.717
57129
2019-08-02T09:54:57.717
question
php aws amazon-s3 amazon-ec2 fuelphp
aws-sdk-php v2 で キーペア無しで EC2 Role を利用してS3アクセスする方法