AWS

git-remote-codecommit(GRC)を使用して認証情報の入力無しでCodeCommitを使う

こんにちは、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 を導入

返信を残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA