AWS CodeCommit
ユーザーガイド (API バージョン 2015-04-13)

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

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

認証情報ヘルパーを使用すると 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

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

  • MSI の代わりに Python と pip を使用して、Windows に AWS CLI をインストールして設定します。詳細については、「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 コマンドを実行して aws.cmd を明示的に参照するように .gitconfig ファイルを更新し、必要に応じてコマンドへのパスを含めるように 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, or Unix での AWS CodeCommit リポジトリへの HTTPS 接続のセットアップステップ または AWS CLI 認証情報ヘルパーを使用する Windows での AWS CodeCommit リポジトリへの 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

    このコマンドの出力で、次のオプションが含まれている行を見つけます。

    helper = osxkeychain

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

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

    $ nano /usr/local/git/etc/gitconfig
  3. 以下のテキストの行をコメントアウトします。

    # helper = osxkeychain

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

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

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

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

  2. git-codecommit.us-east-2.amazonaws.com を検索します。行をハイライト表示し、コンテキスト (右クリック) メニューを開いてから、[Get Info] を選択します。

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

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

    注記

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

    • HTTPS ではなく SSH を使用して CodeCommit に接続する詳細については、「Linux, macOS, or Unix 上で SSH 接続する場合」を参照してください。

    • 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 でデフォルトでインストールされる Git 認証情報マネージャーユーティリティは、AWS 認証情報ヘルパーを使用する CodeCommit 接続と互換性がありません。インストールすると、認証情報ヘルパーを AWS CLI でインストールして CodeCommit に接続するように設定した場合でも、リポジトリへの接続は失敗します。

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

解決方法:

  • AWS CLI に搭載されている認証情報ヘルパーを使用する場合は、認証情報ヘルパーではなく、Git 認証情報を使用して HTTPS 経由で接続するようにしてください。IAM ユーザーに設定されている Git 認証情報は、AWS CodeCommit の認証情報ヘルパーとは異なり、Windows 用の Git 認証情報マネージャーと互換性があります。詳細については、「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. [コントロールパネル] を開き、[資格情報マネージャー] を選択して、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 リポジトリなど) に接続する場合にも使用できます。

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

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

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

    注記

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