Alterações na mudança – A migrar de AWS CLI versão 1 para a versão 2 - AWS Command Line Interface

Se fornecermos uma tradução da versão em inglês do guia, a versão em inglês prevalecerá caso haja qualquer conflito entre as versões. A tradução é fornecida com o uso de tradução por máquina.

Alterações na mudança – A migrar de AWS CLI versão 1 para a versão 2

Este tópico descreve as alterações no comportamento entre AWS CLI versão 1 e AWS CLI versão 2 que pode exigir que faça alterações aos scripts ou comandos para obter o mesmo comportamento na versão 2 como fez na versão 1.

AWS CLI versão 2Agora a usa variável de ambiente para definir codificação de arquivo de texto

Por padrão, os arquivos de texto usam a mesma codificação que a localidade instalada. Para definir a codificação para ficheiros de texto diferentes do locale, utilize o AWS_CLI_FILE_ENCODING variável de ambiente. O exemplo a seguir define a CLI para abrir arquivos de texto usando UTF-8 no Windows.

AWS_CLI_FILE_ENCODING=UTF-8

Para obter mais informações, consulte Variáveis de ambiente para configurar a AWS CLI .

AWS CLI versão 2A agora passa parâmetros binários, como strings codificadas em base64, por padrão.

AWS CLI versão 1A nem sempre facilitou a passagem de parâmetros binários da saída de um comando para a entrada de outro comando sem exigir um processamento intermediário. Alguns comandos necessários base64-cadeias codificadas, outras precisavam de cadeias byte codificadas por UTF8. AWS CLI versão 2 torna os parâmetros binários mais consistentes para permitir uma passagem mais fiável de valores de um comando para outro.

Por padrão, a AWS CLI versão 2 agora passa todos os parâmetros de entrada e saída binária como strings codificadas em base64. Um parâmetro que requer entrada binária tem o tipo especificado como blob (objeto grande binário) na documentação. Para passar dados binários como um arquivo para um parâmetro da CLI, a AWS CLI versão 2 permite especificar o arquivo usando os seguintes prefixos:

  • file:// – a AWS CLI trata o conteúdo do arquivo como texto codificado em base64. Por exemplo, --some-param file://~/my/path/file-with-base64.txt

  • fileb:// – a AWS CLI trata o conteúdo do arquivo como binário não codificado. Por exemplo, --some-param fileb://~/my/path/file-with-raw-binary.bin

Pode dizer ao AWS CLI versão 2 para reverter para o AWS CLI versão 1 ao especificar a seguinte linha no ~/.aws/config ficheiro para um perfil.

cli_binary_format=raw-in-base64-out

Você também pode reverter a configuração de um comando individual, substituindo a configuração de perfil ativa, ao incluir o parâmetro --cli-binary-format raw-in-base64-out na linha de comando.

Se reverter para o AWS CLI versão 1 comportamento e especificar um ficheiro para um parâmetro binário utilizando file:// ou fileb://, o AWS CLI trata o conteúdo do ficheiro como binário bruto não codificado.

AWS CLI versão 2 melhora Amazon S3 manuseamento de propriedades e etiquetas de ficheiros ao realizar cópias multipartes

Quando utiliza o AWS CLI versão 1 versão de comandos no aws s3 nome de um ficheiro para copiar um ficheiro de um Amazon S3 localização do balde para outra Amazon S3 localização do balde e que a operação utiliza cópia multiparte, não são copiadas propriedades de ficheiro do objeto de origem para o objeto de destino.

Por predefinição, o AWS CLI versão 2 comandos no s3 o cabeçalho que realiza cópias multipartes agora transfere todas as tags e o seguinte conjunto de propriedades da origem para a cópia de destino: content-type, content-language, content-encoding, content-disposition, cache-control, expires, e metadata.

Isto pode resultar em AWS Chamadas API para Amazon S3 parâmetro de avaliação que não teria sido feito se usasse AWS CLI versão 1. Estes podem incluir: HeadObject, GetObjectTagging, e PutObjectTagging.

