1. composer.json の変更
comporser.json の中のversion指定を 2.* から 3.* へ変更して、 comporser update しました。
"require": {
- "aws/aws-sdk-php": "2.*"
+ "aws/aws-sdk-php": "3.*"
},
$ composer.phar update
2. インスタンス生成方法の変更
v2までは、下記のような感じで、factory メソッドでインスタンスを生成していました。
$config = array(
'key' => AWS_KEY,
'secret' => AWS_SECRET,
'region' => AWS_REGION,
);
/** @var $sqs \Aws\Sqs\SqsClient */
$sqs = SqsClient::factory($config);
これを下記のような感じに new でインスタンスを生成するように変更する必要がありました。
$credentials = new \Aws\Credentials\Credentials(AWS_KEY, AWS_SECRET);
$params = array(
'credentials' => $credentials,
'region' => AWS_REGION,
'version' => '2012-11-05',
);
/** @var $sqs \Aws\Sqs\SqsClient */
$sqs = new \Aws\Sqs\SqsClient($params);
また、同時に、version のオプションが必須になりました。
version については、サービス毎に指定できるものが違うので、ドキュメントで確認して指定します。
ドキュメント:
3. 挙動が変わっている所を個別対処
ほぼありませんでしたが、DynamoDBのupdateItem等でパラメータを数値型で渡すとエラーになったので、
文字列型に変換して渡す必要がありました。
- $value = 1;
+ $value = '1';
かなり後方互換性は保たれているようです。
バージョンを上げた結果について
2014年の re:Inventで、v3は早くなっていると聞いたのですが、残念ながらパフォーマンスの変化は見られませんでした。
今回はバージョンを上げただけで、コードはほぼ必要に迫られたところしか変えなかったので、並列化する処理などコードも変えないとパフォーマンスは改善されないのかもしれません。
ただ、v3には新しい機能が追加になっていることと、今後の新しい機能は v3でのみ追加されていくと思うので、折を見てバージョンアップしておくことをおすすめします。
参考: