AWS SDK for Ruby バージョン 1 または 2 からバージョン 3 への移行 - AWS SDK Ruby の場合

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

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::SimpleWorkflowAws::SWF になりました

    • AWS::ELBAws::ElasticLoadBalancing になりました

    • AWS::SimpleEmailServiceAws::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 と大きく異なります。