概要
【初心者向け】AWS Code シリーズ徹底入門 - ② AWS CodeCommit 編 です。
本記事では、AWS CodeCommit の機能について、マネジメントコンソールを実際に触りながら整理していきます。
機能一覧
リポジトリ
簡単に言えば、コードを管理する箱のようなものです。
クォーターはアカウント単位で 4,000 となります。
実際に使ってみましょう。
CodeCommit サービスページにて Create repository をクリックします。

リポジトリの名前を入力します。その他設定はオプションです。
リポジトリ内のデータは、デフォルトで AWS KMS により暗号化 されます。
AWS マネージドキー or カスタマーマネージドキー から選択可能 です。
CodeGuru Reviewer に関しては、前回の記事で記載の通り新規受付を終了しているのでチェックは付けません。

接続方式
接続方式は以下 3 つです。
- HTTPS
- SSH
- HTTPS - git-remote-codecommit (GRC)
それぞれ実際に試していきましょう。
以下条件として進めていきます。
- ローカル端末:MacOS
- Git version: 2.50.1
- aws-cli/2.32.10 Python/3.13.9 Darwin/24.6.0 exe/arm64
HTTPS
まず、IAMユーザーが必要 となりますので作成します。
マネジメントコンソールアクセスは不要なのでチェックは入れません。

権限は、AWSマネージドポリシーである AWSCodeCommitPowerUser をアタッチします。
次のレビュー画面に遷移し、作成を実行します。

- 正直この権限は範囲も広く、不要な権限も含まれるため、実際は絞ることをおすすめします
- また、リポジトリの暗号化にカスタマーマネージドキーを利用している場合は、KMSに対する権限も必要となります
続いて、HTTPS接続用の認証情報を作成します。
先程作成したユーザーページの Security credentials タブを選択し、画面をスクロールすると HTTPS Git credentials for AWS CodeCommit 欄があるので Create credentials をクリックします。


クリックすると作成したクレデンシャル情報が表示されますので Download credentials をクリックします。

- このポップアップを閉じると、二度とクレデンシャル情報を確認できなくなるので、ダウンロードしたクレデンシャルファイルは大切に保管してください
準備が完了したので、実際にローカルPCから接続していきます。
CodeCommit のリポジトリページで、接続対象リポジトリの Clone URL 欄に記載のある HTTPS リンクをクリックして接続URLをコピーします。

ローカルPCのターミナルで以下コマンドを実行し、リポジトリをクローンします。
# URLは適宜置き換えてください
$ git clone https://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/project-a-repository
上記コマンドを実行すると、ユーザー名とパスワードを求められるため、先程作成した認証情報をそれぞれ入力します。


実際にリモートリポジトリにpushしていきます。
その前に、最低限のGit設定をします。
以下コマンドを実行して、ユーザー名とメールアドレスを設定します。
今回はプロジェクト内で有効な情報とします。
# ユーザー名及びメールアドレスは適宜置き換えてください
$ git config --local user.name "hoge"
$ git config --local user.email "hoge@example.com"
ファイルを作成し、pushします。
$ echo "first commit" > test.txt
$ git add test.txt
$ git commit -m "first commit"
$ git push origin main
マネジメントコンソールで確認すると、先程のファイルがリポジトリに存在するのが確認できます。

