Login para desenvolvimento local da AWS usando credenciais do console - AWS Command Line Interface

Login para desenvolvimento local da AWS usando credenciais do console

Você pode usar suas credenciais de login existentes do Console de Gerenciamento da AWS para ter acesso programático aos serviços da AWS. Depois de um fluxo de autenticação baseado em navegador, a gera credenciais temporárias que funcionam em ferramentas de desenvolvimento locais, como AWS CLI, ferramentas da AWS para PowerShell e SDKs da AWS. Esse recurso simplifica o processo de configuração e gerenciamento de credenciais da AWS CLI, especialmente se você preferir usar a autenticação interativa a gerenciar chaves de acesso de longo prazo.

Com esse processo, você pode se autenticar usando credenciais raiz criadas durante a configuração inicial da conta, um usuário do IAM ou uma identidade federada do seu provedor de identidades, e a AWS CLI gerencia automaticamente as credenciais temporárias para você. Essa abordagem aprimora a segurança ao eliminar a necessidade de armazenar credenciais de longo prazo localmente.

Ao executar o comando aws login, você pode selecionar entre suas sessões ativas do console ou fazer login por meio do fluxo de autenticação baseado em navegador para que sejam geradas credenciais temporárias automaticamente. A CLI atualizará automaticamente essas credenciais em até 12 horas.

Depois de configurada, sua sessão pode ser usada na AWS CLI e em outros SDKs e ferramentas da AWS.

Pré-requisitos

Faça login na AWS CLI com o comando aws login.

Execute o comando aws login para se autenticar usando suas credenciais existentes do Console de Gerenciamento da AWS. Se você não configurou um perfil anteriormente, receberá uma solicitação para fornecer informações adicionais. Para fazer login ou configurar um perfil, siga as etapas abaixo.

  1. No terminal de sua preferência, execute o comando aws login.

    $ aws login

    Para fazer login usando um perfil nomeado ou criar outro perfil, use a opção --profile.

    $ aws login --profile my-dev-profile
    • Se esse for um novo perfil ou se nenhuma região da AWS tiver sido especificada, a AWS CLI solicitará que você forneça uma região.

      No AWS region has been configured. The AWS region is the geographic location of your AWS resources. If you've used AWS before and already have resources in your account, tell us which region they were created in. If you haven't created resources in your account before, you can pick the region closest to you: https://docs.aws.amazon.com/global-infrastructure/latest/regions/aws-regions.html. You are able to change the region in the CLI at any time with the command `aws configure set region NEW_REGION`. AWS Region [us-east-1]:
    • Se o dispositivo que está usando a AWS CLI não tiver um navegador, você poderá usar a opção --remote para fornecer um URL e abri-lo em um dispositivo habilitado para navegador.

      $ aws login --remote
  2. A AWS CLI tentará abrir seu navegador padrão para o processo de login em sua conta da AWS.

    Attempting to open the login page for `us-east-1` in your default browser. If the browser does not open, use the following URL to complete your login: https://signin.us-east-1.amazonaws.com/authorize?<abbreviated> If you cannot connect to this URL, make sure that you have specified a valid region.
    • Se você tiver usado a opção --remote, as instruções para iniciar manualmente o processo de login serão exibidas com base no tipo de autorização que você está usando. O URL exibido é exclusivo e começa com https://us-east-1.signin.amazonaws.com/authorize.. Depois de concluir o login do navegador, você precisará copiar e colar o código de autorização resultante de volta na CLI.

      Browser will not be automatically opened. Please visit the following URL: https://region.signin.amazonaws.com/authorize?<abbreviated> Please enter the authorization code displayed in the browser:
  3. No navegador, selecione as credenciais a serem usadas na lista exibida e, em seguida, retorne ao seu terminal.

    • Se o perfil que você está configurando tiver uma sessão de login configurada anteriormente que não corresponda à sua nova sessão, a AWS CLI solicitará que você confirme que está trocando a sessão que corresponde ao perfil existente.

      Profile signin is already configured to use session arn:aws:iam::0123456789012:user/ReadOnly. Do you want to overwrite it to use arn:aws:iam::0123456789012:user/Admin instead? (y/n):.
  4. Uma mensagem final descreve a configuração do perfil concluída. Agora você pode usar esse perfil para solicitar credenciais. É necessário usar o comando aws login para solicitar e recuperar as credenciais necessárias para executar comandos.

    O token de autenticação é armazenado em cache no disco, no diretório .aws/login/cache, com um nome de arquivo baseado no perfil resolvido.

Arquivo de configuração gerado

Essas etapas resultam na criação do perfil default no arquivo config com a seguinte aparência:

[default] login_session = arn:aws:iam::0123456789012:user/username region = us-east-1

Executar um comando com seu perfil

Depois de fazer login, você pode usar suas credenciais para invocar comandos da AWS CLI com o perfil associado. O seguinte exemplo chama o comando get-caller-identity usando o perfil default:

$ aws sts get-caller-identity

