認証情報ヘルパーと HTTPSへの接続のトラブルシューティング AWS CodeCommit - AWS CodeCommit

AWS CodeCommit は、新しいお客様では利用できなくなりました。 AWS CodeCommit の既存のお客様は、通常どおりサービスを引き続き使用できます。詳細はこちら

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

認証情報ヘルパーと HTTPSへの接続のトラブルシューティング AWS CodeCommit

以下の情報は、 AWS CLI および に含まれている認証情報ヘルパーを使用して CodeCommit リポジトリHTTPSに接続する際の一般的な問題のトラブルシューティングに役立ちます。

注記

認証情報ヘルパーは、フェデレーティッドアクセス、ID プロバイダー、または一時的な認証情報 CodeCommit を使用して に接続するためのサポートされている方法ですが、 git-remote-codecommitユーティリティをインストールして使用することが推奨されます。詳細については、「git-remote-codecommit を使用して AWS CodeCommit への HTTPS 接続をセットアップする手順」を参照してください。

git config コマンドを実行して認証情報ヘルパーを設定しようとするとエラーが発生する

問題: git config コマンドを実行して認証情報ヘルパーが CodeCommit リポジトリと通信するように設定しようとすると、引数が多すぎるというエラー、または Git config コマンドと構文を示す使用プロンプトが表示されます。

解決方法: このエラーの最も一般的な原因は、Windows オペレーティングシステムでコマンドに一重引用符が使用されている、もしくは Linux、macOS、UNIX オペレーティングシステムでコマンドに二重引用符が使用されていることです。正しい構文は次のとおりです。

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

  • Linux、macOS、または Unix: git config --global credential.helper '!aws codecommit credential-helper $@'

リポジトリのクローンを作成しようとすると、ユーザー名の読み取りエラーが表示される

問題: 認証情報ヘルパーを使用してリポジトリのクローンを作成しようとすると、システムがリポジトリ のユーザー名を読み取れなかったことを示すエラーが表示されますURL。

解決方法: このエラーの最も一般的な理由は、.gitconfig ファイルがコンピュータで正しく作成または設定されていないことです。.gitconfig ファイルを開き、認証情報ヘルパーが正しく設定されていることを確認します。Linux、macOS、または Unix を実行しているコンピュータを使用している場合$HOME は、 の値がシステムに対して正しく設定されていることを確認してください。

認証情報ヘルパーを使用すると Windows でコマンドが見つかりませんというエラーが表示される

問題: を更新した後 AWS CLI、 CodeCommit リポジトリへの認証情報ヘルパー接続が で失敗しますaws codecommit credential-helper $@ get: aws: command not found

原因 : このエラーの最も一般的な理由は、バージョン AWS CLIが Python 3 を使用するバージョンに更新されたことです。MSI パッケージには既知の問題があります。該当するバージョンのいずれかを持っているかどうかを確認するには、コマンドラインを開き、次のコマンドを実行します: aws --version

出力された Python のバージョンが 3 で始まる場合は、該当するバージョンがあります。例:

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

解決方法: この問題を回避するには、次のいずれかを実行します。

  • の代わりに Python と pip を使用して Windows AWS CLI に をインストールして設定しますMSI。詳細については、「Windows での Python、pip、および のインストール AWS CLI」を参照してください。

  • 手動で .gitconfig ファイルを編集して、ローカルコンピュータの [credential] セクションを明示的に aws.cmd を指すように変更します。例:

    [credential] helper = !"\C:\\Program Files\\Amazon\\AWSCLI\\bin\\aws.cmd\" codecommit credential-helper $@ UseHttpPath = true
  • git config コマンドを実行して、 を明示的に参照するように.gitconfigファイルを更新しaws.cmd、必要に応じてPATH環境変数を手動で更新してコマンドへのパスを含めます。例:

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

CodeCommit リポジトリに接続するときにユーザー名の入力を求められます。

問題: 認証情報ヘルパーを使用して CodeCommit リポジトリと通信しようとすると、ユーザー名の入力を求めるメッセージが表示されます。

解決方法: AWS プロファイルを設定するか、使用しているプロファイルが の操作用に設定したプロファイルであることを確認します CodeCommit。セットアップの詳細については、「AWS CLI 認証情報ヘルパーを使用した、Linux、macOS、または UNIX での AWS CodeCommit リポジトリへの HTTPS 接続のセットアップ手順 または AWS CodeCommit 認証情報ヘルパーを使用して Windows で AWS CLI リポジトリへの HTTPS 接続をセットアップする手順」を参照してください。IAM、アクセスキー、シークレットキーの詳細については、IAM「 ユーザーのアクセスキーの管理」および「認証情報の取得方法」を参照してください。

Git for macOS: 認証情報ヘルパーは正常に設定できましたが、リポジトリへのアクセスが拒否されます (403)

問題: macOS で、認証情報ヘルパーによって認証情報が正常にアクセスまたは使用されていないように見える。原因として 2 つの問題が考えられます。

  • AWS CLI は、リポジトリが存在する AWS リージョン とは異なる に対して設定されます。

  • Keychain Access ユーティリティで保存されている認証情報の有効期限が切れています。

解決方法: が正しいリージョン AWS CLI に設定されているかどうかを確認するには、 aws configure コマンドを実行し、表示される情報を確認します。リポジトリが CodeCommitに表示されているものと AWS リージョン は別の にある場合は AWS CLI、 aws configure コマンドを実行し、そのリージョンに適した値に変更する必要があります。詳細については、「ステップ 1: CodeCommit の初期設定」を参照してください。

OS X および macOS でリリースされているデフォルトバージョンの Git では、Keychain Access ユーティリティを使用して、生成された認証情報を保存します。セキュリティ上の理由から、 CodeCommit リポジトリへのアクセス用に生成されるパスワードは一時的なものであるため、キーチェーンに保存されている認証情報は、約 15 分後に機能しなくなります。を使用して Git にのみアクセスする場合は CodeCommit、以下を試してください。

  1. ターミナルで git config コマンドを実行し、Keychain Access ユーティリティが定義されている Git 設定ファイル (gitconfig) を見つけます。ローカルシステムおよび設定によっては、複数の gitconfig ファイルが存在する場合があります。

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

    このコマンドの出力で、次のような結果を検索します。

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

    この行の先頭に示されているファイルが、編集する必要がある Git 設定ファイルです。

  2. Git 設定ファイルを編集するには、プレーンテキストエディタを使用するか、次のコマンドを実行します。

    nano /usr/local/git/etc/gitconfig
  3. 次のいずれかの方法を使用して、設定を変更します。

    • helper = osxkeychain が含まれている認証情報セクションをコメントアウトまたは削除します。例:

      # helper = osxkeychain
    • aws credential helperosxkeychain の両方の認証情報ヘルパーセクション更新して内容を持たせます。例えば、 osxkeychainを使用して を認証する場合 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

      この設定の場合、Git は、リモートホストが "osxkeychain" に一致したときに https://github.com ヘルパーを使用し、リモートホストが "https://git-codecommit\.us-east-1\.amazonaws.com" に一致したときに認証情報ヘルパーを使用します。

    • 認証情報ヘルパーの前に空の文字列ヘルパーを含めます。例えば、 という名前のプロファイルを使用するときにosxkeychainヘルパーを使用しないには CodeCommitProfile で CLI:

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

      すべてのプロファイルを除外 CodeCommit する場合は、空の文字列ヘルパー行に続く行を一致させないように設定することもできます。

      helper = !aws codecommit credential-helper $@

    または、Keychain Access ユーティリティを引き続き使用して他の Git リポジトリの認証情報をキャッシュする場合は、行をコメントアウトする代わりにヘッダーを変更します。例えば、 のキャッシュされた認証情報を許可するには GitHub、ヘッダーを次のように変更できます。

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

Git で他のリポジトリにアクセスする場合は、リポジトリの認証情報を提供しないように Keychain Access ユーティリティを設定できます CodeCommit 。Keychain Access ユーティリティを設定するには、以下のように行います。

  1. Keychain Access ユーティリティを開きます。(Finder を使用して位置を指定できます)

  2. を検索git-codecommit.us-east-2.amazonaws.comして置き換える us-east-2 リポジトリが存在する AWS リージョン を持つ 。行をハイライト表示し、コンテキスト (右クリック) メニューを開いてから、[Get Info] を選択します。

  3. [Access Control] タブを選択します。

  4. [Confirm before allowing access] で、[git-credential-osxkeychain] を選択し、マイナス記号を選択してリストから削除します。

    注記

    リストから git-credential-osxkeychain を削除すると、Git コマンドを実行するたびにダイアログボックスが表示されます。[Deny] を選択して続行します。ポップアップが不要な場合は、以下のように行います。

    • で認証情報ヘルパーの代わりに、 SSHまたは Git 認証情報 CodeCommit を使用して に接続しますHTTPS。詳細については、「Linux、macOS、または Unix での SSH 接続の場合」および「Git 認証情報を使用した HTTPS ユーザーのセットアップ」を参照してください。

    • Keychain Access ユーティリティで、git-codecommit.us-east-2.amazonaws.com の [Access Control] (アクセスコントロール) タブから、[Allow all applications to access this item (access to this item is not restricted)] (すべてのアプリケーションがこのアイテムにアクセスすることを許可 (このアイテムへのアクセスは制限されない)) オプションを選択します。これにより、ポップアップは表示されませんが、認証情報はやがて無効になり (およそ 15 分後)、403 エラーメッセージが表示されます。この場合、キーチェーンアイテムを削除して機能を復元する必要があります。

    • デフォルトでキーチェーンを使用しない Git バージョンをインストールします。

    • キーチェーンアイテムを削除するスクリプトソリューションを検討してください。スクリプトソリューションのコミュニティで作成されたサンプルを表示するには、製品およびサービスの統合OS X 認証ストアのキャッシュされた認証情報を定期的に削除する Mac OS X スクリプトを参照してください。

