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 devenuAws::SWF
-
AWS::ELB
est devenuAws::ElasticLoadBalancing
-
AWS::SimpleEmailService
est devenuAws::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 utilisehttp://
. -
: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.