As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Migrar da versão 1 ou 2 para a versão 3 do AWS SDK para Ruby
O objetivo deste tópico é ajudar a migrar da versão 1 ou 2 do AWS SDK para Ruby para a versão 3.
Uso lado a lado
Não é necessário substituir a versão 1 ou 2 do AWS SDK para Ruby pela versão 3. Você pode usá-las em conjunto no mesmo aplicativo. Veja esta postagem de blog
Um exemplo rápido.
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
Não é necessário reescrever o código existente da versão 1 ou 2 em funcionamento para começar a usar o SDK da versão 3. Uma estratégia de migração válida é simplesmente escrever um novo código com base no SDK da versão 3.
Diferenças gerais
A versão 3 difere da versão 2 de uma maneira importante.
-
Cada serviço está disponível como um gem separado.
A versão 2 difere da versão 1 de várias maneiras importantes.
-
Namespace raiz diferente –
Aws
versusAWS
. Isso permite o uso lado a lado. -
Aws.config
— agora é um hash Ruby vanilla, em vez de um método. -
Opções de construtor restritas - Ao construir um objeto de cliente ou recurso no SDK da versão 1, opções de construtor desconhecidas são ignoradas. Na versão 2, as opções de construtor desconhecidas acionam um
ArgumentError
. Por exemplo:# 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
Diferenças de clientes
Não há diferenças entre as classes de cliente na versão 2 e na versão 3.
Entre a versão 1 e a versão 2, as classes de clientes têm o menor número possível de diferenças externas. Muitos clientes de serviços terão interfaces compatíveis após a construção do cliente. Algumas diferenças importantes:
-
Aws::S3::Client
- A classe de cliente do Amazon S3 na versão 1 foi codificada manualmente. A versão 2 é gerada a partir de um modelo de serviço. Os nomes e entradas do método são muito diferentes na versão 2. -
Aws::EC2::Client
- A versão 2 usa nomes plurais para listas de saída, enquanto a versão 1 usa o sufixo_set
. Por exemplo:# 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
– a versão 2 usa respostas estruturadas, enquanto a versão 1 usa hashes Ruby vanilla. -
Renomeações de classes de serviços – a versão 2 usa um nome diferente para vários serviços:
-
AWS::SimpleWorkflow
se tornouAws::SWF
-
AWS::ELB
se tornouAws::ElasticLoadBalancing
-
AWS::SimpleEmailService
se tornouAws::SES
-
-
Opções de configuração de cliente: algumas das opções de configuração da versão 1 foram renomeadas na versão 2. Outras são removidas ou substituídas. Veja a seguir as principais mudanças:
-
:use_ssl
foi removido. A versão 2 usa SSL em todos os locais. Para desabilitar o SSL, você deve configurar um:endpoint
que usehttp://
. -
:ssl_ca_file
é agora:ssl_ca_bundle
-
:ssl_ca_path
é agora:ssl_ca_directory
-
Adição do
:ssl_ca_store
. -
O
:endpoint
agora deve ser um URI HTTP ou HTTPS totalmente qualificado, em vez de um nome de host. -
As opções de
:*_port
foram removidas para cada serviço, agora são substituídas por:endpoint
. -
:user_agent_prefix
é agora:user_agent_suffix
-
Diferenças de recursos
Não há diferenças entre as interfaces de recursos na versão 2 e na versão 3.
Existem diferenças significativas entre as interfaces de recursos na versão 1 e na versão 2. A versão 1 era codificada manualmente na íntegra, enquanto as interfaces de recursos da versão 2 são geradas a partir de um modelo. As interfaces de recursos da versão 2 são significativamente mais consistentes. Algumas das diferenças sistêmicas incluem:
-
Classe de recurso separada: na versão 2, o nome do serviço é um módulo, não uma classe. Neste módulo, ela é a interface de recurso:
# version 1 s3 = AWS::S3.new # version 2 s3 = Aws::S3::Resource.new
-
Referência a recursos – o SDK da versão 2 separa coleções e getters de recursos individuais em dois métodos diferentes:
# version 1 s3.buckets['bucket-name'].objects['key'].delete # version 2 s3.bucket('bucket-name').object('key').delete
-
Operações em lotes: na versão 1, todas as operações em lotes eram utilitários codificados manualmente. Na versão 2, muitas operações em lotes são operações em lotes geradas automaticamente por meio da API. As interfaces de lote de versão 2 são muito diferentes daquelas da versão 1.