【AWS】CodeCommitとGitHubをミラーリングしてみる

こんにちは

 

今回はGitHubとCodeCommitをミラーリングしてみたので、備忘録としてここに残しておきます。

なお、方法としてSSHを用いるものと、IAMロール + OIDC を利用するものの2つありますが、今回は比較的簡単な前者にて実装しました。

(もし時間があればOIDCのほうもやってみようかなと思います

 

■前提

・CodeCommitを利用するCI/CD環境が存在する

・GitHubリポジトリを作成済み

 

■流れ

1.  IAMユーザーの作成

2. SSHキーのアップロード

3. GitHub上でsecretの登録

4. GitHub Actions の作成

5. ミラーリングの実施

 

■手順

1.  IAMユーザーの作成

まずはAWSコンソール上でIAMユーザーを作成します

名前はなんでもOKですが、IAMポリシーで  AWSCodeCommitFullAccess などのCodeCommitを実行する操作権限を付与します

 

2. SSHキーのアップロード

・ローカルなどでSSHキーを作成します

※2026/03時点では ed25519 方式だとAWSの登録時にエラーとなったので注意が必要です

ssh-keygen -f ~/.ssh/codecommit_github_mirroring

→ /home/ログインユーザー/.ssh 配下に codecommit_github_mirroring の名前で作成します(codecommit_github_mirroring.pubも同時に作成されます)

 

ls -la

→ codecommit_github_mirroring と codecommit_github_mirroring.pub が作成されていればOKです

 

・AWSコンソール上で作成した公開鍵を登録します

IAM > ユーザー > ユーザー名 > セキュリティ認証情報 > AWS CodeCommit の SSH 公開キー > SSH 公開キーのアップロード を押下して、公開鍵を貼り付けます

→ 登録後、SSH公開キーがアップロードされた旨のメッセージが表示されればOKです

 

・SSH キー ID は後ほど利用するのでメモしておきましょう

 

3. GitHub上でsecretの登録

・GitHub上で作成した 秘密鍵 と SSHキーID を登録します

リポジトリ名 > Actions secrets and variables > Actions > New Repository Secret を押下し、下記情報を記入します

 

秘密鍵用

Name:CODECOMMIT_SSH_PRIVATE_KEY

Secret:codecommit_github_mirroring の中身を貼り付ける

 

SSH キー ID用

Name:CODECOMMIT_SSH_PRIVATE_KEY_ID

Secret:SSHキーID

 

→ 登録後、画面上にそれぞれ存在することを確認します

 

4. GitHub Actions の作成

こちらに従いGitHub Actionsの定義ファイルを作成します

 

階層は下記のようにプロジェクトのルートディレクトリ直下に作成します

ルートディレクトリ
 └ .github
      └ workflows
      └ main.yml

 

main.yml

※参照元では ubuntu-latest を指定していましたが、実行の度にどのバージョンを指定するか分からないので、今回はあえてバージョンを指定しています

name: Mirroring

on: [ push, delete ]

jobs:
  to_codecommit:
    runs-on: ubuntu-22.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/<codecommit_repository_name>
          ssh_private_key:
            ${{ secrets.CODECOMMIT_SSH_PRIVATE_KEY }}
          ssh_username:
            ${{ secrets.CODECOMMIT_SSH_PRIVATE_KEY_ID }}

→ secrets.CODECOMMIT_SSH_PRIVATE_KEY と secrets.CODECOMMIT_SSH_PRIVATE_KEY_ID でGitHub 上に登録した情報を指定しています

 

5. ミラーリングの実施

・GitHubeへプッシュし、ミラーリングが実行されることを確認します

→ 下記の画像のようにGitHub上で実行が成功しており、CodeCommit側のレポジトリ上にコードが反映されていれば成功です

 

■まとめ

いかがでしたでしょうか?

ミラーリングを利用する機会はそこまで多くはないと思いますが、一度やってみるとそこまで難しくなかったです。

また、これらの技術を知っているのといないのでは、提案力に大きな差が出るとも感じたので、今回やってみてよかったです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA