既存のCodeCommitリポジトリをリポジトリローカルな認証情報設定でダウンロードしたい時のメモ

2019.01.29

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

サーバーレス開発部の阿部です。

チームで複数の案件が走っている関係上、いろんなプロジェクトのリポジトリを参照することがあります。場合によってはGithubではなく、CodeCommitを使うケースがあったりして、このようなドキュメントを参照したりすることもあります。

クロスアカウントアクセス: AccountB のリポジトリユーザー用アクション

ただし、ご覧いただいてお分かりの通り、このドキュメントでは認証設定をグローバルに保持しています。このやり方だとリポジトリごとにGithubにもGitBucketにもアクセスしたいとなった場合に面倒です。というかデフォルトはGithubにしたい。

というわけで、リポジトリローカルな認証情報を設定してリポジトリをダウンロードする手順をメモしておきました。

事前準備

まずは、プロファイルを作成しましょう。弊社の環境はMFA必須でAssumeRoleですので、下記記事を参照すればまず間違いはありません。

AWS CLIがAssumeRoleによる自動クレデンシャル取得とMFAに対応しました!

認証情報はローカルにしたい

gitはリポジトリローカルに認証情報を設定できますが、そのためには当たり前ですがローカルリポジトリを先に作る必要があります。

mkdir hoge; cd $_
git init

このリポジトリに対してCodeCommitの認証情報をローカルで設定します。

git config --local user.name "cm-abe.shinsuke"
git config --local user.email "abe.shinsuke@classmethod"
git config --local credential.helper "!aws codecommit credential-helper --profile [事前準備で作ったプロファイル] $@"
git config --local credential.UseHttpPath true

リモートリポジトリを紐づける

このようにローカルリポジトリを先に作ってしまうとこのディレクトリには git clone でリポジトリの内容をダウンロードすることはできません。 そのため、対象となるCodeCommitのリポジトリをリモートリポジトリとして設定して、fetchします。

git remote add origin [追加したいリモートリポジトリのURL]
git fetch

これで、ローカルにリモートリポジトリの最新情報が反映されているので、あとは git checkout コマンドを使って必要なものを同期しましょう。