Se precisar de alterar este comportamento predefinido em AWS CLI versão 2 comandos, utilize o --copy-props parâmetro para especificar uma das seguintes opções:

  • predefinido – O valor predefinido. Especifica que a cópia inclui todas as etiquetas anexadas ao objeto fonte e as propriedades englobadas pelo --metadata-directive parâmetro utilizado para cópias não múltiplas: content-type, content-language, content-encoding, content-disposition, cache-control, expires, e metadata.

  • diretiva-de-metadados – Especifica que a cópia inclui apenas as propriedades que são englobadas pelo --metadata-directive parâmetro utilizado para cópias não múltiplas. Não copia nenhuma tag.

  • nenhum – Especifica que a cópia inclui nenhuma das propriedades do objeto de origem.

AWS CLI versão 2 mais tarde recupera automaticamente http:// ou https:// url para parâmetros

O AWS CLI versão 2 já não realiza uma operação GET quando o valor de um parâmetro começa com http:// ou https://, e depois utilize o conteúdo devolvido como o valor do parâmetro. Se você precisar recuperar uma URL e passar o conteúdo lido dessa URL como o valor de um parâmetro, recomendamos que você use curl ou uma ferramenta semelhante para fazer download do conteúdo do URL em um arquivo local. Depois, use a sintaxe file:// para ler o conteúdo desse arquivo e usá-lo como valor do parâmetro.

Por exemplo, o comando a seguir não tenta mais recuperar o conteúdo da página encontrada em http://www.google.com e passar esses conteúdos como o parâmetro. Em vez disso, ele passa a string de texto literal https://google.com como o parâmetro.

$ aws ssm put-parameter --value http://www.google.com --name prod.microservice1.db.secret --type String 2

Se você realmente deseja recuperar e usar o conteúdo de um URL da web como um parâmetro, é possível o seguinte na versão 2.

$ curl https://my.example.com/mypolicyfile.json -o mypolicyfile.json $ aws iam put-role-policy --policy-document file://./mypolicyfile.json --role-name MyRole --policy-name MyReadOnlyPolicy

No exemplo anterior, o -o parâmetro diz curl para guardar o ficheiro na pasta actual com o mesmo nome do ficheiro de origem. O segundo comando recupera o conteúdo desse arquivo obtido por download e passa-o como o valor de --policy-document.

AWS CLI versão 2A usa um programa de paginação para todas as saídas por padrão.

Por padrão, a AWS CLI versão 2 retorna toda a saída pelo programa de paginação padrão do sistema operacional. Por predefinição, este programa é o less programa em Linux e macos, e o more no Windows. Isso facilita a navegação de uma grande quantidade de saída de um serviço, exibindo essa saída uma página de cada vez. No entanto, às vezes, você quer toda a saída sem a necessidade de pressionar uma tecla para obter cada página, como quando executa scripts. Para fazer isso, você pode configurar a AWS CLI versão 2 para usar um programa de paginação diferente, ou não usar nenhum. Para o fazer, configure o AWS_PAGER variável do ambiente ou cli_pager definir no seu ~/.aws/config e especifique o comando que pretende utilizar. Você pode especificar um comando que esteja no caminho de pesquisa ou o caminho completo e o nome do arquivo para qualquer comando disponível no computador.

É possível desativar completamente todo o uso de um programa de paginação externo definindo a variável para uma string vazia, como mostrado nos exemplos a seguir.

Ao definir uma opção no ~/.aws/config ficheiro

O exemplo seguinte mostra a definição do default perfil, mas pode adicionar a definição a qualquer perfil no seu ~/.aws/config ficheiro.

[default] cli_pager=

Ao usar uma variável de ambiente

Linux ou macOS:

$ export AWS_PAGER=""

(Windows)

C:\> setx AWS_PAGER ""

