本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
將第 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 在幾個重要方面不同。
-
不同的根命名空間-
Aws
與AWS
. 這會啟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 有很大的不同。