本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
從適用於 Ruby 的 AWS SDK 第 1 版或第 2 版遷移至適用於 Ruby 的 AWS SDK 第 3 版
本主題包含可協助您從適用於 Ruby 的 AWS SDK 第 1 版或第 2 版遷移到第 3 版的詳細資訊。
Side-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 開發套件。有效的遷移策略是僅針對第 3 版 SDK 撰寫新程式碼。
一般差異
第 3 版與第 2 版的一個重要方式不同。
-
每個服務都以個別 Gem 套件的形式提供。
第 2 版與第 1 版有幾個重要的不同。
-
不同的根命名空間 –
Aws相較於AWS。這會啟用side-by-side用量。 -
Aws.config– 現在是香草 Ruby 雜湊,而不是方法。 -
嚴格建構函數選項 - 在版本 1 開發套件中建構用戶端或資源物件時,會忽略未知建構函數選項。在第 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 版使用 Vanilla 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 將集合和個別資源取得器分成兩種不同的方法:
# version 1 s3.buckets['bucket-name'].objects['key'].delete # version 2 s3.bucket('bucket-name').object('key').delete -
批次操作 – 在第 1 版中,所有批次操作都是手動編碼的公用程式。在第 2 版中,許多批次操作會透過 API 自動產生批次操作。第 2 版批次處理介面與第 1 版非常不同。