SSH
SSH接続に関しても、HTTPS接続と同様にIAMユーザーが必要となります。
IAM ポリシーも同様となるため、先程作成したIAMユーザー を利用します。
SSH接続では、別途SSHキーも必要となるため、公開鍵/秘密鍵のペアを作成します。
以下コマンドを実行して作成します。
$ ssh-keygen -t rsa -b 2048
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/hoge/.ssh/id_rsa): /Users/hoge/.ssh/test
Enter passphrase for "/Users/hoge/.ssh/test" (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/hoge/.ssh/test
Your public key has been saved in /Users/hoge/.ssh/test.pub
The key fingerprint is:
SHA256:EyfebFpA3dq/UAJulWjaNE+XMwwBLsFLyWzC8yoh3XI hoge@hoge.local
The key's randomart image is:
+---[RSA 2048]----+
| . +oo.+o= . |
| +.BoB = * |
| . . *=BoO . o |
| . + E.+O= + . |
| . + .S.= + |
| . . = . . |
| . . . . |
| . |
| |
+----[SHA256]-----+
- ED25519 はサポートされていないので RSA としています
先程作成したユーザーページの Security credentials タブを選択し、画面をスクロールすると SSH public keys for AWS CodeCommit 欄があるので SSH public key をクリックします。


先程生成した、公開鍵の値を貼り付けて Upload SSH public key をクリックします。

アップロードが完了すると、SSH Key ID が表示されるため控えておきます。

.ssh フォルダ配下に config ファイルを作成し、以下記述を追加します。
作成した秘密鍵は、chmod 600 で所有者だけに読み取り・書き込み権限を付与します。
Host git-codecommit.*.amazonaws.com
User 先程控えたSSHKeyID
IdentityFile ~/.ssh/作成した秘密鍵ファイル名
-
Hostには CodeCommit の接続先エンドポイントを指定しています -
*になっていますが、ここはリージョン名が入ります - CodeCommit はリージョナルサービスなので、
*とすることで同一ユーザークレデンシャルを用いて各リージョンのリポジトリと接続できるようにしていると推測します
準備が完了したので、実際にローカルPCから接続していきます。
CodeCommit のリポジトリページで、接続対象リポジトリの Clone URL 欄に記載のある SSH リンクをクリックして接続URLをコピーします。

ローカルPCのターミナルで以下コマンドを実行し、リポジトリをクローンします。
初回接続時は信頼性を確認されますので yes と入力し Enter を押下します。
# URLは適宜置き換えてください
$ git clone ssh://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/project-a-repository
Cloning into 'project-a-repository'...
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.
This key is not known by any other names.
+ Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'git-codecommit.ap-northeast-1.amazonaws.com' (RSA) to the list of known hosts.
remote: Counting objects: 3, done.
Receiving objects: 100% (3/3), 215 bytes | 107.00 KiB/s, done.
実際にリモートリポジトリにpushしていきます。
その前に、最低限のGit設定をします。
以下コマンドを実行して、ユーザー名とメールアドレスを設定します。
今回はプロジェクト内で有効な情報とします。
# ユーザー名及びメールアドレスは適宜置き換えてください
$ git config --local user.name "hoge_ssh"
$ git config --local user.email "hoge_ssh@example.com"
ファイルを作成し、pushします。
$ echo "ssh commit" > test_ssh.txt
$ git add test_ssh.txt
$ git commit -m "ssh commit"
$ git push origin main
マネジメントコンソールで確認すると、先程のファイルがリポジトリに存在するのが確認できます。

HTTPS - git-remote-codecommit (GRC)
HTTPS (GRC) 接続に関しても、HTTPS接続及びSSH接続と同様にIAMユーザーが必要となります。
IAM ポリシーも同様となるため、先程作成したIAMユーザー を利用します。
HTTPS (GRC) 接続では、別途アクセスキーID/シークレットアクセスキーが必要となるため作成します。
先程作成したユーザーページの Security credentials タブを選択し、画面をスクロールすると Access keys 欄があるので Create access key をクリックします。


適当なユースケースを選択し、画面下部の同意欄にチェックを入れ、次の画面に遷移し Create access key をクリックします。


作成したアクセスキーID/シークレットアクセスキーが表示されますので Download .csv file をクリックします。

- このポップアップを閉じると、二度とアクセスキーID/シークレットアクセスキー情報を確認できなくなるので、ダウンロードしたクレデンシャルファイルは大切に保管してください
ローカルPCのターミナルで以下コマンドを実行し、先程のIAMユーザーのプロファイルを作成します。
プロファイル名は任意ですが、今回は指定します。
デフォルトリージョンは、今回の検証ではCodeCommitリポジトリを東京リージョンに作成しているので ap-northeast-1 としています。
$ aws configure --profile codecommit
AWS Access Key ID [None]: 先程作成したアクセスキーID
AWS Secret Access Key [None]: 先程作成したシークレットアクセスキー
Default region name [None]: ap-northeast-1
Default output format [None]: json
続いて、Git側の認証設定をしていきます。
方法は以下 2 つのどちらかです。
- AWS CLI 認証情報ヘルパー
-
git-remote-codecommitツールを利用する
以下理由から今回は git-remote-codecommit ツールを採用します。
- AWS CLI 認証情報ヘルパーだと
gitconfigのグローバル設定が必要 -
git-remote-codecommitだと、AWS CLI のプロファイルのみで完結する
以下コマンドを実行し、git-remote-codecommit をインストールします。
$ pip install git-remote-codecommit
もしくは
$ brew install git-remote-codecommit
準備が完了したので、実際にローカルPCから接続していきます。
CodeCommit のリポジトリページで、接続対象リポジトリの Clone URL 欄に記載のある HTTPS (GRC) リンクをクリックして接続URLをコピーします。

ローカルPCのターミナルで以下コマンドを実行し、リポジトリをクローンします。
# URLは適宜置き換えてください
# @ の前に先程作成したプロファイル名に置き換えてください
$ git clone codecommit::ap-northeast-1://<先程作成したプロファイル名>@project-a-repository
- 上記URLのリポジトリ名の前に
AWS CLIのプロファイル名@を追加しています - これにより、リポジトリへの認証情報を認識させています
- ここを省略すると、
Defaultプロファイルが読み込まれますので、今回の手順で行くと失敗します
実際にリモートリポジトリにpushしていきます。
その前に、最低限のGit設定をします。
以下コマンドを実行して、ユーザー名とメールアドレスを設定します。
今回はプロジェクト内で有効な情報とします。
# ユーザー名及びメールアドレスは適宜置き換えてください
$ git config --local user.name "hoge_grc"
$ git config --local user.email "hoge_grc@example.com"
ファイルを作成し、pushします。
$ echo "grc commit" > test_grc.txt
$ git add test_grc.txt
$ git commit -m "grc commit"
$ git push origin main
マネジメントコンソールで確認すると、先程のファイルがリポジトリに存在するのが確認できます。

リポジトリ操作
先程若干触れましたが、リポジトリ操作(ファイル操作)に関しては、Git互換のため、CLI操作はGitと変わりはありません。
もちろん、マネジメントコンソールからも操作可能となります。
ただし、プルリクエストをCLIから実行する場合は、aws cli を使うため異なります。
通知
該当リポジトリに対する特定のイベントが発生した際に、以下 3 つのターゲットへ通知を送信することができます。
- SNS
- Slack
- Microsoft Teams
トリガー
指定のブランチ (or 全てのブランチ) に対して、指定のイベントが発生した際に、以下 2 つのターゲットにイベントを送信することができます。
- SNS
- Lambda
承認ルール
承認ルールは、CodeCommit全体に適用するものです。
もちろん、設定次第で特定のリポジトリ や 特定のブランチ のみとすることも可能です。
この機能は、プルリクエストに対する承認を設けるためのものです。


上記設定項目の Approval pool members を指定することで、指定したユーザーの承認がなければプルリクエストをマージすることができなくなります。
ガードレール的な役割を果たしてくれます。
ちなみに、承認ルールがある場合、自分が出したプルリクエストは自分自身で承認することができません。
まとめ(全体像)
おわりに
次回は AWS CodeBuild 編 です!
🌟この記事が誰かの役に立てば幸いです!
また、ご質問やフィードバックもお待ちしています。










