Git管理システムとしてAWSにはCodeCommitというサービスがあります。CodeCommitを使うと、Githubのように、レポジトリを開発者間で共有することが可能です。また、CodeCommitには、コミット後にLambdaなどを起動する機能がついています。この機能を使うことで、Push後に自動的にデプロイすることが可能となりとても便利です。本記事では、CodeCommitの基本的な使用方法を説明します。
クローンの際にHTTPSやSSHによる方法があります。ここでは両者の接続方法を説明しますが、SSH接続の方が安定しているのでおすすめです。
レポジトリ―の作成
AWSのマネージメントコンソールから、レポジトリを作成できます。下記の項目を設定します。
- レポジトリ名
- レポジトリの説明
- タグ
IAMグループ・ユーザーの作成
作成したレポジトリにアクセスできるユーザーの作成を行います。
IAMグループの作成
グループに対して以下のポリシーをアタッチしておきます。
- IAMReadOnlyAccess
- AWSCodeCommitFullAccess
IAMユーザーの作成
IAMユーザーを作成して、上記で作成したグループにいれておきます。AWS CLIからしか使わないので、「プログラムによるアクセス」を選択して作成します。
HTTPSによるアクセスの場合は、アクセスキーIDとシークレットアクセスキーは使用するので、メモしておきましょう。また、「AWS CodeCommit の HTTPS Git 認証情報」をGitクローンする際に使用します。こちらも新規生成して、記憶しておきましょう。
SSHの場合は、アクセスキーIDとシークレットアクセスキーを使用しないので削除しておきます。
SSHでCodeCommitレポジトリに接続する
SSHでは、公開鍵と秘密鍵を生成し、公開鍵をサーバー側、秘密鍵をクライアント側にもっておきます。接続の際は、サーバーが公開鍵で暗号化した内容をクライアント側の秘密鍵で解くことで接続を許可します。そのため、秘密鍵はだれにもしられずに保管する必要があります。
まずは公開鍵と秘密鍵を生成します。power-shellで以下のように命令を実行します。
ssh-keygen
はじめに鍵の名前を聞かれます。次にパスフレーズという設定したいパスワードが聞かれます。なしでも構いませんが、パスワードを設定した方がセキュリティは向上します。実行すると、デフォルト名ならidrsaとidrsa.pubファイルが生成されます。id_rsa.pubが公開鍵なのでこちらをサーバー側に送ります。
AWSのユーザーへ移動し、AWS CodeCommitのSSHキーにid_rsa.pubの内容をコピペしてアップロードします。ステータスがアクティブになれば、登録完了です。この際、SSHキーIDが表示されるので、記憶しておきます。これで公開鍵の設定は完了です。
続いて秘密鍵id_rsaを用いて、CodeCommitに接続します。そのために、「.ssh」フォルダにconfigファイルを作成します。
Host git-codecommit.*.amazonaws.com
User (SSHキーID)
IdentityFile ~/.ssh/id_rsa
あとは、レポジトリから、sshのURLを取得してクローンを行います。
git clone ssh://git-codecommit.ap-northeast-1.amazonaws.com/...
HTTPSでCodeCommitレポジトリに接続する
HTTPSを用いてクローンを行うことも可能です。AWS CLIを用いてCodeCommitに接続します。以下が終わっていることを前提に話を進めます。
- Gitがインストールされている
- AWS CLIがインストールされている
AWS CLIの設定
作成したIAMユーザーで入れるようになっておきます。下記の命令を実行します。
$ aws configure --profile CodeCommitUser
以下のように記述します。
- AWS Access Key ID:IAMユーザー作成時に取得したもの
- AWS Secret Access Key:IAMユーザー作成時に取得したもの
- Default region name:ap-northeast-1
- Default output format:json
Gitの設定でAWS CLIを使えるようにしておきます。
$ git config --global credential.helper '!aws --region ap-northeast-1 --profile CodeCommitUser codecommit credential-helper $@'
$ git config --global credential.UseHttpPath true
最後にGitクローンを行いレポジトリをクローンします。
$ git clone https://....
認証情報を聞かれるので、IAMユーザー作成時に生成した認証情報を入力します。