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 の権限を使うにはどうしたらいいでしょうか