AWS CodeCommitでリポジトリを設定する方法

投稿者: | 2020-12-18

今回はAWS上でバージョン管理を行うことができるCodeCommitを使い、リポジトリを作成しコミット、プッシュができる状態までの設定方法を解説します。

CodeCommitとは

AWS Code Commitとは、AWS上でソースコードやファイルの更新履歴を管理することができるバージョン管理サービスです。

基本的な機能はGitやSubversion等のバージョン管理ツールと同じです。CodeCommitでリポジトリを作成し、リポジトリに対してコミットやプッシュ、プルを行いファイルを管理します。また、CodeCommitではコマンド操作だけではなく、GUI操作のバージョン管理やプルリクエストの承認ルールを設定することもできます。

CodeCommitは様々なAWSサービスと連携することができます。例えば、Code BuildやCode Deploy等と連携しCI/CD環境を構築することもできます。クラウド上でCI/CD環境を使用したいときだけ使用できるため、オンプレミスのリソース削減やコストの削減にも繋がります。

CodeCommitは利用ユーザーの数によって料金が変わります。最初の5ユーザーまでは無料で利用可能で、それ以上は1ユーザー追加ごとに月1USDが課金されます。

上記のことから、CodeCommitはAWS上でファイルのバージョン管理、CI/CD環境の統合等に便利なサービスとなっています。

リポジトリの作成

初めに、CodeCommitでリポジトリを作成します。CodeCommitのコンソール画面から「リポジトリを作成」をクリックします。

「リポジトリを作成」画面でリポジトリ名と説明文を入力し、「作成」ボタンをクリックします。今回はリポジトリ名を「test-repository」、説明文に「This is a test repository.」とします。

リポジトリが作成されたことを確認します。

CodeCommit用のIAMユーザー・グループの作成

リポジトリの作成後、CodeCommitで使用するIAMユーザーとグループを作成します。初めにIAMユーザーが所属するグループを作成します。IAMのコンソール画面の左側ペインから「グループ」を選択し、「新しいグループの作成」をクリックします。

「グループ名の設定」画面でグループ名を入力し、「次のステップ」をクリックします。今回はグループ名を「CodeCommitGroup」とします。

「ポリシーのアタッチ」画面でポリシータイプに「CodeCommit」と入力し、「AWSCodeCommitPowerUser」にチェックを入れて「次のステップ」をクリックします。

「確認画面」で入力内容に間違いがないことを確認し「グループの作成」をクリックします。

CodeCommitGroupが作成されたことを確認します。

IAMグループ作成後、CodeCommitで使用するユーザーを作成します。IAMのコンソール画面の左側ペインから「ユーザー」を選択し、「ユーザーを追加」をクリックします。

「ユーザー詳細の設定」画面で以下の内容で入力し「次のステップ:アクセス権限」をクリックします。

ユーザー名 test-user1
アクセスの種類 AWSマネジメントコンソールへのアクセスのみチェックを入れる
コンソールのパスワード カスタムパスワード
※パスワードは各自入力してください
パスワードのリセットが必要 チェックなし

「アクセス許可の設定」画面で先ほど作成した「CodeCommitGroup」にチェックを入れ「次のステップ:タグ」をクリックします。

「タグの追加(オプション)」画面は何も入力せず「次のステップ:確認」をクリックします。

「確認」画面で入力内容に間違いがないことを確認し「ユーザーの作成」をクリックします。

IAMユーザーが作成されたことを確認します。

今回はHTTPS認証を「test-user1」、SSH認証を「test-user2」で行います。両方の認証手順を試す方は同じ手順で「test-user2」を作成しておいてください。

HTTPS認証の設定

CodeCommitのリポジトリをクライアントPCから利用するためには、HTTPS認証かSSH認証の設定を行う必要があります。

ユーザー名とパスワードを使用したHTTPS認証の設定を行うには、IAMユーザーにAWS CodeCommitのGit認証情報を作成する必要があります。認証情報を作成するには、IAMのコンソール画面の左側ペインで「ユーザー」を選択し、認証を作成するユーザー名をクリックします。

「概要」画面で「認証情報」タブを選択後、「AWS CodeCommitのGit認証情報」の「認証情報を生成」をクリックします。

ユーザー名とパスワードが作成されます。「証明書のダウンロード」をクリックすると、ユーザー名とパスワードが記載されたCSVファイルをダウンロードできますので、事前にダウンロードしておきます。

以上でHTTPS認証の準備は完了です。

SSH認証の設定

CodeCommitでは、HTTPS認証以外に公開鍵と秘密鍵を使用したSSH認証もできます。今回はWindows 10のコマンドプロンプトを使用して鍵の生成から認証まで行います。

初めに、コマンドプロンプトを開き、ssh-keygenコマンドを実行し公開鍵と秘密鍵を生成します。

・公開鍵、秘密鍵を生成する
C:\Users\hogehoge > ssh-keygen
Generating public/private rsa key pair.

・鍵を保存するファイルを指定する、デフォルトは「.ssh」配下に保存される
Enter file in which to save the key (C:\Users\hogehoge/.ssh/id_rsa):

