Solução de problemas com o assistente de credenciais e conexões HTTPS com o AWS CodeCommit - AWS CodeCommit

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á.

Solução de problemas com o assistente de credenciais e conexões HTTPS com o AWS CodeCommit

As informações a seguir podem ajudar você a solucionar problemas comuns ao usar o assistente de credenciais incluído com a AWS CLI e o HTTPS para se conectar a repositórios do CodeCommit.

nota

Embora o assistente de credenciais seja um método compatível para se conectar ao CodeCommit usando acesso federado, provedor de identidade ou credenciais temporárias, o método recomendado é instalar e usar o utilitário git-remote-codecommit. Para obter mais informações, consulte Etapas de configuração para conexões HTTPS com o AWS CodeCommit com git-remote-codecommit.

Eu recebo um erro ao executar o comando git config para configurar o assistente de credenciais

Problema: ao tentar executar o comando de cnfiguração git para configurar o assistente de credenciais para se comunicar com um repositório do CodeCommit, você vê um erro informando que há poucos argumentos ou um prompt de uso sugerindo os comandos de configuração e a sintaxe do Git.

Possíveis correções: o motivo mais comum para esse erro é que aspas simples são usadas para o comando em um sistema operacional Windows ou aspas duplas são usadas para o comando em um sistema operacional Linux, macOS ou Unix. A sintaxe correta é a seguinte:

  • Windows: git config --global credential.helper "!aws codecommit credential-helper $@"

  • Linux, macOS ou Unix: git config --global credential.helper '!aws codecommit credential-helper $@'

Recebo um erro de comando não encontrado no Windows ao usar o assistente de credenciais

Problema: depois de atualizar a AWS CLI, as conexões do assistente de credenciais com os repositórios do CodeCommit falham com aws codecommit credential-helper $@ get: aws: command not found.

Causa: o motivo mais comum para esse erro é que a sua versão da CLI da AWS foi atualizada para uma versão que usa Python 3. Há um problema conhecido com o pacote MSI. Para verificar se você tem uma das versões afetadas, abra uma linha de comando e execute o seguinte comando: aws --version

Se a saída da versão do Python começar com 3, você terá uma versão afetada. Por exemplo:

aws-cli/1.16.62 Python/3.6.2 Darwin/16.7.0 botocore/1.12.52

Correções possíveis: Para contornar este problema, siga uma das seguintes opções:

  • Instale e configure a AWS CLI no Windows usando Python e pip em vez de MSI. Para obter mais informações, consulte Instalar Python, pip e a AWS CLI no Windows.

  • Edite manualmente o arquivo .gitconfig para alterar a seção [credential] para apontar explicitamente para aws.cmd em seu computador local. Por exemplo:

    [credential] helper = !"\C:\\Program Files\\Amazon\\AWSCLI\\bin\\aws.cmd\" codecommit credential-helper $@ UseHttpPath = true
  • Execute o comando git config para atualizar o arquivo .gitconfig para fazer referência explicitamente a aws.cmd e atualize manualmente sua variável de ambiente PATH para incluir o caminho do comando, conforme necessário. Por exemplo:

    git config --global credential.helper "!aws.cmd codecommit credential-helper $@" git config --global credential.UseHttpPath true

Um nome de usuário é solicitado quando me conecto a um repositório do CodeCommit

Problema: quando você tenta usar o assistente de credenciais para se comunicar com um repositório do CodeCommit, é exibida uma mensagem solicitando seu nome de usuário.

Possíveis correções: configure seu perfil da AWS ou certifique-se de que o perfil que você está usando é o que foi configurado para trabalhar com o CodeCommit. Para obter mais informações sobre a configuração, consulte Etapas de configuração para conexões HTTPS a repositórios do AWS CodeCommit no Linux, macOS ou Unix com o assistente de credenciais da AWS CLI ou Etapas de configuração para conexões HTTPS a repositórios do AWS CodeCommit no Windows com o assistente de credenciais da AWS CLI.. Para obter mais informações sobre o IAM, chaves de acesso e chaves secretas, consulte Gerenciamento de chaves de acesso para usuários do IAM e Como consigo credenciais?

Git para macOS: eu configurei o assistente de credenciais com êxito, mas agora o acesso ao meu repositório é negado (403)

Problema: no macOS, o assistente de credenciais parece não acessar ou usar suas credenciais como esperado. Isso pode ser causado por dois problemas diferentes:

  • A AWS CLI está configurada para uma Região da AWS diferente daquela em que está o repositório.

  • O utilitário Keychain Access salvou credenciais já expiradas.

