Usar o modo de depuração de atualização para atualizar a AWS CLI versão 1 para a AWS CLI versão 2
Recomendamos que os usuários da AWS CLI versão 1 atualizem para a AWS CLI versão 2 para acessar novos recursos e obter desempenho aprimorado. Há alterações no comportamento entre a AWS CLI versão 1 e a AWS CLI versão 2 que podem exigir que você atualize seus scripts ou comandos para obter o mesmo comportamento. O modo de depuração de atualização na AWS CLI versão 1 emite avisos quando você usa recursos que têm comportamento diferente na AWS CLI versão 2. Para evitar problemas inesperados, esse recurso melhora a experiência de atualização ao detectar automaticamente quais comandos da AWS CLI versão 1 precisam ser modificados antes da atualização para a AWS CLI versão 2.
Para obter mais detalhes, consulte Alterações de última hora entre a AWS CLI versão 1 e a AWS CLI versão 2.
Ao atualizar da AWS CLI versão 1 para a versão 2, você pode se deparar com Alterações de última hora entre a AWS CLI versão 1 e a AWS CLI versão 2 que afetam seus scripts e fluxos de trabalho existentes. O modo de depuração de atualização ajuda você a identificar esses problemas antes de concluir a migração.
O modo de depuração de atualização detecta quando você usa recursos que têm alterações que causam incompatibilidade na AWS CLI versão 2. Quando você executa um comando que será interrompido após a atualização, o modo exibe um aviso com etapas específicas para corrigir o problema. Em vista da possibilidade de descobrir automaticamente possíveis problemas em vez de pesquisar manualmente o seu código, você pode economizar tempo.
Como funciona
Se habilitado, o modo de depuração de atualização detecta o uso de recursos que foram atualizados com alterações que causam incompatibilidade na AWS CLI versão 2. Se você usar um comando ou recurso listado em Alterações de última hora entre a AWS CLI versão 1 e a AWS CLI versão 2 após a atualização para a AWS CLI versão 2, será mostrado um aviso na saída. A detecção de alterações que causam incompatibilidade é baseada no comando usado, nos argumentos fornecidos, no ambiente de execução (p. ex., variáveis de ambiente, definições de configuração etc.) e, em alguns casos, no conteúdo ou na configuração de recursos na conta da AWS que está sendo usada.
O exemplo a seguir demonstra como são esses avisos. Este comando demonstra um exemplo de aviso. Todo texto de aviso começa com “AWSCLI V2 UPGRADE WARNING”, seguido pela mensagem de aviso específica. Nesse caso, um aviso é emitido porque o comando depende da AWS CLI para recuperar o conteúdo do URL e usar o conteúdo como o valor de parâmetro --template-body, que foi um recurso removido na AWS CLI versão 2.
O exemplo a seguir mostra como um aviso se apresenta:
$ aws cloudformation create-stack \ --stack-name "stack012345" \ --template-body "https://s3.amazonaws.com/amzn-s3-demo-bucket/template.json" AWS CLI v2 UPGRADE WARNING: For input parameters that have a prefix of http:// or https://, AWS CLI v2 will not automatically request the content of the URL for the parameter, and the `cli_follow_urlparam` option has been removed. See https://docs.aws.amazon.com/cli/latest/userguide/cliv2-migration-changes.html#cliv2-migration-paramfile.
A tabela a seguir mostra todas as alterações que causam incompatibilidade e como evitar enfrentá-las na AWS CLI versão 2. As ações de correção que resolvem os avisos no modo de depuração estão em negrito.
| Alterações que causam incompatibilidade | Na v1, migre para o comportamento da v2 | Na v2, mantenha o comportamento da v1 |
|---|---|---|
| Variável de ambiente adicionada para definir codificação de arquivo de texto | Apague as variáveis de ambiente PYTHONUTF8 e PYTHONIOENCODING. |
Defina a variável de ambiente AWS_CLI_FILE_ENCODING com a codificação especificada na v1. |
| Os parâmetros binários são passados como strings codificadas em base64, por padrão. | Codifique o valor do parâmetro em base64. Se o parâmetro estiver sendo carregado de um arquivo, codifique o conteúdo do arquivo em base64. | Defina a configuração cli_binary_format como raw-in-base64-out. |
| Manuseio aprimorado do Amazon S3 de propriedades e tags de arquivos cópias fracionadas. | N/A. Não é possível migrar para o comportamento da versão 2 na versão 1. | Use o parâmetro --copy-props none. |
| Nenhuma recuperação automática de URLs http:// ou https:// para parâmetros | Use curl (ou ferramentas alternativas) para baixar o conteúdo dos URLs em um arquivo local. Em seguida, carregue o conteúdo do arquivo no parâmetro com file://. Uma alternativa é configurar cli_follow_urlparam como false para especificar o URL bruto como o valor do parâmetro. |
N/A. Impossível manter o comportamento da versão 1 na versão 2. |
| Pager usado para todas as saídas por padrão | N/A. Não é possível migrar para o comportamento da versão 2 na versão 1. | Definir a configuração cli_pager ou a variável AWS_PAGER como uma string vazia. |
| Os valores de saída de carimbo de timestamp são padronizados para o formato ISO 8601 | Defina a configuração cli_timestamp _format como iso8601. |
Defina a configuração cli_timestamp_format como wire. |
| Manuseio aprimorado das implantações do CloudFormation que resulta em nenhuma alteração | Use o parâmetro --no-fail-on-empty-changeset. |
Use o parâmetro --fail-on-empty-changeset. |
| Comportamento padrão alterado para endpoint do Amazon S3 regional para a região us-east-1 | Defina a variável de ambiente AWS_ENDPOINT_URL_S3 ou a opção de linha de comandos --endpoint-url como o URL regional de us-east-1. |
Use a opção de linha de comandos --region aws-global. |
| ecr get-login removido e substituído por ecr get-login-password | (1.17.10 ou posterior) Use ecr get-login removido e substituído por ecr get-login-password e canalize a saída para um comando do Docker. | N/A. Impossível manter o comportamento da versão 1 na versão 2. |
| AWS CLIO suporte da versão 2 a plugins está sendo alterado | N/A. Não é possível migrar para o comportamento da versão 2 na versão 1. | Configure o cli_legacy_plugin_path para a seção [plugins] do arquivo de configuração. Teste os plug-ins na versão 2, bloqueie sua versão 2 e teste seus plug-ins sempre que fizer uma atualização. |
| Suporte a alias oculto removido | Deixe de usar o alias oculto obsoleto e passe a usar um que funcione em todas as versões, como descrito em Suporte a alias oculto removido. | N/A. Impossível manter o comportamento da versão 1 na versão 2. |
| A configuração do arquivo de configuração api_versions não é compatível | Migre para a versão mais recente da API, teste o uso de suas versões mais antigas da API e remova api_versions das suas configurações. | N/A. Impossível manter o comportamento da versão 1 na versão 2. |
| A AWS CLI versão 2 usa apenas o Signature v4 para autenticar solicitações do Amazon S3. | Especifique o Signature Version como versão 4 (consulte Especificar o Signature Version na solicitação de autenticação). | N/A. Impossível manter o comportamento da versão 1 na versão 2. |
| A AWS CLI versão 2 é mais consistente com os parâmetros de paginação | Mova os parâmetros de paginação no parâmetro JSON de entrada para o próprio comando. | Remova os parâmetros de paginação do parâmetro JSON de entrada. |
| A AWS CLI versão 2 fornece códigos de retorno mais consistentes em todos os comandos | N/A. Não é possível migrar para o comportamento da versão 2 na versão 1. | N/A. Impossível manter o comportamento da versão 1 na versão 2. |
Limitações
Recomendamos enfaticamente que os clientes analisem a seção Alterações de última hora entre a AWS CLI versão 1 e a AWS CLI versão 2.
Alterações significativas que não é possível detectar
O recurso do modo de depuração de atualização atende a todas as alterações que causam incompatibilidade, exceto quanto ao que está descrito em A AWS CLI versão 2 fornece códigos de retorno mais consistentes em todos os comandos. Esse modo não consegue responder a como você usa os códigos de erro exibidos pela AWS CLI subsequentemente.
Detecção condicional de alterações que causam incompatibilidade
A detecção descrita em Os valores de saída de carimbo de timestamp são padronizados para o formato ISO 8601 é o único caso em que a detecção depende do estado da conta da AWS e pode estar sujeita a alterações que causam incompatibilidade se os recursos da conta forem atualizados posteriormente. Se nenhum carimbo de data/hora for incluído na resposta da API do serviço, nenhuma detecção será feita para essa alteração que causa incompatibilidade.
Se você usa o formato de carimbo de data/hora exibido pelos comandos da AWS CLI e ainda não configurou a AWS CLI para usar o padrão ISO 8601, tome cuidado redobrado para garantir que o processamento do carimbo de data/hora não seja interrompido após a atualização para a versão 2.
Detecção de alterações que causam incompatibilidade não resolvidas
Alguns avisos emitidos pelo modo de depuração de atualização não podem ser resolvidos modificando o comando ou o ambiente. Os seguintes casos são casos em que os avisos sempre serão emitidos pelo modo de depuração de atualização desde que você use o recurso correspondente:
-
AWS CLIO suporte da versão 2 a plugins está sendo alterado: se você conta com plug-ins em seu arquivo de configuração, o modo de depuração de atualização sempre emitirá um aviso que não pode ser resolvido. Esse modo não pode garantir se algum de seus plug-ins funcionará na AWS CLI versão 2.
-
Manuseio aprimorado do Amazon S3 de propriedades e tags de arquivos cópias fracionadas. : se o
aws s3for usado para executar uma cópia de bucket para bucket do Amazon S3, o modo de depuração de atualização sempre emitirá um aviso que não pode ser resolvido.
Falsas detecções
Os avisos emitidos pelo modo de depuração de atualização não garantem que haverá alterações que causam incompatibilidade após a atualização para a CLI AWS v2. Abaixo são apresentados os casos em que o modo de depuração de atualização emitirá avisos mesmo que não haja nenhuma alteração que causa incompatibilidade na AWS CLI v2:
-
Variável de ambiente adicionada para definir codificação de arquivo de texto: se as variáveis de ambiente
PYTHONIOENCODINGouPYTHONUTF8forem especificadas para definir a codificação do arquivo de texto e a codificação especificada já corresponder à localidade instalada, o aviso poderá ser uma detecção falsa, pois o modo de depuração não verifica se a codificação corresponde à localidade instalada. -
Manuseio aprimorado do Amazon S3 de propriedades e tags de arquivos cópias fracionadas. : se o
aws s3for usado para realizar uma cópia de bucket para bucket do Amazon S3 e a cópia não for de várias partes devido ao objeto de origem estar abaixo do tamanho limite de várias partes, uma falsa detecção será gerada. -
Os valores de saída de carimbo de timestamp são padronizados para o formato ISO 8601: se a configuração cli_timestamp_format estiver definida como wire (padrão) e um carimbo de data/hora no formato ISO 8601 for exibido pelo serviço.
-
Manuseio aprimorado das implantações do CloudFormation que resulta em nenhuma alteração: se o sinalizador
--fail-on-empty-changesetfor usado com o comandoaws cloudformation deploye o conjunto de alterações resultante estiver vazio, uma detecção falsa será gerada. Além disso, se o conjunto de alterações não estiver vazio e--no-fail-on-empty-changesetnão for usado, uma detecção falsa será gerada. -
Comportamento padrão alterado para endpoint do Amazon S3 regional para a região us-east-1: se
aws s3ouaws s3apifor usado para realizar uma operação do Amazon S3, a região estiver configurada comous-east-1, a configuraçãos3.us_east_1_regional_endpointnão estiver definida como regional e o endpoint global do Amazon S3 for usado para a solicitação devido às configurações do endpoint, o aviso poderá ser uma detecção falsa, pois o modo de depuração não verifica as definições de endpoint configuradas.
Configurar o modo de depuração de atualização
Você pode habilitar ou desabilitar o modo de depuração de atualização usando os seguintes métodos, listados em ordem de precedência:
-
As opções de linha de comandos habilitam ou desabilitam o modo de depuração de atualização para um único comando. Use --v2-debug para usar o modo de depuração de atualização.
-
As variáveis de ambiente usam a variável AWS_CLI_UPGRADE_DEBUG_MODE.