CodeCommitとは
AWSが提供するマネージド型のソース管理サービス。
Git の標準機能がサポートされており、Git からの移行が容易。
また、CodeCommitのリポジトリとGitHubやGitLabのリポジトリをミラーリングすることも可能。
#CodeCommitへのリポジトリ作成手順
- AWSマネジメントコンソールからCodeCommitのコンソールへアクセスする。
-
リポジトリの作成
を押下する。
- 以下の情報を入力して、
作成
を押下する。
リポジトリ名:任意の文字列
説明 :任意の文字列
タグ :任意
- 自動的にリポジトリのページに遷移し、
成功
と表示されれば作成完了。
CodeCommitへの接続方法
事前準備
ローカルのPCからCodeCommitのリポジトリに接続するためには、AWSマネジメントコンソール上でGit認証情報を作成する必要がある。
詳細は公式のガイドを参照。
その作成方法は以下。(IAMユーザの作成とGitのインストールは実施済みの前提です。)
ここでは、HTTPSで接続するための認証情報の作成方法を取り上げる。
- AWSマネジメントコンソールからIAMのコンソールへアクセスする。
- 対象のユーザの詳細画面に遷移し、
認証情報
タブからAWS CodeCommit の HTTPS Git 認証情報
の認証情報を生成
を押下する。
- 自動的に認証情報が生成されるため、表示された認証情報を控えるか、
証明書のダウンロード
を押下してcsvファイルとして保存する。
CodeCommitへの接続と操作
前述の事前準備が完了したら、通常のGi操作と同様にCodeCommitリポジトリに対しても git clone
や git commit
などを行うことができる。
初回の操作時に認証情報の入力を求められるため、事前準備で払い出した認証情報を入力すればよい。
GitHubとCodeCommitの連携方法
CodeCommitはGitHubやGitLabとミラーリングを行うことが可能。
ここでは、GitHubとのミラーリングについて説明する。
設定手順
GitHubとのミラーリングを行うための設定手順を示す。
大まかな流れとしては、
- SSHキーの作成
- AWSへの公開鍵の登録
- GitHubリポジトリのSecrets設定
- GitHub Actionsの設定
となる。
SSHキーの作成とAWSへの公開鍵の登録
以下のコマンドを実行して、SSHキーを作成する。
パスフレーズは必ず空で作成する。
ssh-keygen -t rsa -b 4096 -C "GitHubアカウントのメールアドレス"
SSHキーを作成したら、IAMのコンソールから対象のIAMユーザに公開鍵を紐付ける。
AWS CodeCommit の SSH キー
の SSH パブリックキーのアップロード
から、作成したXXX_rsa.pubの中身をアップロードする。
GitHubリポジトリへのSecrets設定
ミラーリングにはGitHub Actionsを使用するため、GitHubのActions secretsに以下の2つを設定しておく。
変数名は任意。
- SSH秘密鍵
Name:CODECOMMIT_SSH_PRIVATE_KEY
Value:SSHキー秘密鍵(作成したXXX_rsa)の内容を貼り付ける - SSHキーID
Name:CODECOMMIT_SSH_PRIVATE_KEY_ID
Value:SSHキーID(公開鍵をAWSに紐付けた際に表示されたSSHキーID[APKA…])
GitHub Actionsの設定
Secretsの設定まで完了したら、GitHubリポジトリにGitHub Actionsのワークフローを登録する。
.github/workflows/main.yml
を作成し、以下の内容で保存する。
name: Mirroring
on: [ push, delete ]
jobs:
to_codecommit:
runs-on: ubuntu-18.04
steps:
- uses: actions/checkout@v1
- uses: pixta-dev/repository-mirroring-action@v1
with:
target_repo_url:
ssh://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/xxxxx
ssh_private_key:
${{ secrets.CODECOMMIT_SSH_PRIVATE_KEY }}
ssh_username:
${{ secrets.CODECOMMIT_SSH_PRIVATE_KEY_ID }}
target_repo_url
の値は、対象のCodeCommitリポジトリのSSH URLに変更する。
これにより、GitHubへのプッシュを契機としてCodeCommitへのミラーリングが自動的に行われるようになる。