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 o AWS SDK para Ruby versão 1 ou 2 para o AWS SDK para Ruby versão 3
Este tópico incluem detalhes para 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 –
AwsversusAWS. 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::SimpleWorkflowse tornouAws::SWF -
AWS::ELBse tornouAws::ElasticLoadBalancing -
AWS::SimpleEmailServicese 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_sslfoi removido. A versão 2 usa SSL em todos os locais. Para desabilitar o SSL, você deve configurar um:endpointque usehttp://. -
:ssl_ca_fileé agora:ssl_ca_bundle -
:ssl_ca_pathé agora:ssl_ca_directory -
adicionado
:ssl_ca_store. -
:endpointO agora deve ser um URI HTTP ou HTTPS totalmente qualificado, em vez de um nome de host. -
As opções de
:*_portforam 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.