GitのGUIクライアントであるSourcetreeと、AWSのリポジトリサービスであるAWS CodeCommitを組み合わせてソースコードを管理する方法をまとめました。
結論から書くと、2024年7月25日以降、CodeCommitに既存のリポジトリを持たないAWSアカウントでは新しいリポジトリを作成できません。これから新しくソースコード管理の環境を作るなら、GitHubやGitLabを選ぶことになります。
すでにCodeCommitを使っているアカウントは、これまでどおり利用できます。この記事では、まず現在の提供状況を整理したうえで、既存利用者向けのSourcetree連携手順と、これから始める人向けの代替サービスを書きます。
スポンサーリンク
AWS CodeCommitは2024年7月25日から新規利用ができない
結論:AWSは2024年7月25日にCodeCommitの新規顧客の受け付けを終了しました。この日より前にCodeCommitでリポジトリを作ったことがあるアカウントだけが、引き続き新しいリポジトリを作成できます。
| アカウントの状態 | できること |
|---|---|
| 2024年7月25日より前にリポジトリを作成済み | 既存リポジトリの利用・新規リポジトリの作成とも可能 |
| CodeCommitを使ったことがない/新規に作成したAWSアカウント | リポジトリを作成できない |
AWSは既存利用者に対して、セキュリティ・可用性・パフォーマンスの改善は継続すると説明していますが、新機能の追加予定はないとしています。サービス自体の終了日は公表されていません。
未経験のアカウントで管理画面からリポジトリを作ろうとすると、権限エラーのような形で失敗します。IAMの設定を疑いがちですが、原因は権限ではなくアカウントが新規利用の対象外であることです。
これから始めるならどのサービスを選ぶか
結論:個人開発や小規模チームならGitHub、AWSに寄せたいならAmazon CodeCatalystが現実的な選択肢です。
| サービス | 向いている場面 | 備考 |
|---|---|---|
| GitHub | 個人開発・OSS・一般的なチーム開発 | プライベートリポジトリも無料枠で作成可能 |
| GitLab | CI/CDまで1つに寄せたい場合 | セルフホスト版がある |
| Amazon CodeCatalyst | AWSのサービス群と統合したい場合 | AWSがCodeCommitの代替として案内している |
SourcetreeはどのサービスでもGitクライアントとして使えます。接続先が変わるだけで、コミットやプッシュの操作は同じです。GitHubのプライベートリポジトリを扱う手順はSourcetreeでGitHubのプライベートリポジトリをクローンする方法【トークン認証】にまとめています。
スポンサーリンク
Sourcetreeのインストールとセットアップ
結論:SourcetreeはAtlassianが無料で配布しているGit・MercurialのGUIクライアントで、WindowsとmacOSに対応しています。
Sourcetree公式サイトからインストーラーをダウンロードして実行します。初回起動時にAtlassianアカウントでのログインを求められます。
インストール後、コミットに使う名前とメールアドレスを設定します。ここが未設定だとコミットできません。
- macOS:メニューバーの「Sourcetree」→「設定」→「一般」
- Windows:「ツール」→「オプション」→「一般」
Gitコマンドを直接使わずに、変更内容の差分を見ながらコミットを組み立てられるのがSourcetreeの利点です。
CodeCommitに接続するための認証情報を作る
結論:SourcetreeからHTTPSでCodeCommitに接続するには、IAMユーザーの「AWS CodeCommit の HTTPS Git 認証情報」を生成します。AWSのログインパスワードは使えません。
手順は次のとおりです。
- AWSマネジメントコンソールでIAMを開く
- 接続に使うIAMユーザーを選び、「セキュリティ認証情報」タブを開く
- 「AWS CodeCommit の HTTPS Git 認証情報」で「認証情報を生成」を押す
- 表示されたユーザー名とパスワードを控える(パスワードはこの画面でしか表示されない)
このIAMユーザーにはAWSCodeCommitPowerUserなどのポリシーが必要です。ポリシーが付いていないと、認証は通ってもリポジトリの一覧が取得できません。
生成したパスワードは再表示できません。控え忘れた場合は、いったん削除して生成し直してください。
スポンサーリンク
リポジトリをSourcetreeにクローンする
結論:CodeCommitの管理画面で表示されるHTTPSのURLをSourcetreeの「Clone」に貼り付け、前の手順で作ったHTTPS Git認証情報でログインします。
URLはhttps://git-codecommit.リージョン名.amazonaws.com/v1/repos/リポジトリ名という形式です。CodeCommitの管理画面でリポジトリを開き、「URLのクローン」から取得できます。
- Sourcetreeで「新規」→「URLからクローン」を選ぶ
- ソースURLにCodeCommitのHTTPS URLを貼る
- 保存先のローカルディレクトリを指定する
- ユーザー名とパスワードを求められたら、HTTPS Git認証情報を入力する
URLを貼った時点で「これは有効なソースパス/URLではありません」と出る場合は、リージョン名かリポジトリ名の綴りを確認してください。
変更をコミットしてプッシュする
結論:変更したファイルをステージに上げ、コミットメッセージを書いてコミットし、「プッシュ」でリモートに反映します。
Sourcetreeの画面は上下に分かれていて、上が「Unstaged files(未ステージのファイル)」、下が「Staged files(ステージ済みのファイル)」です。
- ステージに上げる:ファイル名の左のチェックボックスを入れるか、選択して「Stage Selected」を押す
- コミットする:下部の入力欄にメッセージを書き、「コミット」を押す
- 反映する:ツールバーの「プッシュ」を押し、対象ブランチを選ぶ
- 取り込む:他の人の変更は「プル」で取得する
コミットはローカルのリポジトリに記録されるだけです。プッシュするまでCodeCommit側には何も反映されません。ここはGitのGUIクライアント全般に共通する動きです。
CodeCommitから他のサービスへ移すには
結論:ミラークローンを作って移行先にプッシュすれば、コミット履歴とブランチをそのまま移せます。
git clone --mirror https://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/リポジトリ名
cd リポジトリ名.git
git push --mirror https://github.com/ユーザー名/リポジトリ名.git
--mirrorを付けると、すべてのブランチとタグが対象になります。移行後は、ローカルのリポジトリでgit remote set-url origin 新しいURLを実行して参照先を切り替えてください。
移行の前に、CodeCommit側に置いていたビルド設定やWebhookの向き先も確認しておく必要があります。