👋

【AWS】CodeCommitリポジトリ作成

2021/07/26に公開

CodeCommitとは

プライベートのGitリポジトリをホストする、AWSのマネージドソース管理サービスである。
マネージドサービスのため、ユーザによるソース管理システムのスケーリングや、インフラの管理をする必要がなくなる。
Gitベースのため、Git標準のコマンドを使用することができる。
codecommitの裏で動いているサービスとして以下の3つのAWSサービスが動いている。

  • S3: GitオブジェクトはS3で管理
  • DynamoDB: GitインデックスはDynamoDBで管理
  • KMS: 暗号化キーはAWS KMSで管理

CodeCommitの特徴

  • マネージドサービスのため、ソフトウェアのアップデートなどの管理・運用する必要がない。
  • ソースコード保管時、データ転送時に暗号化される。
  • S3のスケーラビリティ、可用性を担保している。
  • Pull Requestやコミット時のメール送信など多くのサポートを搭載。
  • 任意のGitベースのリポジトリからCodeCommitへの移行が簡単に可能。

CodeCommitリポジトリ作成まで

  1. CodeCommit用IAMユーザの作成
    CodeCommitのリポジトリにアクセスするためのIAMユーザを作成する。
    複数人でチーム開発をする場合は、人数分のIAMユーザを作成しなければならない。
    IAMのマネジメントコンソールからアクセス管理->ユーザーをクリック
    altマネジメントコンソール

ユーザの追加をクリック
altユーザ追加

以下のキャプチャの用に、任意のユーザ名を入力(ここでは、codecommit-user01を入力)、アクセスの種類は「プログラムによるアクセス」と「AWSマネジメントコンソールへのアクセス」両方にチェックを入れた。コンソールのパスワード、パスワードのリセットは任意で設定する。
altユーザ追加設定

IAMポリシーは「既存のポリシーを直接アタッチ」を選択し、「AWSCodeCommitPowerUser」を選択する。
altIAMポリシー設定

入力した内容に間違いがないかを確認し、IAMユーザを作成する。
alt設定確認

  1. gitのインストール
    すでにローカル環境にはインストール済みのため、バージョンの確認のみにとどめる。
    インストールしていない方は、gitをインストールすること。
$ git --version
git version 2.28.0
  1. CodeCommitへのアクセス設定
    CodeCommitへアクセスするためには以下の方法がある。今回はCodeCommitのHTTPS接続でGit認証情報を設定する方法で説明する。
  • CodeCommitのHTTPS接続でGit認証情報を設定する ⭐️
  • SSH接続(IAMとSSHキーを紐付ける)
  • git-remote-codecommit(IAMのクレデンシャルを利用する)
  • 開発ツールからの接続(AWS ToolKilを利用する)

作成したIAMユーザにGit認証情報を作成する。
IAMユーザから「codecommit-user01」を選択し、AWS CodeCommitのHTTPS Git認証情報から「認証情報の生成」をクリックする。codecommitへ接続するための、ユーザ名とパスワードが発行されるので、メモするかCSVファイルをダウンロードする。
※IAMユーザ作成時と同様に一度しかユーザ名とパスワードの情報を保存する機会がないので、きちんとメモしておくこと。
altgit認証情報

  1. CodeCommitリポジトリの作成・クローン
  • マネジメントコンソールからCodeCommitに移動し、リポジトリの作成をクリック。
    altCodeCommitマネジメントコンソール

  • リポジトリ名や、説明などを入力し、リポジトリを作成する。ここでは、リポジトリ名・説明を「test-repo」に設定する。
    altリポジトリ作成

  • リポジトリ上で、テストファイルを作成することで、mainブランチが作成される。ここでは、「test.txt」をローカルからアップロードし、「作成者名」、「Eメールアドレス」、「コミットメッセージ」を入力し「変更のコミット」をクリックする。
    altテストファイルを配置
    altテストファイルをコミット

  • リポジトリのクローンURLをコピーし、ローカル環境でgit cloneコマンドを実行。

$ git clone https://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/test-repo
Cloning into 'test-repo'...
※ここでcodecommit認証情報のユーザ名とパスワードを入力
warning: You appear to have cloned an empty repository.
リポジトリのクローンに成功
$ ls -ltra test-repo/
total 0
drwxr-xr-x@ 7 xxxxxxxxxxxxxx  xxxxx  224  7 26 08:03 .git
drwxr-xr-x@ 5 xxxxxxxxxxxxxx  xxxxx  160  7 26 08:03 ..
drwxr-xr-x@ 3 xxxxxxxxxxxxxx  xxxxx   96  7 26 08:03 .
$ git branch -a
* main
  remotes/origin/HEAD -> origin/main
  remotes/origin/main
  • ファイルを作成し、コミットしてみる。
$ touch first-commit.txt
$ git add first-commit.txt 
$ git status
On branch main
Your branch is up to date with 'origin/main'.

Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        new file:   first-commit.txt

$ git commit -m "first-commit" first-commit.txt 
[main e2f40e8] first-commit
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 first-commit.txt
$ git push origin mainEnumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Delta compression using up to 8 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 251 bytes | 251.00 KiB/s, done.
Total 2 (delta 0), reused 0 (delta 0), pack-reused 0
To https://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/test-repo
   f7163cc..e2f40e8  main -> main
$ 
  • 作成したリポジトリに対して、ローカルで作成したファイルがpushされていることを確認。
    altfirst-commit

CodeCommitの料金

CodeCommitの料金体系は以下の通り。個人で利用する分には無料で使用することができる。

最初の5アクティブユーザまで 5人を超えるアクティブユーザ(1人当たり)
無料 1ドル/月
無制限のリポジトリ数 無制限のリポジトリ数
月に50GBのストレージ 月に10GBのストレージ/ユーザ
10000Gitリクエスト数/月 2000Gitリクエスト/月/ユーザ

Discussion