・パスフレーズを問われるため、パスフレーズを入力する
Enter passphrase (empty for no passphrase):

・入力したパスフレーズを再度求められるため入力する
Enter same passphrase again:
Your identification has been saved in C:\Users\hogehoge/.ssh/id_rsa.
Your public key has been saved in C:\Users\hogehoge/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:+Ao6mNoG5RBvjaUAulTpMaehQhyS+ErEulCjCObUdwI hogehoge@hogepc
The key's randomart image is:
+---[RSA 2048]----+
|BooEo            |
|OB+*.+ .         |
|@Oo*B o          |
|O=Bo.  .         |
|=B    . S        |
|+ .    .         |
| +  .   .        |
|o.o. . .         |
|o.o.  .          |
+----[SHA256]-----+

ssh-keygenコマンドで公開鍵と秘密鍵が生成されたことを確認します。

SSH鍵作成後、IAMユーザーに公開鍵を登録します。HTTPS認証と同様にIAMユーザーの「認証情報」タブから「AWS CodeCommit の SSH キー」の「SSHパブリックキーのアップロード」をクリックします。

登録画面が表示されるため、「id_rsa.pub」の内容を貼り付け「SSHパブリックキーのアップロード」をクリックします。

SSHキーIDが作成されたことを確認し、キーIDをメモしておきます。

SSHパブリックキーのアップロード後、.sshフォルダに「config」というファイルを作成し、以下の内容を設定します。UserにはSSHキーID、IdentityFileは秘密鍵のパスを設定します。

■config
------------------------------------------------------------
Host git-codecommit.*.amazonaws.com
User APKAWXR5DQJV6NPTKMHS
IdentityFile ~/.ssh/id_rsa
------------------------------------------------------------

configファイル設定後、SSHの接続確認を行います。

・SSHの接続確認をする
C:\Users\hogehoge > ssh git-codecommit.ap-northeast-1.amazonaws.com

The authenticity of host 'git-codecommit.ap-northeast-1.amazonaws.com (52.119.220.10)' can't be established.
RSA key fingerprint is SHA256:Xk/WeYD/K/bnBybzhiuu4dWpBJtXPf7E30jHU7se4Ow.

・フィンガープリントを求められるためyesを入力する
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'git-codecommit.ap-northeast-1.amazonaws.com,52.119.220.10' (RSA) to the list of known hosts.

・SSH鍵のパスフレーズを求められるため、パスフレーズを入力する
Enter passphrase for key 'C:\Users\shirotanmofumofu/.ssh/id_rsa':

You have successfully authenticated over SSH. You can use Git to interact with AWS CodeCommit. Interactive shells are not supported.Connection to git-codecommit.ap-northeast-1.amazonaws.com closed by remote host.
Connection to git-codecommit.ap-northeast-1.amazonaws.com closed.

※参考
sshコマンドで「Bad owner or permissions on …」とエラーが表示された場合、configファイルのアクセス権限を所有者のみに設定し再度実行してください。

以上でSSH鍵を用いた認証の準備は完了です。

リポジトリのクローン、ファイルの作成

認証の準備後、CodeCommitのリポジトリをクローンします。今回はGitコマンドを使用するため、Gitをまだインストールしていない方は以下のリンクよりGitをインストールしておいてください。

■HTTPS認証の場合

HTTPS認証の場合、CodeCommitのコンソール画面から作成したリポジトリを開き「git clone」コマンドをコピーします。

コピー後、コマンドプロンプトで実行します。資格情報を求められるため事前にダウンロードしたCSVの資格情報を入力します。

資格情報入力後、コマンドを実行したパスにtest-repositoryフォルダが作成されたことを確認します。

■SSH認証の場合

SSH鍵の認証も同様にCodeCommitのコンソール画面から作成したリポジトリを開き「git clone」コマンドをコピーします。

コピー後、コマンドプロンプトで実行します。パスフレーズを求められるため、秘密鍵のパスフレーズを入力します。

・SSH用のgit cloneコマンドを実行する
C:\Users\hogehoge > git clone ssh://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/test-repository 
Cloning into 'test-repository'...

・パスフレーズを求められるため入力する
Enter passphrase for key '/c/Users/shirotanmofumofu/.ssh/id_rsa':

パスフレーズ入力後、コマンドを実行したパスにtest-repositoryフォルダが作成されたことを確認します。

■共通作業

リポジトリ作成後、test-repository内にコミット、プルのテスト用テキストファイルを作成し、適当な内容を入力しておきます。

リポジトリへのコミット、プッシュ

リポジトリのクローン、テスト用ファイル作成の完了後、リポジトリ内のファイルをコミット、プルします。

・リポジトリのファイルをステージングエリアに移動しコミットする
C:\Users\hogehoge > git add test.txt
C:\Users\hogehoge > git commit -m "test commit"

・コミットしたファイルをリポジトリにプッシュする
C:\Users\hogehoge > git push

プッシュ後、CodeCommitでtest-repositoryを確認し、作成したテキストファイルが表示されていることを確認します。