Git で Keychain Access ユーティリティを完全に使用しないように、osxkeychain が Git で認証情報ヘルパーとして使用されないように設定することができます。たとえば、ターミナルを開いて git config --system credential.helper コマンドを実行し、osxkeychain が返される場合、Git は Keychain Access ユーティリティを使用するように設定されています。これを変更するには、次のコマンドを実行します。

git config --system --unset credential.helper

--system オプションを指定してこのコマンドを実行すると、すべてのユーザーに対して Git の動作がシステム全体で変更され、他のユーザーや、 に加えて他のリポジトリサービスを使用している場合は他のリポジトリに意図しない結果が生じる可能性があることに注意してください CodeCommit。また、このアプローチでは、sudo の使用が必要になり、この変更を適用するための十分なアクセス許可がお客様のアカウントに付与されていない場合があります。このコマンドが正常に適用されていることを確認するには、git config --system credential.helper コマンドを再度実行します。詳細については、「Git のカスタマイズ - Git の設定」および「Stack Overflow mに関するこの記事」を参照してください。

Git for Windows: Git for Windows をインストールしましたが、リポジトリへのアクセスが拒否されます (403)

問題: Windows で、認証情報ヘルパーによって認証情報が正常にアクセスまたは使用されていないようです。原因としてさまざまな問題が考えられます。

  • AWS CLI は、リポジトリが存在する AWS リージョン とは異なる に対して設定されます。

  • デフォルトでは、Git for Windows は、認証情報ヘルパーを使用する CodeCommit 接続と互換性のない Git AWS 認証情報マネージャーユーティリティをインストールします。インストールすると、認証情報ヘルパーが と共にインストール AWS CLI され、 への接続用に設定されていても、リポジトリへの接続が失敗します CodeCommit。

  • Git for Windows の一部のバージョンは、RFC2617 および RFC4559 に完全に準拠していない可能性があり、Git 認証情報と に含まれている認証情報ヘルパーの両方に問題がある可能性があります AWS CLI。詳細については、「バージョン 2.11.0(3) でユーザー名/パスワードの入力画面が表示されない」を参照してください。

解決方法:

  • に含まれている認証情報ヘルパーを使用しようとする場合は AWS CLI、認証情報ヘルパーを使用するHTTPS代わりに、 経由で Git 認証情報を使用して接続することを検討してください。IAM ユーザー用に設定された Git 認証情報は、 の認証情報ヘルパーとは異なり、Windows 用 Git 認証情報マネージャーと互換性があります AWS CodeCommit。詳細については、「Git 認証情報を使用した HTTPS ユーザーのセットアップ」を参照してください。

    認証情報ヘルパーを使用する場合は、 が正しい AWS CLI に設定されているかどうかを確認するために AWS リージョンコマンドを実行しaws configure、表示される情報を確認します。 CodeCommit リポジトリが に表示されているものと AWS リージョン は別の にある場合は AWS CLI、 aws configure コマンドを実行し、値をそのリージョンに適した値に変更する必要があります。詳細については、「ステップ 1: CodeCommit の初期設定」を参照してください。

  • 可能な場合は、Git for Windows をアンインストールしてから再インストールします。Git for Windows をインストールする際、Git 認証情報マネージャーユーティリティをインストールするオプションのチェックボックスをオフにします。この認証情報マネージャーは、 の認証情報ヘルパーとは互換性がありません AWS CodeCommit Git 認証情報マネージャーまたは別の認証情報管理ユーティリティをインストールし、アンインストールしない場合は、 .gitconfig ファイルを変更して の認証情報管理を追加できます CodeCommit。

    1. コントロールパネル を開き、Credential Manager を選択し、 に保存されている認証情報を削除します CodeCommit。

    2. Notepad など、任意のプレーンテキストエディタで .gitconfig ファイルを開きます。

      注記

      複数の Git プロファイルを操作する場合は、ローカルとグローバルの .gitconfig ファイルを両方使用します。必ず、編集するファイルが正しいことを確認します。

    3. ここで次のコードを .gitconfig ファイルに追加します。

      [credential "https://git-codecommit.*.amazonaws.com"] helper = !aws codecommit credential-helper $@ UseHttpPath = true
    4. ファイルを保存したら、新しいコマンドラインセッションを開いてから、再度接続を試みます。

    このアプローチは、リポジトリに接続する AWS CodeCommit ときに 認証情報ヘルパーを使用し、 CodeCommit リポジトリなどの他のホストされたリポジトリに接続するときに別の認証情報管理システムを使用する場合にも使用できます GitHub 。

    デフォルトとして使用する認証情報ヘルパーをリセットするには、--system コマンドの実行時に --global オプションを使用します (--localgit config は使用しません)。

  • Windows コンピュータで Git 認証情報を使用している場合は、接続文字列の一部として Git 認証情報のユーザー名を含めることで、コンプライアンスRFC違反の問題を回避できます。例えば、問題を回避し、 という名前のリポジトリのクローンを作成するには MyDemoRepo 米国東部 (オハイオ) リージョン:

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

    Git 認証情報のユーザー名に @ 文字が含まれていると、このアプローチは機能しません。文字をURLエンコード (URLエスケープまたはパーセントエンコードとも呼ばれます) する必要があります。