michimani.net

Git の認証情報不要!CodeCommit に IAM ユーザで接続できる HTTPS with git-remote-codecommit がサポートされたみたいなので試してみました

2020-03-05

AWS CodeCommit のリポジトリに Git の認証情報を設定せずに IAM ユーザとして接続できる HTTPS with git-remote-codecommit という方法がサポートされました。これは git-remote-codecommit という Python のパッケージを使用した方法で、 SSH, HTTPS に続いて新たに追加された接続方法となります。

CodeCommit に対する Git の認証が不要になり、 IAM ユーザとして接続できるということで、 CodeCommit リポジトリへの接続がとても楽になりそうです。

目次

HTTPS with git-remote-codecommit

CodeCommit supports connections to CodeCommit repositories over HTTPS with git-remote-codecommit, a utility that modifies Git. This is the recommended approach for federated or temporary access connections to CodeCommit repositories. You can also use git-remote-codecommit with an IAM user. git-remote-codecommit does not require you to set up Git credentials for the user.

AWS CodeCommit User Guide Document History - AWS CodeCommit

AWS CodeCommit リポジトリに対する接続方法として、 git-remote-codecommit を使用した HTTPS での接続がサポートされました。この方法は、既に認証されたユーザ、または一時的な接続を行う際に推奨される方法です。 git-remote-codecommit を使用した HTTPS での接続では、 Git の認証情報の設定は不要です。

git-remote-codecommit は、もともと OSS で公開されていたツールでしたが、今回 AWS が公式にサポートするようになった、という経緯があるようです。

もともとは GitHub の awslabs/git-remote-codecommit で管理されていましたが、現在は aws/git-remote-codecommit で管理されています。

これまでの接続方法

CodeCommit リポジトリへの接続方法として、 SSH と HTTPS の 2 つの方法がありました。 これらの方法で接続する場合、それぞれ IAM ユーザの認証情報を設定する必要がありました。

SSH 接続は仕方ないとして、 HTTPS での接続時にも IAM の認証情報設定で CodeCommit の認証情報を作成する必要があり、面倒だなと思っていました。それが、今回新たにサポートされた HTTPS with git-remote-codecommit という接続方法により解消されることになります。

HTTPS with git-remote-codecommit で接続してみる

では実際に新しい接続方法 HTTPS with git-remote-codecommit で接続してみます。公式ドキュメントには下記の手順が記載されていますので、同じ流れで確認していきます。

  1. 前提条件の確認・準備
  2. CodeCommit に対する初期設定
  3. git-remote-codecommit のインストール
  4. CodeCommit リポジトリへの接続

0. git-remote-codecommit を使用するための前提条件の確認・準備

git-remote-codecommit を使用するためにはローカルのマシンに以下のものがインストールされている必要があります。

念のため確認しておきます。

$ python3 -V
Python 3.7.5

$ pip3 --version
pip 19.3.1 from /usr/local/lib/python3.7/site-packages/pip (python 3.7)

$ git --version
git version 2.17.2 (Apple Git-113)

もし pip のバージョンが低い場合は、下記のコマンドでアップデートします。

$ curl -O https://bootstrap.pypa.io/get-pip.py
$ python3 get-pip.py --user

1. CodeCommit に対する初期設定

CodeCommit に対する初期設定といっても、ここでやるのは下記の内容です。

ここは今回新たに出てくる内容でもないので割愛します。既存の IAM ユーザがあればそれを使用して、もし CodeCommit へのアクセス権限がない場合は AWSCodeCommitPowerUser またはその他のポリシーで CodeCommit の操作ができるようにしておきます。

2. git-remote-codecommit のインストール

今回の肝となる git-remote-codecommit をインストールします。

$ pip3 install git-remote-codecommit
...
...
Successfully built git-remote-codecommit
Installing collected packages: git-remote-codecommit
Successfully installed git-remote-codecommit-1.11

3. CodeCommit リポジトリへの接続

では、実際に HTTPS with git-remote-codecommit で CodeCommit リポジトリへ接続してみます。

マネジメントコンソールで CodeCommit のコンソールへアクセスしてリポジトリ一覧を見てみると、 URL のクローン の列に HTTPS (git-remote-codecommit) が新たに追加されています。

CodeCommit HTTPS with git-remote-codecommit

ここをクリックすると、下記のようなリンクがコピーされます。

codecommit::ap-northeast-1://your-repo-name

このリンクを使って clone します。

$ git clone codecommit::ap-northeast-1://your-repo-name

以上です。非常に簡単です。

あとは普通に git push とか git pull とか、普通に Git コマンドを実行することができます。

AWS CLI のプロファイルを使用する場合

IAM ユーザとして接続するので、AWS CLI のプロファイルを指定して接続することも可能です。

例えば cc-user というプロファイル名を付けた IAM ユーザで接続したい場合は、下記のような形で clone します。

$ git clone codecommit::ap-northeast-1://cc-user@your-repo-name

リポジトリ名の前に プロファイル名@ を付ける形です。

まとめ

AWS CodeCommit のリポジトリに Git の認証情報を設定せずに IAM ユーザとして接続できる HTTPS with git-remote-codecommit という方法がサポートされたので、実際に試してみたという話でした。

CodeCommit リポジトリへの接続には公開鍵の登録や HTTPS 接続用のユーザ情報を作成したりする必要がありましたが、今回サポートされた方法により、単純に IAM ユーザで接続できるようになりました。 SSH はともかく、 HTTPS でも接続用ユーザを作成する必要があったのは不便だったので、とてもありがたいアップデートです。

同じように不便さを感じていた方は試してみましょう。


comments powered by Disqus