AWS CodeCommit から GitHub へリポジトリを移行する

AWS

2024.10.18

Topics

はじめに

こんにちは、Paseri です!

2024年7月頃から「AWS CodeCommit」に対して利用履歴のないアカウントからの新規リポジトリの作成ができなくなりました。
(今までCodeCommitを利用してきた既存のアカウントへの影響はありません。)
現状サービス終了の予定は公表されていませんが、今後サービスの縮退の可能性から不安に感じている方もいるのではないでしょうか?

なので今回は、「AWS CodeCommit のリポジトリを GitHub へ移行する方法」と作業していて躓いた項目をご紹介いたします!

公式アナウンス(AWSブログ)

以下は、AWS公式ブログを翻訳したものです。
こちらの記事にて「新規顧客アクセスを終了することを決定しました。」と明記されています。

(Deepl翻訳)
慎重に検討した結果、2024年7月25日をもってAWS CodeCommitへの新規顧客のアクセスを終了することを決定しました。AWS CodeCommitの既存のお客様は、通常通りサービスをご利用いただけます。AWSは、AWS CodeCommitのセキュリティ、可用性、パフォーマンス向上のための投資を継続しますが、新しい機能を導入する予定はありません。
AWS CodeCommit リポジトリを別の Git プロバイダーに移行する方法 | AWS DevOps と開発者生産性ブログ

AWS CodeCommit とは?

CodeCommit は、AWS 上でソースコードやドキュメントを保管することのできるサービスです。
他に有名なソースコードを管理するサービスとして「GitHub」があります。
上記で述べたようにCodeCommitは現状縮退の可能性があるため、「GitHub」へ利用を移行しようというのが本記事の目的となります。

AWS CodeCommit は、プライベート Git リポジトリをホストする、非常にスケーラブルなマネージド型のソース管理サービスです。 お客様はリポジトリを作成してコードを保存するだけです。 プロビジョニングしたりスケールしたりするハードウェアはなく、インストール、設定、操作するソフトウェアはありません。
AWS 公式資料AWS CodeCommitの特徴 | AWS

前提

Gitのインストール

今回の手順ではCodeCommitのリポジトリからローカルPC(Git)にクローンしてGitHubへプッシュする方法で行います。
ですのでGitの準備をお願いいたします。

以下のリンクからダウンロードすることができます。
Git – パッケージのダウンロード

CodeCommitの準備

今回移行するCodeCommitのリポジトリを準備しておきます。
とても簡単にですがファイルも格納しておきました。

GitHubの準備

CodeCommitからの移動先となるリポジトリをGitHub側に作成しておきます。
当然こちらのリポジトリは空の状態になっています。
これからこのリポジトリへ移動させる作業を行います。

手順

簡単な移行手順の流れとしては、以下の様になります。
1. CodeCommit のリポジトリをローカルのPCにクローン
2. リモートリポジトリの指定場所を変更
3. GitHub のリポジトリへプッシュ

IAMユーザーの準備

CodeCommitのリポジトリをクローンする際にGitに認証情報を求められるためあらかじめ準備しておきます。

IAMユーザーを作成しました。
許可ポリシーには「AWSCodeCommitReadOnly」のみ追加してます。

「セキュリティ認証情報」タブにある「AWS CodeCommit の HTTPS Git 認証情報」から認証情報を生成を選択します。

すると「ユーザー名」と「パスワード」が生成されますので忘れずに控えておきましょう。

CodeCommitからリポジトリをクローンする

では準備ができましたので本格的に作業を行っていきます。

CodeCommitのリポジトリから「URLのクローン」タブでHTTPSを選択しコピーしておきます。

Git上で以下の様にコピーしてきたURLをクローンします。

$ git clone <コピーしたHTTPS URL>

上記Gitコマンドを実行することで、画像のように認証情報を求められるので先ほど控えたユーザー名とパスワードを入力します。

認証がうまく通れば画像の様にダウンロードが走ります。
もしうまくいかない場合はIAMのポリシー等を見直してみてください。

リモートリポジトリの変更

クローンしたフォルダへ移動しリモートリポジトリの変更を行います。
変更する前にリポジトリを確認するとオリジンがCodeCommitのままの設定になっているのでこの部分をGitHubのリポジトリに変更します。

$ cd <CodeCommitのリポジトリ名>
$ git remote -v

一旦GitHubの画面へ移動し、HTTPS URLをコピーして控えておきます。

リモートリポジトリを変更するために一旦削除。
次にコピーしたGitHubのURLを追加します。
再度リモートリポジトリを確認してみるとGitHubのリポジトリに変更できていると思います。

$ git remote remove origin
$ git remote add origin <コピーしたGitHubのHTTPS URL>
$ git remote -v

GitHubへプッシュ…できない!

mainブランチを作成して最後のプッシュしたら終わり!
と思ったらエラーが出てしまいました。。。

$ git branch -M main
$ git push -u origin main

どうやら設定でメールアドレスを非公開にしてブロックしていたため、プッシュするユーザーのメールアドレスを検知し今回のエラーが出たようです。

remote: error: GH007: Your push would publish a private email address.
remote: You can make your email public or disable this protection by visiting:

訳(DeepL):
remote: エラー: GH007: プッシュするとプライベートなメールアドレスが公開されます。
リモート あなたの電子メールを公開したり、この保護を無効にするには、次のサイトにアクセスしてください:

GitHubのメール設定
↓以下のページから設定できます。
https://github.com/settings/emails

ですがGitHubの設定を変更したくないのでGitの方でプライベートメールアドレスを設定して対処します。

Authorのメールアドレスを変更する

Authorとは「コードを書いた人」のことです。今回だとCodeCommitのリポジトリにファイルを追加した人が当たります。
この人の情報を変更してあげれば今回のエラーは解消します。

まずは確認。
< >の中にあるメールアドレスですね。このメールアドレスは現在ブロックされている状態にあります。

$ git log

GitHubのメール設定の画面から “6桁の数字+メールアドレス” を控えておきます。

先にConfigの設定を変更してからAuthorの設定変更を行います。

```
$ git config --local user.name <任意のユーザー名>
$ git config --local user.email <6桁の数字+メールアドレス>
$ git commit --amend --author="<任意のユーザー名><6桁の数字+メールアドレス>"
※エディタが開きますが :wq で保存して終了して大丈夫です。
```

再度確認してみると無事メールアドレスが変更されていました。

もう一度プッシュしてみると無事処理が完了しました。

GitHubの方も確認してみるとCodeCommitに管理していたファイルが移動できていました。
以上で作業は終了です。

まとめ

今回はCodeCommitのリポジトリをGitHubへ移行する方法を紹介させて頂きました!
また私が実際に検証していて躓いたポイントも合わせて説明させて頂きました。

実行するコマンドはさほど多くは無いのですがGitの認証や今回の様にメールアドレスなどで躓くと原因の特定が大変ですよね。
すこしでもお役に立てば幸いです!

最後までお読み頂きありがとうございました!

テックブログ新着情報のほか、AWSやGoogle Cloudに関するお役立ち情報を配信中!

Paseri

2024年新卒入社。うどん好きな初心者クラウドエンジニア。

Recommends

こちらもおすすめ

Special Topics

注目記事はこちら