將第 1 版或第 2 版遷移到 AWS SDK for Ruby 3 版 - Ruby 的AWS SDK

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

將第 1 版或第 2 版遷移到 AWS SDK for Ruby 3 版

本主題的目的在於協助您從適用 AWS SDK for Ruby 版本 1 或第 2 版遷移至第 3 版。

S ide-by-side 用法

您不需要將 Ruby 的 AWS SDK 版本 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

您無需重寫現有的工作版本 1 或 2 代碼即可開始使用第 3 版 SDK。有效的遷移策略是僅針對版本 3 SDK 編寫新代碼。

一般差異

版本 3 與版本 2 在一個重要的方式不同。

  • 每個服務都可以作為單獨的寶石提供。

版本 2 與版本 1 在幾個重要方面不同。

  • 不同的根命名空間-AwsAWS. 這會啟side-by-side用使用。

  • 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 使用香草紅寶石哈希值。

  • 服務類別重新命名 — 第 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 將集合和個別資源獲取者分為兩種不同的方法:

    # version 1 s3.buckets['bucket-name'].objects['key'].delete # version 2 s3.bucket('bucket-name').object('key').delete
  • Batch 作業 — 在版本 1 中,所有批次作業都是手工編碼的公用程式。在版本 2 中,許多批次作業都是透過 API 自動產生的批次處理作業。第 2 版批次處理介面與版本 1 有很大的不同。