翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
AWS SDK for Ruby バージョン 1 または 2 からバージョン 3 への移行
このトピックの目的は、AWS SDK for Ruby のバージョン 1 または 2 からバージョン 3 に移行できるようにすることです。
サイドバイサイドの使用
AWS SDK for Ruby のバージョン 1 または 2 をバージョン 3 に置き換える必要はありません。同じアプリケーションで併用できます。詳細については、このブログの投稿
以下に簡単な例を示します。
require 'aws-sdk-v1' # version 1 require 'aws-sdk' # version 2 require 'aws-sdk-s3' # version 3 s3 = AWS::S3::Client.new # version 1 s3 = Aws::S3::Client.new # version 2 or 3
バージョン 3 の SDK の使用を開始するために、既存の動作中のバージョン 1 または 2 のコードを書き換える必要はありません。有効な移行戦略は、バージョン 3 SDK に対して新しいコードを書くことです。
一般的な違い
バージョン 3 は 1 つの重要な点でバージョン 2 とは異なります。
-
各サービスは個別の Gem として使用できます。
バージョン 2 はいくつかの重要な点でバージョン 1 とは異なります。
-
ルート名前空間が異なります。
AWS
ではなくAws
を使用します。これにより、サイドバイ大度の使用が可能になります。 -
Aws.config
- メソッドではなくバニラ Ruby ハッシュになりました。 -
厳密なコンストラクタオプション - バージョン 1 SDK でクライアントまたはリソースオブジェクトを構築する場合、不明なコンストラクタは無視されます。バージョン 2 では、不明なコンストラクタオプションは
ArgumentError
をトリガーします。例:# version 1 AWS::S3::Client.new(http_reed_timeout: 10) # oops, typo'd option is ignored # version 2 Aws::S3::Client.new(http_reed_timeout: 10) # => raises ArgumentError
クライアントの違い
バージョン 2 とバージョン 3 のクライアントクラスには違いはありません。
バージョン 1 とバージョン 2 の間で、クライアントクラスにはわずかな外部相違点があります。多くのサービスクライアントでは、クライアントの構築後、インターフェイスに互換性があります。重要な相違の一部は以下のとおりです。
-
Aws::S3::Client
- バージョン 1 の Amazon S3 クライアントのクラスはハンドコードでした。バージョン 2 では、サービスモデルから生成されます。メソッドの名前および入力がバージョン 2 では大きく異なります。 -
Aws::EC2::Client
- バージョン 2 では出力リストに複数の名前を使用します。バージョン 1 ではサフィックス_set
を使用します。例:# version 1 resp = AWS::EC2::Client.new.describe_security_groups resp.security_group_set #=> [...] # version 2 resp = Aws::EC2::Client.new.describe_security_groups resp.security_groups #=> [...]
-
Aws::SWF::Client
- バージョン 2 では構造化レスポンスを使用します。バージョン 1 ではバニラ Ruby ハッシュを使用します。 -
サービスクラスの名前変更 - バージョン 2 では、複数のサービスに異なる名前を使用します。
-
AWS::SimpleWorkflow
はAws::SWF
になりました -
AWS::ELB
はAws::ElasticLoadBalancing
になりました -
AWS::SimpleEmailService
はAws::SES
になりました
-
-
クライアント設定オプション - バージョン 1 の設定オプションの一部がバージョン 2 で名前変更されました。その他の設定オプションは削除されるか置き換えられています。以下にプライマリの変更を挙げます。
-
:use_ssl
は削除されました。バージョン 2 ではどこでも SSL を使用します。SSL を無効にするには、:endpoint
を使用するhttp://
を設定する必要があります。 -
:ssl_ca_file
は:ssl_ca_bundle
になりました -
:ssl_ca_path
は:ssl_ca_directory
になりました -
:ssl_ca_store
が追加されました。 -
:endpoint
は、ホスト名ではなく完全修飾 HTTP または HTTPS URI にすることが必要になりました。 -
各サービスの
:*_port
オプションが削除され、:endpoint
に置き換えられました。 -
:user_agent_prefix
は:user_agent_suffix
になりました
-
リソースの違い
バージョン 2 とバージョン 3 のリソースインターフェイスに違いはありません。
バージョン 1 とバージョン 2 では、リソースインターフェイスに大きな違いがあります。バージョン 1 では完全にハンドコードでしたが、バージョン 2 ではリソースインターフェイスはモデルから生成されます。バージョン 2 リソースインターフェイスの方が、はるかに整合性がとれています。システム上の相違点の例を次に示します。
-
リソースクラスの分離 - バージョン 2 では、サービス名はモジュールであり、クラスではありません。このモジュールがリソースインターフェイスです。
# version 1 s3 = AWS::S3.new # version 2 s3 = Aws::S3::Resource.new
-
リソースの参照 - バージョン 2 SDK では、リソースの集合と個々のリソースのゲッターが 2 つの異なるメソッドに分離されています。
# version 1 s3.buckets['bucket-name'].objects['key'].delete # version 2 s3.bucket('bucket-name').object('key').delete
-
バッチオペレーション - バージョン 1 では、すべてのバッチオペレーションはハンドコードユーティリティでした。バージョン 2 では、多くのバッチオペレーションは API を使用した自動生成バッチオペレーションです。バージョン 2 のバッチインターフェイスは、バージョン 1 と大きく異なります。