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

Posted on 2020-03-08 in zakki

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

準備

  • CodeCommit 接続用 IAM ユーザの作成
  • ( 接続用 IAM ユーザに対し )CodeCommit リポジトリにアクセスできる権限付与

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

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

  • aws クレデンシャルファイルの作成

.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

参考

CodeCommit Git