Para fazer login em uma sessão específica, use a opção --profile.

$ aws sts get-caller-identity --profile my-dev-profile

A AWS CLI e os SDKs atualizarão automaticamente as credenciais armazenadas em cache a cada 15 minutos, conforme necessário. A sessão geral se manterá válida até a duração definida da sessão da entidade principal do IAM (no máximo 12 horas), após a qual você deverá executar novamente o aws login.

Sair da sessão usando o comando aws logout

Quando terminar de usar sua sessão, você poderá deixar suas credenciais expirarem ou executar o comando aws logout para excluir as credenciais armazenadas em cache. Se nenhum perfil for especificado na linha de comandos ou na variável de ambiente AWS_PROFILE, o comando desconectará você do seu perfil padrão. O exemplo a seguir desconecta você do seu perfil padrão.

$ aws logout

Para sair de uma sessão específica, use a opção --profile.

$ aws logout --profile my-dev-profile

Para sair de todos os perfis que usam credenciais de login, use a opção --all.

$ aws logout --all

Credenciais armazenadas em cache

As credenciais temporárias em cache, bem como os metadados necessários para atualizá-las, são armazenados por padrão em ~/.aws/login/cache no Linux e no macOS ou em %USERPROFILE%\.aws\login\cache no Windows.

Para armazenar o cache de credenciais de curto prazo em outro local, defina a variável de ambiente AWS_LOGIN_CACHE_DIRECTORY.

Compartilhar credenciais de login como credenciais de processo

Versões mais antigas dos SDKs da AWS ou de outras ferramentas de desenvolvimento podem ainda não oferecer suporte às credenciais do console. Uma solução alternativa é configurar a AWS CLI para servir como um provedor de credenciais de processo. A CLI continuará atualizando as credenciais conforme necessário, enquanto as compartilha com ferramentas configuradas para usar o perfil credential_process.

Neste exemplo, use primeiro a AWS CLI para fazer login para o perfil de login:

$ aws login --profile signin

Em seguida, configure manualmente um perfil com a opção credential_process, que aponta para o perfil de login. Agora você pode configurar SDKs ou ferramentas para usar o perfil de processo, que invocará a CLI para compartilhar as credenciais do perfil de login.

[profile signin] login_session = arn:aws:iam::0123456789012:user/username region = us-east-1 [profile process] credential_process = aws configure export-credentials --profile signin --format process region = us-east-1

Solução de problemas

Esta página contém recomendações para solucionar problemas de login para desenvolvimento local da AWS usando credenciais do console para a AWS CLI.

nota

Para solucionar outros problemas que você possa encontrar usando a AWS CLI, consulte Solução de problemas da AWS CLI.

Erros ExpiredToken ou AccessDeniedException depois de usar “aws login”

Ao executar um comando da AWS CLI após a execução de aws login para um determinado perfil, você pode encontrar um erro de credenciais expiradas ou inválidas.

$ aws s3 ls An error occurred (ExpiredToken) when calling the ListBuckets operation: The provided token has expired.

Causa possível: você tem uma combinação de credenciais existentes e de novas credenciais de login nesse perfil.

Execute aws configure list ou aws configure list --profile <profile name> para imprimir o lugar em que a CLI está resolvendo as credenciais para o perfil padrão ou fornecido.

Se a coluna TYPE for algo diferente de login, isso significa que ainda há um tipo diferente de credencial definido no perfil de destino.

Neste exemplo, as credenciais estão sendo resolvidas a partir do arquivo de credenciais compartilhado em seu diretório pessoal, que tem precedência sobre as credenciais de login.

$ aws configure list NAME : VALUE : TYPE : LOCATION profile : <not set> : None : None access_key : ****************MPLE : shared-credentials-file : secret_key : ****************EKEY : shared-credentials-file : region : us-east-1 : config-file : ~/.aws/config

Para resolver isso, remova manualmente todas as credenciais existentes do seu arquivo de configuração e as credenciais do perfil de destino. Depois de fazer isso, você deverá ver as credenciais de login ao executar aws configure list novamente.

$ aws configure list NAME : VALUE : TYPE : LOCATION profile : <not set> : None : None access_key : ****************MPLE : login : secret_key : ****************EKEY : login : region : us-east-1 : config-file : ~/.aws/config

Há também a alternativa de usar a opção --debug, que mostrará em que lugar a CLI está resolvendo as credenciais.

Bloqueio de acesso à rede pelo firewall ao executar “aws login”

Durante a execução do aws login, você pode se deparar com um pop-up ou uma mensagem do seu software de firewall que impede que a AWS CLI acesse sua rede.

Possível causa: seu firewall ou software de segurança está impedindo que a AWS CLI abra a porta usada para processar o retorno de chamada do OAuth.

Para evitar esse problema, use, em vez disso, a opção --remote. Isso solicitará que você copie e cole o código de autorização em vez de usar o retorno de chamada do OAuth.

$ aws login --remote

Recursos relacionados

Os recursos adicionais são os seguintes.