Amazon CodeCommitは、プライベートGitリポジトリをホスティングするAWSのマネージドサービスです。先日、複数の友人からCodeCommitについて質問されたので、情報の整理もかねて、利用手順を整理していきます。他にも、分かりやすい解説ブログはあるのですが、手順の最初から最後までが書かれているものが見つからないので、AWSにそれほど慣れてない方でも使用できるように、なるべく丁寧に書いていきたいと思います。分かりにくい部分などありましたら追記しますので、ぜひコメントいただければと思います。
- リポジトリの作成
- 作成したリポジトリを
git clone
する(HTTPS編) - 作成したリポジトリを
git clone
する(SSH編)
Amazon CodeCommitでのリポジトリの作成方法
リポジトリは非常に簡単に作成することができます。まず、CodeCommitの画面に遷移します。
初めてアクセスしたときは、上記のような画面になると思います。ここでは「今すぐ始める」としてください。すると、下記のようなリポジトリ作成画面に遷移します。
ここでは、「CodeCommit-Sample」というリポジトリを作成します。「リポジトリの作成」ボタンを押下してください。以上で、リポジトリの作成が完了です。簡単ですね。
HTTPSでCodeCommitリポジトリに接続する
CodeCommitを初めて使う方は、git clone
時につまずく方が多いようです。GitHubなどの他のGitサービスに比べて、接続までの手順が1手2手多いことが原因のようです。CodeCommitでは、HTTPS方式
と SSH方式
のふたつの方式でリポジトリに接続することができます。ここではまず、HTTPS方式
について説明していきます。
HTTPS
方式はIAMユーザのアクセスキー、シークレットキーを利用して接続する方式です。普段からAWS CLIを用いている方は、こちらの方式の方が簡単だと思います。
前提
- gitがインストールされている
- AWS CLIがインストールされている
IAMユーザを作成する
まず、リポジトリに接続できる権限を持つIAMユーザを作成します。CodeCommit関連の権限と、IAMの一部権限が必要になります。IAMユーザは、IAM > ユーザ > ユーザを追加
と遷移することで作成することができます。ここでは、CodeCommitUser
というIAMユーザを作成します。
次のページでIAMユーザの権限を設定します。既存のポリシーを直接アタッチ
から下記のポリシーをアタッチしてください。
- AWSCodeCommitPowerUser
- IAMSelfManageServiceSpecificCredentials
- IAMReadOnlyAccess
ユーザを作成すると、下記のようにアクセスキー、シークレットキーが表示されます。次の手順で必要になるので、控えておいてください。
AWS CLIの設定
続いて、CodeCommitUserのアクセスキー、シークレットキーを入力します。--profile
コマンドでプロファイル名をつけることにします。先ほど作成したIAMユーザのアクセスキーとシークレットキーを入力してください。リージョンは、東京リージョンを示すap-northeast-1
としていますが、利用するリージョンが他リージョンであれば、適宜変更してください。
$ aws configure --profile CodeCommitUser AWS Access Key ID [None]: AKIA****(ご自身のものを入力してください) AWS Secret Access Key [None]: pnjT****(ご自身のものを入力してください) Default region name [None]: ap-northeast-1 Default output format [None]: json
認証ヘルパーの設定をする
続いて、gitの認証ヘルパーの設定を行います。CodeCommitUser
となっている部分は、先ほどaws configure
コマンドで指定したプロファイル名を指定してください。
$ git config --global credential.helper '!aws --region ap-northeast-1 --profile CodeCommitUser codecommit credential-helper $@' $ git config --global credential.UseHttpPath true
git cloneする
ここまでで準備完了です。git clone
コマンドを実行してみてください。
$ git clone https://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/CodeCommit-Sample Cloning into 'CodeCommit-Sample'... warning: You appear to have cloned an empty repository.
SSHでCodeCommitリポジトリに接続する
続いて、SSHキーを作ってCodeCommitに接続する手順を見ていきます。
SSHの秘密鍵&公開鍵を作成する
ssh-keygen
コマンドで、秘密鍵と公開鍵を作成します
$ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/Users/**/.ssh/id_rsa): 【Enter】 Enter passphrase (empty for no passphrase): 【Enter】 Enter same passphrase again: 【Enter】 Your identification has been saved in /Users/**/.ssh/id_rsa. Your public key has been saved in /Users/**/.ssh/id_rsa.pub. The key fingerprint is: SHA256:UqU2xePE4h66R1czb3HPCam8OVXYBaYUzzjSN/r7eV4 **@**-no-MacBook-Air.local The key's randomart image is: +---[RSA 2048]----+ | oo o.o. | .. 省略 +----[SHA256]-----+ $ ll .ssh/ | grep id -rw------- 1 ** staff 1679 9 23 08:47 id_rsa -rw-r--r-- 1 ** staff 417 9 23 08:47 id_rsa.pub
秘密鍵は、適当な名前に変えてあげるといいでしょう。
$ mv .ssh/id_rsa .ssh/codecommit-sample
公開鍵をIAMユーザに紐付ける
作成した公開鍵をIAMユーザに紐付けます。 まず、公開鍵のテキストをコピーしてください。
$ cat .ssh/id_rsa.pub ssh-rsa AAAAB3NzaC1(省略)
コピーした公開鍵をIAMユーザに紐付けます。
IAM > ユーザ > アップロード対象のユーザを選択 > 認証情報 > SSH公開鍵のアップロード
を選択すると、下記のようなダイアログが表示されるので、こちらに先ほどのテキストを貼り付けましょう。
下記のようにSSHキーIDが表示されればOKです。 このIDはローカルPCの設定で必要になるので控えておいてください。
ローカル環境のSSH設定を行う
.ssh/config
ファイルに、下記の情報を書き込みます。
User には先ほどのSSHキーIDを書き込みます。
Host はリージョンによって変わるので注意が必要です。
Host git-codecommit.ap-northeast-1.amazonaws.com User APK*** (SSHキーID) IdentityFile ~/.ssh/codecommit-sample
最後に Git Clone できるか確認します。
$ git clone ssh://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/CodeCommit-Sample Cloning into 'CodeCommit-Sample'... warning: You appear to have cloned an empty repository.
うまくいっているようです。
まとめ
CodeCommit は、数クリックで Git リポジトリを作成してくれる非常に便利なサービスです。 また、他のCode*サービスとの連携も豊富で、マネージドなCI/CD環境を作る際の起点となるサービスです。
あとは、GitHub や Bitbucket のように Pull Request の機能がつくとなおありがたいです。 AWSさんの今後のアップデートに期待です。
(2017/12/16追記)Pull Request 機能がリリースされました!