git-remote-codecommit を使用してみた

CodeCommit のリポジトリに接続をする際、接続するIAMユーザに対しSSHパブリックキーかHTTPSの認証情報を設定してその情報を介して接続していました。先日リリースされた git-remote-codecommit という機能を用いることで、IAMユーザのクレデンシャル(アクセスキー情報)のみでリポジトリへの接続が可能になったようですので使用したメモを残します。

環境

$ pip --version
pip 19.3.1 from /usr/lib/python3.8/site-packages/pip (python 3.8)
$ git --version
git version 2.25.1

インストール

pip でインストールします。

$ pip install git-remote-codecommit
Collecting git-remote-codecommit
  Downloading https://files.pythonhosted.org/packages/bb/f7/1180a1f2319a9120c94f33bba61e1738db8dea31b622f8aaf382f219aaeb/git-remote-codecommit-1.13.tar.gz
:
Successfully installed botocore-1.15.16 docutils-0.15.2 git-remote-codecommit-1.13 jmespath-0.9.5 python-dateutil-2.8.1

準備

必要最小限となる権限については詳細には調査していませんが、リポジトリへのpush等を考慮すると AWSCodeCommitPowerUser が適任と思います。

(参考)AWS Managed (Predefined) Policies for CodeCommit

.aws/credential.aws/config を作成します。CodeCommit 接続用IAMユーザが既に存在し、クレデンシャルファイルも存在している場合はスキップして問題ないです。

使用法

git clone は以下のようなコマンドイメージとなります。

$ git clone codecommit://(your-repo)

aws クレデンシャルファイルでは複数のプロファイルを作成することが出来、別のプロファイルで作業を行う場合はリポジトリの前に @ を付けて表します。

$ git clone codecommit://(other-profile-name)@(your-repo)

リージョンを指定することも出来ます。

もちろんですが us-east-1 にリポジトリが無い場合はエラーとなります。CodeCommit リージョンとawsクレデンシャルのリージョン情報が一致している場合はあまり使用しないイメージでよいのかな。

$ git clone codecommit::us-east-1://(your-repo)
$ git clone codecommit::us-east-1://yourrepo
Cloning into 'yourrepo'...
fatal: repository 'https://git-codecommit.us-east-1.amazonaws.com/v1/repos/yourrepo/' not found

参考

© てっくらのーと/mkr-note 2024