GitリポジトリとしてAWS CodeCommitを使う

  • 3
    いいね
  • 0
    コメント

Gitでソース管理をするにあたって、AWSにも CodeCommit というGitリポジトリを作れるサービスがあります。実際にリポジトリを作ってsshで接続できるようにするまでのメモです。

AWS CodeCommit

AWS CodeCommit は、完全マネージド型ソースコントロールサービスで、安全で非常にスケーラブルなプライベート Git リポジトリを簡単にホスティングできます。
Amazon CodeCommit(安全でスケーラブルなマネージド型ソースコントロールサービス) | AWS

料金

アクティブユーザが5人まで

  • 無料
  • 特典
    • 無制限のリポジトリ
    • 50 GB のストレージ/月
    • 10,000 回 のGitリクエスト/月

アクティブユーザが6人以上

  • 1 USD/月
  • 特典
    • 無制限のリポジトリ
    • アクティブユーザーごとに 10 GB のストレージ/月
    • アクティブユーザーごとに 2000 回 の Git リクエスト/月

つまり、個人で作ったコードを管理する分には、ほぼ無料の範囲内で利用できます。月に10,000回もgitリクエストを投げることは無いと思うので..。

仮に10,000回を超えたとしても、0.001 USD/Gitリクエスト なので大した料金にはならないでしょう。
ストレージについても、超過分については 0.06 USD/GB となっています。

類似サービスとの比較

類似のGitホスティングサービスとしては、Web上で利用できる GitHub や、サーバにインストールして使用する Gogs などがありますが、それらとの比較を簡単に書きます。(個人で使用する前提です)

  • 料金がほぼ無料(GitHubはプライベートリポジトリを作成する場合 $7/月)
  • 導入が簡単(GitHubは説明がEnglish、Gogsはサーバ(PC)へのインストールが必要)
  • プルリクエスト機能がない(GitHub、Gogs共に有り)

この他、Commit履歴の可視化や、タグ・ブランチの管理など、基本的な操作はGUIでできます。

AWS特有の機能としては、ブランチへのpushなどのイベントをトリガーとして、アラートを飛ばしたり、Lambda関数を実行できたりします。

リポジトリを作成してssh接続できるようにするまでの手順

sc 2017-09-21 14.02.22.png
今すぐ始める をクリック。

sc 2017-09-21 14.02.27.png

リポジトリ名 と 説明 を入力して リポジトリの作成 をクリック。

sc 2017-09-21 14.03.31.png

これでリポジトリが作成されました。
次の画面ではhttpssshそれぞれでの接続方法が書かれているので、この通りに準備をしていきます。

まず、ssh接続用のキーペアを生成します。既にキーペアを持っている場合は、新たに生成する必要はありません。
ここからはターミナルでの操作になります。(Macでの例です)

$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/hogehoge/.ssh/id_rsa): /Users/hogehoge/.ssh/codecommit_rsa  ;;;任意のパス、名前を指定します
Enter passphrase (empty for no passphrase): ;;;任意のパスフレーズを入力します
Enter same passphrase again: ;;;任意のパスフレーズを再度入力します
Your identification has been saved in /Users/hogehoge/.ssh/codecommit_rsa.
Your public key has been saved in /Users/hogehoge/.ssh/codecommit_rsa.pub.
The key fingerprint is:
SHA256:Ha6ETkhmC7muDZmmxzZk8DgRi7XZMpMU8khj4f3qzuQ hogehoge@HOGEHOGE.local
The key's randomart image is:
+---[RSA 2048]----+
|  o .+oo         |
| ..o..+. o       |
|.B.++ ..*        |
|O E..= + .       |
|.X... o S        |
|+. +   o         |
| .B +   .        |
|.o =oo           |
| .++ooo.         |
+----[SHA256]-----+

これでキーペアが生成されるので、パブリックキーの値をコピーします。

$ cat ~/.ssh/codecommit_rsa.pub
ssh-rsa AAAAB3NzaCino3r4aa2GpYkIpjzJAOOO8VcZw6eYfJr9RmdDNMS2/qcEk1yc2EAAAADAQABAAABAQDe0jBpJOHTSGuWRLmJT3s7RwGXw3rV56D4BDOasaCz24m3HxA8oXtRLsUZmiAf+LODBpoLPxWuBKfH/n1aseCByrmHV3FXhAHqH2v33EgrEeYm07xB1RifJHn5oXfCDpssfKVGd25FBslDgzjBElDjA+BRRGVI3lkitl2su19AtGa9b/jzj6UtdAc7msuR5ZM+MP/8jnq2zuc2YtMopt/YXdMAYuo1T0y6atVDmCqirSXE0+ITezFwzIEiximRkQHtO2B4CzJE9LF6kSD5RfLY9r0XHWcc+RpuO+QlD hogehoge@HOGEHOGE.local

AWS マネジメントコンソールに戻って、IAMの画面を表示します。
既存(または新規)のIAMユーザに対して、CodeCommitへのSSH接続キーを設定します。

IAM > ユーザー > {ユーザ選択} > 認証情報
sc 2017-09-21 14.19.34.png

sc 2017-09-21 14.19.40.png

先ほどコピーした ~/.ssh/codecommit_rsa.pub の内容を貼り付けて、SSH公開キーのアップロード をクリックします。

sc 2017-09-21 14.42.22.png

すると、赤枠の部分に SSHキーIDが表示されているので、これをコピーします。

ここから、再度ターミナルでの作業になります。

$ vi ~/.ssh/config 
Host git-codecommit.*.amazonaws.com
        User AAAAAAAAAAAAAA ;;;コピーした SSHキーID を記載
        IdentityFile ~/.ssh/codecommit_rsa ;;;先ほど生成したプライベートキーへのパス

ここまでで、sshの設定は完了です。
あとはpushするなりpullするなりcloneするなり、普段通りGitコマンドを叩いてください。