Git の認証情報不要!CodeCommit に IAM ユーザで接続できる HTTPS with git-remote-codecommit がサポートされたみたいなので試してみました
2020-03-05AWS 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 リポジトリに対する接続方法として、 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
- SSH 接続用の公開鍵の登録
- HTTPS
- 接続用のユーザ、パスワードの作成
SSH 接続は仕方ないとして、 HTTPS での接続時にも IAM の認証情報設定で CodeCommit の認証情報を作成する必要があり、面倒だなと思っていました。それが、今回新たにサポートされた HTTPS with git-remote-codecommit という接続方法により解消されることになります。
HTTPS with git-remote-codecommit で接続してみる
では実際に新しい接続方法 HTTPS with git-remote-codecommit で接続してみます。公式ドキュメントには下記の手順が記載されていますので、同じ流れで確認していきます。
- 前提条件の確認・準備
- CodeCommit に対する初期設定
- git-remote-codecommit のインストール
- CodeCommit リポジトリへの接続
0. git-remote-codecommit を使用するための前提条件の確認・準備
git-remote-codecommit を使用するためにはローカルのマシンに以下のものがインストールされている必要があります。
- Python 3.x
- pip 9.0.3 以上
- Git 1.7.9 以上
念のため確認しておきます。
$ 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 に対する初期設定といっても、ここでやるのは下記の内容です。
- CodeCommite にアクセスできる IAM ユーザの作成
- AWS CLI のインストールと認証情報の設定
ここは今回新たに出てくる内容でもないので割愛します。既存の 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::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