Correções possíveis: para verificar se a AWS CLI está configurada para a região correta, execute o comando aws configure e analise as informações exibidas. Se o repositório do CodeCommit estiver em uma Região da AWS diferente da mostrada para a AWS CLI, você deverá executar o comando aws configure e alterar os valores para aqueles apropriados para essa região. Para obter mais informações, consulte Etapa 1: configuração inicial do CodeCommit.

A versão padrão do Git lançada para OS X e macOS usa o utilitário Acesso às Chaves para salvar as credenciais geradas. Por motivos de segurança, a senha gerada para o acesso ao seu repositório do CodeCommit é temporária, assim as credenciais armazenadas no conjunto de chaves param de funcionar após cerca de 15 minutos. Se você estiver apenas acessando o Git com CodeCommit, experimente o seguinte:

  1. No terminal, execute o comando git config para localizar o arquivo de configuração do Git (gitconfig) em que o utilitário Keychain Access está definido. Dependendo do seu sistema local e de suas preferências, você pode ter mais de um arquivo gitconfig.

    git config -l --show-origin | grep credential

    Na saída desse comando, procure resultados semelhantes a:

    file:/path/to/gitconfig credential.helper=osxkeychain

    O arquivo listado no início dessa linha é o arquivo de configuração do Git que você deve editar.

  2. Para editar o arquivo de configuração do Git, use um editor de texto simples e execute o seguinte comando:

    nano /usr/local/git/etc/gitconfig
  3. Modifique a configuração usando uma das seguintes estratégias:

    • Comente ou exclua a seção de credenciais que contém helper = osxkeychain. Por exemplo:

      # helper = osxkeychain
    • Atualize as seções assistente de credenciais aws credential helper e osxkeychain para ter contexto. Por exemplo, se osxkeychain for usado para se autenticar no GitHub:

      [credential "https://git-codecommit.us-east-1.amazonaws\.com"] helper = !aws --profile CodeCommitProfile codecommit credential-helper $@ UseHttpPath = true [credential "https://github.com"] helper = osxkeychain

      Nessa configuração, o Git usará o assistente osxkeychain quando o host remoto corresponder a "https://github.com" e ao assistente de credenciais quando o host remoto corresponder a "https://git-codecommit\.us-east-1\.amazonaws.com”.

    • Inclua um assistente de string vazio antes do assistente de credenciais. Por exemplo:

      [credential] helper = helper = !aws --profile CodeCommitProfile codecommit credential-helper $@ UseHttpPath = true

    Como alternativa, se você deseja continuar a usar o utilitário Keychain Access para armazenar em cache as credenciais para outros repositórios Git, modifique o cabeçalho em vez de comentar a linha. Por exemplo, para permitir credenciais em cache para o GitHub, você pode modificar o cabeçalho da seguinte maneira:

    [credential "https://github.com"] helper = osxkeychain

Se você estiver acessando outros repositórios com o Git, você pode configurar o utilitário Acesso às Chaves para que ele não forneça credenciais para os repositórios do CodeCommit. Como configurar o utilitário Acesso às Chaves:

  1. Abra o utilitário Acesso às Chaves. (Você pode usar o Finder para localizá-lo.)

  2. Procure git-codecommit.us-east-2.amazonaws.com e substitua us-east-2 pela Região da AWS onde se encontra o repositório. Destaque a linha, abra o menu de contexto (clique com o botão direito do mouse) e escolha Obter Informações.

  3. Escolha a guia Controle de Acesso.

  4. Em Confirmar antes de permitir o acesso, escolha git-credential-osxkeychain e, em seguida, selecione o sinal de menos para removê-la da lista.

    nota

    Após remover git-credential-osxkeychain da lista, você verá uma caixa de diálogo sempre que executar um comando do Git. Escolha Negar para continuar. Se você achar os pop-ups um incômodo, aqui estão algumas alternativas:

Se quiser que o Git pare de usar o utilitário Keychain Access totalmente, você poderá configurar o Git para parar de usar osxkeychain como o assistente de credenciais. Por exemplo, se você abrir um terminal e executar o comando git config --system credential.helper e ele retornar osxkeychain, o Git estará configurado para usar o utilitário Keychain Access. Você poderá alterar isso executando o seguinte comando:

git config --system --unset credential.helper

