Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Migrieren Sie von Version 1 oder 2 auf Version 3 des AWS SDK for Ruby
Der Zweck dieses Themas besteht darin, Ihnen bei der Migration von Version 1 oder 2 des AWS SDK for Ruby auf Version 3 zu helfen.
ide-by-sideS-Verwendung
Es ist nicht erforderlich, die Version 1 oder 2 des AWS SDK for Ruby durch Version 3 zu ersetzen. Sie können sie in derselben Anwendung gemeinsam verwenden. Weitere Informationen dazu finden Sie in diesem Blog-Beitrag
Ein kurzes Beispiel.
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
Sie müssen vorhandenen, funktionierenden Code der Version 1 oder 2 nicht umschreiben, um die SDK-Version 3 zu verwenden. Es ist eine gültige Strategie für die Migration, nur neuen Code für die SDK-Version 3 zu schreiben.
Allgemeine Unterschiede
Version 3 unterscheidet sich von Version 2 in einem wesentlichen Aspekt.
-
Jeder Service ist als separates Gem verfügbar.
Version 2 unterscheidet sich von Version 1 in mehreren wichtigen Punkten.
-
Anderer Root-Namespace —
Aws
im VergleichAWS
. Dies ermöglicht die side-by-side Verwendung. -
Aws.config
– Jetzt ein Standard-Ruby-Hash anstelle von einer Methode. -
Strikte Konstruktoroptionen – Beim Erstellen von einem Client- oder Ressourcenobjekt in der SDK-Version 1 werden unbekannte Konstruktoroptionen ignoriert. In Version 2 lösen unbekannte Konstruktoroptionen einen
ArgumentError
aus. Beispiel:# 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
Unterschiede zwischen den Kunden
Es gibt keine Unterschiede zwischen den Clientklassen in Version 2 und Version 3.
Zwischen Version 1 und Version 2 haben die Client-Klassen die wenigsten externen Unterschiede. Viele Service-Clients haben nach der Clientkonstruktion kompatible Schnittstellen. Einige wichtige Unterschiede:
-
Aws::S3::Client
- Die Amazon S3 S3-Clientklasse der Version 1 wurde handcodiert. Version 2 wird aus einem Service-Modell generiert. Die Methodennamen und Eingaben in Version 2 unterscheiden sich deutlich. -
Aws::EC2::Client
– Version 2 verwendet Pluralnamen für Ausgabelisten. Version 1 verwendet das_set
-Suffix. Beispiel:# 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
– Version 2 verwendet strukturierte Antworten, wo Version 1 Standard-Ruby-Hashes nutzt. -
Umbenennungen von Service-Klassen – Version 2 verwendet für mehrere Services einen anderen Namen:
-
AWS::SimpleWorkflow
ist jetztAws::SWF
. -
AWS::ELB
ist jetztAws::ElasticLoadBalancing
. -
AWS::SimpleEmailService
ist jetztAws::SES
.
-
-
Client-Konfigurationsoptionen — Einige der Konfigurationsoptionen von Version 1 wurden in Version 2 umbenannt. Andere werden entfernt oder ersetzt. Hier sind die wichtigsten Änderungen:
-
:use_ssl
wurde entfernt. Version 2 verwendet überall SSL. Zum Deaktivieren von SSL müssen Sie einen:endpoint
konfigurieren, derhttp://
verwendet. -
:ssl_ca_file
ist jetzt:ssl_ca_bundle
-
:ssl_ca_path
ist jetzt:ssl_ca_directory
-
:ssl_ca_store
hinzugefügt. -
:endpoint
muss jetzt ein vollqualifizierter HTTP- oder HTTPS-URI anstelle eines Hostnamens sein. -
:*_port
-Optionen für die einzelnen Services wurden entfernt und jetzt durch:endpoint
ersetzt. -
:user_agent_prefix
ist jetzt:user_agent_suffix
-
Unterschiede in den Ressourcen
Es gibt keine Unterschiede zwischen den Ressourcenschnittstellen in Version 2 und Version 3.
Es gibt signifikante Unterschiede zwischen den Ressourcenschnittstellen in Version 1 und Version 2. Version 1 war vollständig handcodiert. Die Ressourcenschnittstellen in Version 2 werden hingegen aus einem Modell generiert. Die Ressourcenschnittstellen in Version 2 sind wesentlich konsistenter. Einige der systemischen Unterschiede sind:
-
Separate Ressourcenklasse — In Version 2 ist der Dienstname ein Modul, keine Klasse. In diesem Modul ist es die Ressourcenschnittstelle:
# version 1 s3 = AWS::S3.new # version 2 s3 = Aws::S3::Resource.new
-
Verweise auf Ressourcen – Die SDK-Version 2 trennt Sammlungen und einzelne Ressourcen-Getter in zwei verschiedene Methoden:
# version 1 s3.buckets['bucket-name'].objects['key'].delete # version 2 s3.bucket('bucket-name').object('key').delete
-
Batch-Operationen — In Version 1 waren alle Batch-Operationen handcodierte Hilfsprogramme. In Version 2 sind viele Stapeloperationen automatisch generierte Stapelverarbeitungsoperationen über die API. Die Stapelverarbeitungsschnittstellen in Version 2 unterscheiden sich stark von Version 1.