git-remote-codecommitでAmazon CodeCommitリポジトリへ接続する

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

概要

git-remote-codecommitを使うとAmazon CodeCommit上のリポジトリにアクセスする際の権限設定を簡単に行うことができます。

具体的には下記のようなURLでリポジトリを指定できるようになります。

codecommit://プロファイル名@リポジトリ名

使い方

(README.mdの内容とほとんど重複しますが)

  1. git-remote-codecommitをインストールします: pip install git-remote-codecommit
  2. アクセスしたいリポジトリへの参照権限がある名前付きプロファイルの設定を行います
  3. git コマンドや設定ファイルのURLをcodecommit://プロファイル名@リポジトリ名に置き換えます。

プロファイルはクレデンシャルを設定する方法でも、assume-roleのどちらでもOKです。

git clone する場合は下記のようになります。

git clone codecommit://your_profile@your_repository

.git/configでリモートリポジトリ設定する場合は下記のようになります。

[remote "codecommit"]
    url = codecommit://your_profile@your_repository

まとめ

CodeCommitへのアクセスにはアクセス用のIAMユーザーを作ったり、credential-helperを使ったりなど様々な方法がありますが、いつも使っているプロファイルをそのまま流用してリポジトリにアクセスできるので管理もシンプルになると思います。

おまけ

このツールを使うとローカルのリポジトリに異なる2つ以上のAWSアカウントのCodeCommitリポジトリをリモートリポジトリとして登録できます。 今回はこのツールを見つけるまでは下記のようなgit/configでこれを実現しようとしていましたがcredential-helperを使ったクレデンシャル取得がうまくいきませんでした。

[remote "staging"]
    url = https://git-codecommit.us-east-1.amazonaws.com/v1/repos/your_repos_staging

[credential "staging"]    
    helper = !aws --region us-east-1 --profile your_staging_profile credential-helper $@
    UseHttpPath = true

[remote "production"]
    url = https://git-codecommit.us-east-1.amazonaws.com/v1/repos/your_repos_production

[credential "production"]    
    helper = !aws --region us-east-1 --profile your_production_profile credential-helper $@
    UseHttpPath = true

(上記の設定でリポジトリにアクセスするにはstaging, productionを片方づつコメントアウトする必要がありました)

参考