LoginSignup
15
18

More than 5 years have passed since last update.

AWS SDK for PHP を ver3 にアップデートするためにやったこと

Last updated at Posted at 2015-09-10

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 については、サービス毎に指定できるものが違うので、ドキュメントで確認して指定します。

AWS_SDK_for_PHP_3_x.png

ドキュメント:

3. 挙動が変わっている所を個別対処

ほぼありませんでしたが、DynamoDBのupdateItem等でパラメータを数値型で渡すとエラーになったので、
文字列型に変換して渡す必要がありました。

- $value = 1;
+ $value = '1';

かなり後方互換性は保たれているようです。

バージョンを上げた結果について

2014年の re:Inventで、v3は早くなっていると聞いたのですが、残念ながらパフォーマンスの変化は見られませんでした。
今回はバージョンを上げただけで、コードはほぼ必要に迫られたところしか変えなかったので、並列化する処理などコードも変えないとパフォーマンスは改善されないのかもしれません。

ただ、v3には新しい機能が追加になっていることと、今後の新しい機能は v3でのみ追加されていくと思うので、折を見てバージョンアップしておくことをおすすめします。

参考:

15
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
18