AWS CLI versão 2Agora a retorna todos os valores de saída de time stamp no formato ISO 8601

Por predefinição, AWS CLI versão 2 devolve todos os valores de resposta de amp-time no Formato ISO 8601. Na AWS CLI versão 1, os comandos retornavam valores de time stamp em qualquer formato que era retornado pela resposta da API HTTP, que poderia variar de serviço para serviço.

Os time stamps formatados como ISO 8601 são parecidos com os exemplos a seguir. O primeiro exemplo mostra o tempo em Hora Universal Coordenada (UTC) incluindo um Z depois do tempo. A data e a hora são separadas por T.

2019-10-31T22:21:41Z

Para especificar um fuso horário diferente, em vez de Z, especifique uma + ou - e o número de horas em que o fuso horário pretendido está à frente ou atrás da UTC, como um valor de dois dígitos. O exemplo a seguir mostra o mesmo tempo que o exemplo anterior, mas ajustado para o horário padrão do Pacífico, que está oito horas atrás do UTC:

2019-10-31T14:21:41-08

Para ver os carimbos no formato devolvido pela resposta API HTTP, adicione a linha seguinte ao seu .aws/config perfil.

cli_timestamp_format = wire

AWS CLI versão 2 melhora o manuseamento de AWS CloudFormation implementações que resultam em alterações

Em AWS CLI versão 1, se implementou um AWS CloudFormation modelo que não resultou em alterações, por predefinição, AWS CLI falhou com um código de erro. Isso pode ser um problema se você não considerou isso como um erro e quis que o script continuasse. Pode trabalhar em torno disto AWS CLI versão 1, adicionando o sinalizador -–no-fail-on-empty-changeset que devoluções 0 e não causa um erro no seu script.

Porque este é o cenário de caso comum, o AWS CLI versão 2 agora é predefinido para devolver um código de saída bem sucedido de 0 quando não houver alterações causadas pela implementação e a operação devolve uma mudança vazia.

Na AWS CLI versão 2, para reverter o comportamento original, é necessário adicionar o novo sinalizador --fail-on-empty-changeset.

AWS CLI versão 2 utilizações Amazon S3 teclas de forma mais consistente

Para o Amazon S3 comandos de personalização no s3 namespace, melhorámos a consistência de como os caminhos são mostrados. Na AWS CLI versão 2, os caminhos são sempre exibidos em relação à chave relevante. Às vezes, a AWS CLI versão 1 mostrava caminhos na forma absoluta e, outras vezes, na forma relativa.

AWS CLI versão 2 utiliza o Amazon S3 parâmetro de avaliação regional para us-east-1 Região

Quando configura AWS CLI versão 1 para utilizar o us-east-1 região, o AWS CLI utilizou o s3.amazonaws.com que foi fisicamente alojado no us-east-1 região. AWS CLI versão 2 agora utiliza o verdadeiro endpoint regional s3.us-east-1.amazonaws.com quando essa região é especificada. Para forçar a AWS CLI versão 2 a usar o endpoint global, é possível definir a região para um comando como aws-global.

AWS CLI versão 2 utiliza AWS STS endpoints por predefinição

Por predefinição, AWS CLI versão 2 envia todos AWS STS Pedidos API para o parâmetro de avaliação regional para o momento configurado AWS Região.

Por predefinição, AWS CLI versão 1 envia AWS STS pedidos ao global AWS STS endpoint. Pode controlar este comportamento predefinido na V1 utilizando o sts_endpoints_regionais definição.

AWS CLI versão 2 substitui ecr get-login com ecr get-login-password

O AWS CLI versão 2 substitui o comando aws ecr get-login com o novo aws ecr get-login-password que melhora a integração automatizada com a autenticação de contentores.

O comando aws ecr get-login-password reduz o risco de exposição das suas credenciais na lista de processos, histórico de shell ou outros arquivos de log. Também melhora a compatibilidade com o comando docker login, permitindo uma melhor automação.

