Help us understand the problem. What is going on with this article?

git-remote-codecommit(GRC)を使ってAWS CodeCommitに繋いでみたら楽になった

こんにちは。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認証情報ヘルパーを設定していました。

ステップ 3: 認証情報ヘルパーを設定する

個人的には、Git初心者にとってはなかなか難しく

  • GitのCredential設定もしないとならない(AWSCLIのCredential設定だけで完結しない)
  • Gitクライアントによってはインストール時、もしくは.gitconfigファイルでCredential Manager設定を無効化しないと接続できない場合がある
  • 異なるCodeCommitリポジトリの認証を追加したいときに、globalの.gitconfigファイルを変更していた
    • 最近、git configコマンドに--localオプションがあることを知りました

という感じだったので、今回のツールはGit初心者でもGit接続環境を導入しやすくなりました。

まとめ

git-remote-codecommitを使って今までより比較的簡単にAWS CodeCommitに接続することができました。また、新しいツールの調査の過程でGitについても少し理解を深めることができました。

dnpds
大日本印刷(DNP)のICT分野における戦略を担う会社です。  「Digital Communication Integrator(通称 CIer)」をVISIONとして掲げ、システムインテグレーションを担う「SIer」ではなく、ICTの力であらゆるものをコミュニケートし、社会の発展に貢献します。 お問い合わせは会社ホームページからお願いします。 
https://www.dnp-ds.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away