こんにちは。AWS歴3年生の人です。最近、インフラもコードで管理するInfrastructure as Code(IaC)に関連して、Gitを使い始めたのですが、2020年春にAWSからgit-remote-codecommitという新しいGit認証ツールがリリースされたので勉強がてら試してみました。
AWS CodeCommit が新しい Git 認証情報ヘルパーの git-remote-codecommit を導入
注意
-
本記事は2020年7月17日時点でのバージョンで確認しました。
-
記載のコードにつきましては参考となりますので、利用時の不具合について一切の責任を負いません。
結論。こんな方におすすめです。
- AWSがきっかけでGitを使い始める人。
- AWSが提供しているGitリポジトリへ接続するための認証補助ツールなので。
- Gitの認証設定がうまくいかない人や、.gitconfigファイルの設定が不慣れな人。
- AWSCLIのCredential設定ができれば、簡単にCodeCommitに接続できるので。
普段からCodeCommit以外のリポジトリや、複数のGit認証情報を使いこなしている方にはこのツールは不要かもしれません。
準備
前提条件である、PythonやAWSCLI、Gitクライアントのインストール、CodeCommitやAWSCLIのCredentialとprofile設定は済んでいるものとします。
参考
ステップ 0: git-remote-codecommit の前提条件をインストールする
ステップ 1: CodeCommit の初期設定
インストール
一行 pip install git-remote-codecommit
を実行するだけです
$ 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
Collecting botocore>=1.10.4 (from git-remote-codecommit)
(snip)
Successfully built git-remote-codecommit
依存関係のあるパッケージもあわせて一緒に更新されますが、最後に Successfully built git-remote-codecommit
が表示されれば成功です。
参考
ステップ 2: git-remote-codecommit をインストールする
使い方
例えば、AWSのprofile名を project-a
として、リージョン ap-northeast-1
にあるAWS CodeCommitリポジトリ demoapp
をローカルにクローンしたい場合は以下のようにします。
$ git clone codecommit::ap-northeast-1://project-a@demoapp
Cloning into 'demoapp'...
remote: Counting objects: 40, done.
Unpacking objects: 100% (40/40), done.
以降は、いつものように使うだけでOKです。
毎回profile名を指定する必要はありません。また、インストールさえできれば、GUIでもクローン時に上記のように指定することで同じく使うことができました。
例:pushの例
$ git push
Counting objects: 4, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (4/4), 363 bytes | 363.00 KiB/s, done.
Total 4 (delta 1), reused 0 (delta 0)
To codecommit::ap-northeast-1://project-a@demoapp
9d88cfd..2247110 master -> master
参考
ステップ 3: CodeCommit コンソールに接続し、リポジトリのクローンを作成する
深掘りしてみる
クローン時に指定した情報がどこに設定されているか探してみたところローカルリポジトリ/.git/config
というファイルに記載されていました。
[remote "origin"]
url = codecommit::ap-northeast-1://project-a@demoapp
fetch = +refs/heads/*:refs/remotes/origin/*
いままでの認証情報ヘルパーと比べて
いままでは下記のAWSユーザサイトを参考にGitコマンドでGit認証情報ヘルパーを設定していました。
個人的には、Git初心者にとってはなかなか難しく
- GitのCredential設定もしないとならない(AWSCLIのCredential設定だけで完結しない)
- Gitクライアントによってはインストール時、もしくは.gitconfigファイルでCredential Manager設定を無効化しないと接続できない場合がある
- 異なるCodeCommitリポジトリの認証を追加したいときに、globalの.gitconfigファイルを変更していた
- 最近、
git config
コマンドに--local
オプションがあることを知りました
- 最近、
という感じだったので、今回のツールはGit初心者でもGit接続環境を導入しやすくなりました。
まとめ
git-remote-codecommitを使って今までより比較的簡単にAWS CodeCommitに接続することができました。また、新しいツールの調査の過程でGitについても少し理解を深めることができました。