アクセスエラーと AWS CodeCommit のトラブルシューティング
以下の情報は、AWS CodeCommit リポジトリに接続するときに、アクセスエラーのトラブルシューティングに役立つ場合があります。
トピック
アクセスエラー: Windows から CodeCommit リポジトリへ接続する際、ユーザー名とパスワードの入力を求められる
問題: Git を使用して CodeCommit リポジトリ に接続しようとすると、ユーザー名およびパスワードの入力を求めるダイアログボックスが表示されます。
解決方法: Windows 用の組み込みの認証情報管理システムである可能性があります。設定により、以下のいずれかを実行します。
-
Git 認証情報で HTTPS を使用している場合は、Git の認証情報は、まだシステムに保存されていません。Git の認証情報を入力して続行します。メッセージが再度表示されることはありません。詳細については、「Git 認証情報を使用した HTTPS ユーザーのセットアップ」を参照してください。
-
AWS CodeCommit の認証情報ヘルパーで HTTPS を使用している場合は、Windows の認証情報管理システムと互換性がありません。[Cancel] を選択します。
また、Git for Windows をインストールしたときに Git 認証情報マネージャーをインストールした可能性があります。Git 認証情報マネージャーは、AWS CLI に含まれる CodeCommit の認証情報ヘルパーとの互換性がありません。Git 認証情報マネージャーのアンインストールを検討してください。CodeCommit の認証情報ヘルパーを使用する代わりに、git-remote-codecommit をインストールして設定することもできます。
詳細については、「git-remote-codecommit を使用して AWS CodeCommit への HTTPS 接続をセットアップする手順」、「AWS CLI 認証情報ヘルパーを使用して Windows で HTTPS 接続をセットアップする手順」、および「Git for Windows: Git for Windows をインストールしましたが、リポジトリへのアクセスが拒否されます (403)」を参照してください。
アクセスエラー: CodeCommit リポジトリへの接続時にパブリックキーが拒否される
問題: SSH エンドポイントを使用して CodeCommit リポジトリ と接続しようとすると、エラーメッセージ Error: public key denied
が表示されます。
解決方法: このエラーの最も一般的な原因は、SSH 接続のセットアップを完了していないことです。SSH キー (パブリックキーとプライベートのペア) を設定し、続いて、そのパブリックキーを IAM ユーザーと関連付けます。SSH の設定に関する詳細については、「Linux, macOS, or Unix で SSH 接続をセットアップする手順」および「Windows で SSH 接続をセットアップする手順」を参照してください。
アクセスエラー: CodeCommit リポジトリへの接続時の「Rate Exceeded」または「429」メッセージ
問題: CodeCommit リポジトリと通信しようとすると、「Rate Exceeded」というメッセージまたはエラーコード「429」が表示されます。通信は大幅に遅くなるか失敗します。
問題: アプリケーション、AWS CLI、Git クライアント、AWS マネジメントコンソールのいずれからの CodeCommit へのすべての呼び出しは、1 秒あたりの最大リクエスト数と全体的なアクティブリクエストの対象となります。どの AWS リージョンでも、AWS アカウントの許容されるリクエストレートの最大値を超えることはできません。リクエストが最大レートを超えると、エラーが表示され、それ以降の呼び出しは一時的に AWS アカウントに制限されます。スロットリング期間中は、CodeCommit への接続が遅くなり、失敗する可能性があります。
解決方法: CodeCommit への接続または呼び出しの数を減らすか、リクエストを分散させるためのステップを実行してください。留意が必要なアプローチ:
-
リクエスト、特に定期的なポーリングリクエストにジッターを実装する
CodeCommit を定期的にポーリングしているアプリケーションがあり、このアプリケーションが複数の Amazon EC2 インスタンスで実行されている場合は、異なる Amazon EC2 インスタンスが同じ秒にポーリングしないようにジッター (ランダムな遅延量) を導入します。1 分間にポーリングメカニズムを均等に分散させるには、0 〜 59 秒の乱数をお勧めします。
-
ポーリングではなくイベントベースのアーキテクチャーを使用する
ポーリングではなく、イベントベースのアーキテクチャーを使用して、イベントが発生したときにのみ呼び出しが行われるようにします。ワークフローをトリガーするために AWS CodeCommit イベントに CloudWatch イベント 通知を使用することを検討します。
-
API と自動 Git アクションのためのエラー再試行とエクスポネンシャルバックオフの実装
エラーの再試行とエクスポネンシャルバックオフは、呼び出しの頻度を制限するのに役立ちます。各 AWS SDK は自動再試行ロジックおよび指数エクスポネンシャルバックオフアルゴリズムを実装します。自動 Git push と Git pull の場合は、独自の再試行ロジックを実装する必要があります。詳細については、「AWS でのエラーの再試行とエクスポネンシャルパックオフ」を参照してください。
-
AWS サポートセンターで CodeCommit サービスのクォータの引き上げを要求する
サービスの制限の引き上げを受けるには、エラーの再試行やエクスポネンシャルバックオフ方法の実装など、ここで示されている提案に従っていることを確認する必要があります。リクエストでは、AWS リージョン、AWS アカウント、およびスロットリングの問題の影響を受ける期間も入力する必要があります。