Migrer de la version 1 ou 2 vers la version 3 du AWS SDK for Ruby - AWS SDKpour Ruby

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Migrer de la version 1 ou 2 vers la version 3 du AWS SDK for Ruby

L'objectif de cette rubrique est de vous aider à migrer de la version 1 ou 2 du AWS SDK for Ruby vers la version 3.

ide-by-sideUtilisation du S

Il n'est pas nécessaire de remplacer la version 1 ou 2 du AWS SDK for Ruby par la version 3. Vous pouvez les utiliser ensemble dans la même application. Pour en savoir plus, lisez ce billet de blog.

En voici un bref exemple.

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

Vous n'avez pas besoin de réécrire le code de la version 1 ou 2 de travail pour pouvoir utiliser la version 3 du kit SDK. L'une des stratégies de migration possibles consiste à commencer à utiliser la version 3 du kit SDK pour toute écriture de code nouveau.

Différences générales

La version 3 présente une différence importante par rapport à la version 2.

  • Chaque service est disponible sous la forme d'une gem distincte.

La version 2 présente plusieurs différences importantes par rapport à la version 1.

  • Espace de nommage racine différent, Aws par rapport àAWS. Cela permet side-by-side l'utilisation.

  • Aws.config – Désormais, un code de hachage Vanilla Ruby au lieu d'une méthode.

  • Options de constructeur : lors du développement d'un objet client ou d'un objet de ressource dans la version 1 du kit SDK, les options de constructeur inconnues sont ignorées. Dans la version 2, les options de constructeur inconnues déclenchent une erreur ArgumentError. Par exemple :

    # 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

Différences entre les clients

Il n'existe aucune différence entre les classes client de la version 2 et de la version 3.

Entre la version 1 et la version 2, les classes de client ont le moins de différences externes. De nombreux clients de service disposent d'interfaces compatibles après la construction. Voici quelques différences importantes :

  • Aws::S3::Client- La classe client Amazon S3 version 1 a été codée à la main. La version 2 est générée à partir d'un modèle de service. Les noms de méthode et les entrées sont très différents dans la version 2.

  • Aws::EC2::Client - La version 2 utilise des noms au pluriel pour les listes de sortie alors que la version 1 a recours au suffixe _set. Par exemple :

    # 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– La version 2 utilise des réponses structurées alors que la version 1 utilise des hachages Vanilla Ruby.

  • Changement de nom des classes de service – La version 2 utilise un nom différent pour plusieurs services :

    • AWS::SimpleWorkflow est devenu Aws::SWF

    • AWS::ELB est devenu Aws::ElasticLoadBalancing

    • AWS::SimpleEmailService est devenu Aws::SES

  • Options de configuration du client : certaines options de configuration de la version 1 sont renommées dans la version 2. D'autres sont supprimées ou remplacées. Voici les principales modifications :

    • :use_ssl a été supprimé. La version 2 utilise le protocole SSL partout. Pour désactiver le SSL, vous devez configurer un :endpoint qui utilise http://.

    • :ssl_ca_file est maintenant :ssl_ca_bundle

    • :ssl_ca_path est maintenant :ssl_ca_directory

    • Ajouté :ssl_ca_store.

    • :endpoint doit désormais être un URI HTTP ou HTTPS complet au lieu d'un nom d'hôte.

    • Les options :*_port ont été supprimées pour chaque service et remplacées par :endpoint.

    • :user_agent_prefix est maintenant :user_agent_suffix

Différences de ressources

Il n'existe aucune différence entre les interfaces de ressources de la version 2 et de la version 3.

Il existe des différences importantes entre les interfaces de ressources de la version 1 et de la version 2. La version 1 était entièrement codée manuellement alors que les interfaces de ressources de la version 2 sont générées à partir d'un modèle. Les interfaces de ressources de la version 2 sont nettement plus homogènes. Voici les principales différences systémiques :

  • Classe de ressources distincte : dans la version 2, le nom du service est un module et non une classe. Dans ce module, il s'agit de l'interface des ressources :

    # version 1 s3 = AWS::S3.new # version 2 s3 = Aws::S3::Resource.new
  • Référencement des ressources – La version 2 du kit SDK sépare les collections et les méthodes getter de ressources individuelles en deux méthodes différentes :

    # version 1 s3.buckets['bucket-name'].objects['key'].delete # version 2 s3.bucket('bucket-name').object('key').delete
  • Opérations Batch — Dans la version 1, toutes les opérations par lots étaient des utilitaires codés manuellement. Dans la version 2, de nombreuses opérations par lots sont générées automatiquement via l'API. Les interfaces d'opérations par lot de la version 2 diffèrent considérablement de la version 1.