Lembre-se de que executar esse comando com a opção --system altera o comportamento do Git em todo o sistema para todos os usuários. Isso pode ter consequências indesejadas para outros usuários ou para outros repositórios se você estiver usando outros serviços de repositório, além do CodeCommit. Lembre-se também de que essa abordagem pode exigir o uso de sudo e que sua conta pode não ter permissões suficientes do sistema para aplicar essa alteração. Verifique se o comando foi aplicado com êxito executando o comando git config --system credential.helper novamente. Para obter mais informações, consulte Personalização do Git – Configuração do Git e este artigo no Stack Overflow.

Git para Windows: eu instalei o Git para Windows, mas o acesso ao meu repositório é negado (403)

Problema: no Windows, o assistente de credenciais parece não acessar ou usar suas credenciais como esperado. Isso pode ser causado por diferentes problemas:

  • A AWS CLI está configurada para uma Região da AWS diferente daquela em que está o repositório.

  • Por padrão, o Git para Windows instala o utilitário Git Credential Manager, que não é compatível com conexões do CodeCommit que usam o assistente de credenciais da AWS. Quando instalado, ele faz com que as conexões com o repositório falhem, mesmo que o assistente de credenciais tenha sido instalado usando a AWS CLI e configurado para conexões com o CodeCommit.

  • Algumas versões do Git para Windows podem não ser totalmente compatíveis com a RFC 2617 e a RFC 4559, o que pode causar problemas com as credenciais do Git e o assistente de credenciais incluído com a AWS CLI. Para obter mais informações, consulte Version 2.11.0(3) does not ask for username/password.

Correções possíveis:

  • se você está tentando usar o assistente de credenciais incluído com o AWS CLI, considere se conectar com as credenciais do Git por HTTPS em vez de usar o assistente de credenciais. As credenciais do Git configuradas para seu usuário do IAM são compatíveis com o Git Credential Manager para Windows, diferente do assistente de credenciais do AWS CodeCommit. Para obter mais informações, consulte Para usuários de HTTPS usando credenciais do Git.

    Para usar o assistente de credenciais para verificar se a AWS CLI está configurada para a Região da AWS correta, execute o comando aws configure e revise as informações exibidas. Se o repositório do CodeCommit estiver em uma Região da AWS diferente da mostrada para a AWS CLI, você deverá executar o comando aws configure e alterar os valores para aqueles apropriados para essa região. Para obter mais informações, consulte Etapa 1: configuração inicial do CodeCommit.

  • Se possível, desinstale e reinstale o Git para Windows. Ao instalar o Git para Windows, desmarque a caixa de seleção com a opção de instalar o utilitário Git Credential Manager. Esse gerenciador de credenciais não é compatível com o assistente de credenciais do AWS CodeCommit. Se você instalou o Git Credential Manager ou outro utilitário de gerenciamento de credenciais e não quer desinstalá-lo, pode modificar o arquivo .gitconfig e adicionar gerenciamentos de credenciais para o CodeCommit:

    1. Abra o Painel de Controle, escolha Gerenciador de credenciais e remova todas as credenciais armazenadas para o CodeCommit.

    2. Abra o arquivo .gitconfig em um editor de texto simples, como o Bloco de Notas.

      nota

      Se você trabalha com vários perfis do Git, talvez tenha arquivos .gitconfig locais e globais. Certifique-se de editar o arquivo apropriado.

    3. Adicione a seguinte seção ao arquivo .gitconfig:

      [credential "https://git-codecommit.*.amazonaws.com"] helper = !aws codecommit credential-helper $@ UseHttpPath = true
    4. Salve o arquivo e abra uma nova sessão de linha de comando antes de tentar se conectar novamente.

    Você também pode usar essa abordagem se desejar usar o assistente de credenciais do AWS CodeCommit para se conectar aos repositórios do CodeCommit e a outro sistema de gerenciamento de credenciais ao se conectar a outros repositórios hospedados, como os repositórios do GitHub.

    Para restaurar o assistente de credenciais usado como padrão, você pode usar a opção --system em vez de --global ou --local ao executar o comando git config.

  • Se você está usando credenciais do Git em um computador Windows, pode tentar solucionar quaisquer problemas de não conformidade do RFC incluindo seu nome de usuário das credenciais do Git como parte da cadeia de conexão. Por exemplo, para solucionar o problema e clonar um repositório chamado MyDemoRepo na região Leste dos EUA (Ohio):

    git clone https://Your-Git-Credential-Username@git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo my-demo-repo
    nota

    Essa abordagem não funcionará se você tiver um caractere @ no seu nome de usuário das credenciais do Git. Você deve primeiro codificar o caractere em URL (processo também conhecido como codificação percentual).