AWS CodeCommitからGitHubへの移行方法をまとめてみた
こんにちは!クラウド事業本部の吉田です。
2024年7月に、新規AWSアカウントでのCodeCommitの利用受付を終了しました。
2025年4月現在、CodeCommitのサービス終了はアナウンスされてはおりませんが、代替サービスへの移行が推奨されている状況です。
今回は、CodeCommitからGitHubへの移行方法を紹介させていただきます。
移行してみた
事前準備
- 移行元のCodeCommitリポジトリへのアクセス権限があるIAMユーザーの用意
- IAMユーザーにアタッチするポリシーは、AWSマネージドポリシーの「AWSCodeCommitReadOnly」か、移行元のリポジトリへのアクセス権限を持つカスタマーポリシーをアタッチしてください。
- 上記のIAMユーザーの HTTPS Git認証情報を取得
- IAMユーザーの詳細画面から、「セキュリティ認証情報」タブ→「AWS CodeCommit の HTTPS Git 認証情報」→「認証情報を生成」の順でHTTPS Git認証情報を取得できます。
- 生成されたユーザー・パスワードを控えておきます。
- (出来れば)CodeCommit利用時のGitユーザーの情報(ユーザー名・メールアドレス)で、GitHubアカウントの作成
GitHub Importerについて
今回紹介する移行方法は、GitHub Importerを利用した方法です。
GitHub Importerは、他のバージョン管理システム(VCS)からリポジトリを簡単に移行できる機能です。
移行元リポジトリのClone URLを指定するだけで、コードやコミット履歴を丸ごとGitHubへ移行できます。
保持される移行元の情報は以下の通りです。
- commit
- branch
- Actionsの実行履歴(移行元がGitHubの場合のみ)
参考記事:GitHub ImporterでRepositoryをImportした際に保持される情報を確認してみた
移行作業
- 移行元のCodeCommitリポジトリを選択し、「URLのクローン」から「HTTPSのクローン」をクリックして、CodeCommitリポジトリのHTTPSのClone URLを取得
- GitHubのコンソールのページ右上の「+」をクリックして、「Import repository」を選択
- 詳細画面で以下の情報を入力
- 移行元のリポジトリのClone URL
- CodeCommitリポジトリのHTTPSのClone URLを入力
- 移行元のリポジトリの認証情報
- IAMユーザーのHTTPS Git認証情報であるユーザー・パスワードを入力
- 新規作成するリポジトリ情報
- アカウントもしくはOrganization配下に作成する新規リポジトリ名と公開範囲を設定
- 移行元のリポジトリのClone URL
しばらく待つと移行完了メッセージが表示されます。
これで移行完了です。とても簡単です。
コミッターに関して
CodeCommit使用時のGitユーザーと同じメールアドレスでGitHubアカウントを作成していれば、CodeCommitで行ったコミットの作成者(以後コミッターと言います)とGitHubアカウントが自動的に関連付けられます。
具体例を出します。
下記のコミット履歴に表示されている「yoshida-takeshi-classmethod」は、GitHubアカウントと同一のユーザー名・メールアドレスでCodeCommitリポジトリにコミットしておりました。
このユーザー名にマウスカーソルを合わせると、GitHubアカウント情報がポップアップ表示されます。
これは、コミッターとGitHubアカウントが自動的に紐づけられていることを示しています。
ちなみにユーザー名はリンクとなっており、クリックするとそのユーザーが行ったコミット一覧が表示されます。
反対に、CodeCommit使用時のGitユーザーと同じメールアドレスでGitHubアカウントを作成していなければ、当然コミッターとGitHubアカウントと紐づけられることはありません。
「yoshida-test」というコミッターは、GitHubアカウントを作成していないメールアドレスでCodeCommitリポジトリにコミットしておりました。
アイコンは灰色で、ユーザー名にマウスカーソルを合わせても何も起きず、何もクリックできません。
ただしこの状態でも、CodeCommit使用時のGitユーザーと同じメールアドレスでGitHubアカウントを作成すれば、コミッターとGitHubアカウントが紐付けられます。
「yoshida-test」で使用していたメールアドレスでGitHubアカウントを作成したところ、無事コミッターとGitHubアカウントが紐付けられました。
なお、「yoshida-test」という名前は既に他のユーザーが使用していたため、「yoshida-test-codecommit」という名前でGitHubアカウントを作成しました。
それでも、メールアドレスが一致しているため、コミッターの名前は「yoshida-test」から「yoshida-test-codecommit」に自動的に更新されました。
最後に
CodeCommitがサービス終了するのか、サービス終了するとしたらいつまで利用可能なのか、まだ何もわかりません。
ただし、代替サービスへの移行を準備することに越したことはないと思います。
その検討の際にこの記事がお役に立てたのなら幸いです。
GitHubへの移行はGitHub Importerを利用する方法以外にも、Gitコマンドを利用する方法もあります。
Gitコマンドを利用する方法は、以下のAWS公式ブログの「他のリポジトリプロバイダへの一般的な移行方法」を参照してください。
AWS CodeCommit リポジトリを他の Git プロバイダーに移行する方法 | Amazon Web Services ブログ
以上、クラウド事業本部の吉田でした!