O aws ecr get-login-password está disponível no AWS CLI versão 1.17.10 e posterior, e o AWS CLI versão 2. O mais velho aws ecr get-login ainda está disponível no AWS CLI versão 1 para compatibilidade inversa.

O comando aws ecr get-login-password permite que você substitua o seguinte código para recuperar uma senha.

$(aws ecr get-login -no-include-email)

Para reduzir o risco de exposição de senhas no histórico do shell ou logs, use o comando de exemplo a seguir. Neste exemplo, a palavra-passe está directamente presa ao docker login , onde é atribuído ao parâmetro de palavra-passe pelo --password-stdin opção.

aws ecr get-login-password | docker login --username AWS --password-stdin MY-REGISTRY-URL

AWS CLI versão 2O suporte da a plug-ins será alterado

Suporte do plug-in no AWS CLI versão 2 é totalmente provisória e destina-se a ajudar os utilizadores a migrar de AWS CLI versão 1 até uma interface estável, atualizada, de plug-in ser lançada. Não há garantia de que um plug-in ou até mesmo a interface de plug-ins da CLI seja compatível em versões futuras da AWS CLI versão 2. Se você depender de plug-ins, restrinja o seu uso a uma versão específica da CLI e teste a funcionalidade do plug-in após a atualização.

Para habilitar o suporte a plug-ins, crie uma seção [plugins] no ~/.aws/config.

[plugins] cli_legacy_plugin_path = <path-to-plugins>/python3.7/site-packages <plugin-name> = <plugin-module>

No [plugins] , comece por definir o cli_legacy_plugin_path e defina o seu valor para o caminho de pacotes do site Python que o módulo do plug-in vive em. Depois, pode configurar um plug-in fornecendo um nome para o plug-in (plugin-name) e o nome do ficheiro do módulo Python, (plugin-module), que contém o código fonte do seu plug-in. O CLI carrega cada plugin importando o seu plugin-module e ligar para o awscli_initialize função.

AWS CLI versão 2A não oferece mais suporte a aliases "ocultos"

AWS CLI versão 2A não oferece mais suporte aos aliases ocultos a seguir que eram compatíveis na versão 1.

Na tabela a seguir, a primeira coluna exibe o serviço, o comando e o parâmetro que funcionam em todas as versões, incluindo a AWS CLI versão 2. A segunda coluna exibe o alias que não funciona mais na AWS CLI versão 2

Serviço de trabalho, comando e parâmetro Alias obsoleto
cognito-identity create-identity-pool open-id-connect-provider-arns open-id-connect-provider-ar-ns
storagegateway describe-tapes tape-arns tape-ar-ns
storagegateway.describe-tape-archives.tape-arns tape-ar-ns
storagegateway.describe-vtl-devices.vtl-device-arns vtl-device-ar-ns
storagegateway.describe-cached-iscsi-volumes.volume-arns volume-ar-ns
storagegateway.describe-stored-iscsi-volumes.volume-arns volume-ar-ns
route53domains.view-billing.start-time start
deploy.create-deployment-group.ec2-tag-set ec-2-tag-set
deploy.list-application-revisions.s3-bucket s-3-bucket
deploy.list-application-revisions.s3-key-prefix s-3-key-prefix
deploy.update-deployment-group.ec2-tag-set ec-2-tag-set
iam.enable-mfa-device.authentication-code1 authentication-code-1
iam.enable-mfa-device.authentication-code2 authentication-code-2
iam.resync-mfa-device.authentication-code1 authentication-code-1
iam.resync-mfa-device.authentication-code2 authentication-code-2
importexport.get-shipping-label.street1 street-1
importexport.get-shipping-label.street2 street-2
importexport.get-shipping-label.street3 street-3
lambda.publish-version.code-sha256 code-sha-256
lightsail.import-key-pair.public-key-base64 public-key-base-64
opsworks.register-volume.ec2-volume-id ec-2-volume-id