Migrieren Sie von Version 1 oder 2 auf Version 3 des AWS SDK for Ruby - AWS SDKfür Ruby

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 jetzt Aws::SWF.

    • AWS::ELB ist jetzt Aws::ElasticLoadBalancing.

    • AWS::SimpleEmailService ist jetzt Aws::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, der http:// 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.