git-remote-codecommitでAWS CodeCommitの認証を簡略化する - IAMベースのGitアクセス

どうも、Shinyaです。この記事では、AWS公式のPythonツールであるgit-remote-codecommitを使用して、AWS CodeCommitリポジトリへのGitアクセスをIAMユーザーの認証情報で行う方法について解説します。
- AWS CodeCommitを使用していてGit認証に手間を感じている人
- IAMユーザーの認証情報でCodeCommitにアクセスしたい人
- Git認証情報(HTTPS Git認証情報)の管理を不要にしたい人
- CodeCommitのクローンやプッシュでトラブルを経験したことがある人
この記事では、AWS CLIがインストール済みで、IAMユーザーのプロファイルが設定されていることを前提としています。まだ設定していない場合は、以下の記事を参照してください。
git-remote-codecommitとは
git-remote-codecommitは、AWS CodeCommitリポジトリへのGitアクセスを簡略化するためのAWS公式ツールです。Pythonパッケージとしてpipで配布されています。
AWS CodeCommitはGitベースのマネージドリポジトリサービスですが、デフォルトのHTTPSアクセスではGit認証情報(ユーザー名とパスワード)の発行・管理が必要になります。git-remote-codecommitを使用すると、IAMユーザーの認証情報で直接アクセスできるため、Git認証情報を別途管理する必要がなくなります。
- IAMユーザーの認証情報でCodeCommitにアクセスできる
- Git認証情報(HTTPS Git認証情報)の発行・管理が不要
- AWS CLIのプロファイルをそのまま活用できる
- フェデレーテッドアクセスや一時認証情報にも対応
前提条件
git-remote-codecommitを使用するには、以下の環境が必要です。
| 項目 | 要件 |
|---|---|
| Python | 3.8以上(3.8、3.9、3.10、3.11がサポート対象) |
| pip | 9.0.3以上 |
| Git | 1.7.9以上 |
| AWS CLI | インストール・プロファイル設定済み |
参考: git-remote-codecommit - PyPI
Pythonのインストールについては、HomebrewでPythonをインストールするで解説しています。
セットアップ手順
手順1: pipのバージョンを確認する
git-remote-codecommitにはpip 9.0.3以降が必要です。まず、pipのバージョンを確認します。
pip3 --version
pip 26.0 from /opt/homebrew/lib/python3.14/site-packages/pip (python 3.14)
バージョンが9.0.3未満の場合は、pipを更新します。
pip3 install --upgrade pip
または、Homebrewで管理している場合はbrewコマンドでPythonを更新します。
brew upgrade python3
手順2: IAMユーザーの準備
CodeCommitリポジトリがあるリージョンで、適切な権限を持つIAMユーザーを準備します。
- IAMユーザーを作成し、CodeCommit関連のポリシー(
AWSCodeCommitFullAccessまたはAWSCodeCommitPowerUserなど)をアタッチする - AWS CLIでプロファイルを設定する
aws configure --profile my-codecommit-profile
AWS CLIのプロファイル設定の詳細については、AWS CLIでIAMユーザーのプロファイルを設定するで解説しています。
手順3: git-remote-codecommitをインストールする
pipでgit-remote-codecommitをインストールします。
pip3 install git-remote-codecommit
インストールが完了すると、Gitコマンドでcodecommit://プロトコルが使用できるようになります。
使用方法
デフォルトプロファイルでクローンする
AWS CLIのデフォルトプロファイルを使用してリポジトリをクローンする場合は、以下のコマンドを実行します。
git clone codecommit://YourRepositoryName
プロファイルを指定してクローンする
デフォルト以外のプロファイルを使用する場合は、@の前にプロファイル名を指定します。
git clone codecommit://my-profile@YourRepositoryName
リージョンを指定してクローンする
特定のリージョンを明示的に指定する場合は、以下の形式を使用します。
git clone codecommit::ap-northeast-1://my-profile@YourRepositoryName
クローン後の操作
codecommit://プロトコルでクローンしたリポジトリでは、通常のGitコマンドでプル・プッシュなどの操作が可能です。
git pull
git push
git fetch
codecommitプロトコルの形式まとめ
| 形式 | 用途 |
|---|---|
codecommit://RepoName | デフォルトプロファイル・デフォルトリージョン |
codecommit://Profile@RepoName | プロファイル指定 |
codecommit::Region://Profile@RepoName | リージョン・プロファイル指定 |
- 一部のIDEでは
codecommit://形式のURLを直接認識できない場合があります。その場合は、コマンドラインで先にクローンしてからIDEで開くことで対応できます - AWS CLI v2の使用が推奨されます。一時認証情報のサポートはv2で提供されています
関連記事
- HomebrewでAWS CLIをインストールする - AWSサービスをコマンドラインから操作する
- AWS CLIでIAMユーザーのプロファイルを設定する - 認証情報の管理と操作方法
- HomebrewでPythonをインストールする
- Amazon S3 + CloudFrontで静的サイトを配信する - CodePipelineによるCI/CD構築
まとめ
この記事では、git-remote-codecommitを使用してAWS CodeCommitの認証をIAMベースに簡略化する方法について解説しました。git-remote-codecommitを導入することで、Git認証情報の管理が不要になり、AWS CLIのプロファイルをそのまま活用してCodeCommitリポジトリにアクセスできます。
参考リンク:
