こんにちは、SRE課の栩野です。
目次
git-remote-codecommit(GRC)を使用して認証情報の入力無しでCodeCommitを使う
今までCodeCommitを使うときの接続方法として「HTTPS」か「SSH」を使っていたのですが
(だいたい「HTTPS」)
どちらもIAMユーザ毎で「AWS CodeCommit の HTTPS Git 認証情報」もしくは
「AWS CodeCommit の SSH キー」の設定を行う必要があり、設定と認証情報やキーの管理が面倒でした。
CodeCommitへの接続方法として、もう一つ「HTTPS(GRC)」というものが用意されているのですが
こちらの接続方法を使用した場合、IAMユーザ毎での認証情報やキーの設定は不要になり
IAMユーザに対して行うアクセス権限の設定のみでCodeCommitが利用できる
との超便利そうな情報を見つけたので、今回は実際に「HTTPS(GRC)」の接続方法を使って
CodeCommitに接続してみたいと思います。
GRCとは?
そもそもGRCって一体何なのか...ですが
正式な名称は「git-remote-codecommit」で、それの頭文字でGRCのようで
CodeCommitのコンパネには以下のような説明が書かれてます...
HTTPS(GRC) は、git-remote-codecommit (GRC) で使用するプロトコルです。
このユーティリティは Git を拡張することで、コードを CodeCommit リポジトリに
対しプッシュおよびプルするための簡単な方法を提供します。これは、フェデレーティッドアクセス、
ID プロバイダー、および一時的な認証情報を使用した接続をサポートする際に推奨されるプロトコルです。
CodeCommitのリポジトリに対しての、プッシュやプルを簡単にするためのにGitを拡張してれて
また一時認証を使用した接続をサポートする際に推奨されるプロトコル
みたいなことが多分書いてます。
更にGoogle先生にも聞いてみると...
フルマネージドソース管理サービスの AWS CodeCommit は、複数のアカウントまたは短期間の認証情報で
CodeCommit を使用するお客様をサポートする新しい Git リモートヘルパーをリリースしました。
このリモートヘルパー git-remote-codecommit は、AWS CLI 用に設定したプロファイル情報を使用します。
さらに、CodeCommit リポジトリを一意に識別する URL パターンを有効にする新しいプロトコル (codecommit://)
も導入しました。
2020年3月頃にAWSでサポートされるようになったCodeCommitを利用する方に向けたGitのお助け機能みたいなやつで
AWS CLI用のプロファイル情報を使っての認証をサポートする的なことが多分書いてます。
参考:AWS CodeCommit が新しい Git 認証情報ヘルパーの git-remote-codecommit を導入
GRCでCodeCommitを使ってみる
あんまり説明だけみてもよく分からないので
とりあえずどんなものか理解するためにGRCを使っていきます。
必要環境
GRCを使用するには、最低限以下の環境が必要になるようです。
- Python バージョン 3 以降
- pip バージョン 9.0.3 以降
- Git バージョン 1.7.9 以降
こちらの環境はすでに整っている程で進めていきます。
またCodeCommitでリポジトリの作成や、AWS CLIのセットアップ
AWS CLIでセットアップ済みのIAMユーザがCodeCommitにアクセス出来る権限の付与
についても設定済みの程で進めていきます。
- CodeCommitでリポジトリを作成済み
- IAMユーザに [AWSCodeCommitPowerUser]のポリシーをアタッチ済み
- AWS CLIのセットアップが完了済み
git-remote-codecommit (GRC)のインストール
必要環境が整っていれば、GRCが使える環境を設定していきます。
pip install git-remote-codecommit
終わりました。
これでGRCが使用できるようになりました!
「HTTPSのクローン(GRC)」の実施
それでは実際にGRCを使って、まずはCodeCommitのリポジトリからクローン
してみたいと思います。
AWSのマネージメントコンソールにログインし、サービスからCodeCommitに移動します。
CodeCommitから今回クローンしたいリポジトリを選択し
「URLのクローン」をクリック、選択肢から「HTTPSのクローン(GRC)」をクリックします。
すると以下のようなURLがコピーされます。
# (例)
codecommit::ap-northeast-1://test
AWS CLIがセットアップ済みの環境で、以下のようにgit cloneコマンドを
叩きます。
git clone codecommit::ap-northeast-1://test
------------------------------------
Cloning into 'test'...
remote: Counting objects: 3, done.
Unpacking objects: 100% (3/3), done.
------------------------------------
認証情報の入力なしで、リポジトリがクローンされました!
ls
------------------------------------
test
------------------------------------
ls -a test/
------------------------------------
. .. aaa.txt .git
------------------------------------
ちなみにAWS CLIで複数のプロファイル設定を行なっている場合は
以下のようにリポジトリ名の前に「プロファイル名@」をつけるだけで
簡単に複数のIAMユーザのプロファイルを使い分けることが可能です。
git clone codecommit::ap-northeast-1://プロファイル名@test
あとがき
今までIAMユーザ毎で認証情報やキーの設定や管理がかなり面倒だったので
GRCは超便利でした。
VSCodeで利用する場合も、リポジトリのクローンの入力で
先ほどのcodecommit::から始まるURLを入力するだけでOKです。
VSCodeから認証情報を入力すると、PCがおせっかいして認証情報を記憶して
別ユーザの認証情報を使いたい時にかなり面倒だったので、認証情報なしで
プロファイルを指定するだけで、複数ユーザでCodeCommitを使用できるのはかなり便利です。
参考
参考:git-remote-codecommit を使用して AWS CodeCommit への HTTPS 接続をセットアップする手順
参考:AWS CodeCommit が新しい Git 認証情報ヘルパーの git-remote-codecommit を導入
運用サービス課 課長
運用・監視の設計から導入まで、運用サービスを担当してます。
運用監視やセキュリティ関連の話題に興味があるので、そのあたりのブログを多めで投稿していきたいと思ってます。
LINK
クラウドベリージャム:プロフィールページ