
【AWS】Git→Codecommitへの移行(clone)手順(Windowsクライアント)
本稿では、CodeCommit側にある資産をローカルにcloneするところまでを纏めています。
前書き
オンプレに構築されたGitlab(Githubのクローン)を使って運用しているソース管理リポジトリをクラウドへ移行したい。
移行先として、以下が考えられる。
#1.AWS上に、Gitlabの環境を構築する方法
#2.AWSのCodecommitを利用する方法
#1の場合、GitlabはEC2インスタンスを立ち上げて構築する必要があるが、開発用ツールのインスタンスを立ち上げっぱなしにするのは好ましくない。
また、その都度使う時だけ立ち上げるようにするもの非効率。
#2の場合、GitlabのようなWebインターフェースはないので、オンプレに慣れている身としては使い勝手は悪いが、今後の事を考えるとCodecommitを使った方がよいとのことで、今回は「GitからCodecommitに移行する」事とする。
本稿は、WindowsクライアントからHTTPSを使ってCodeCommitへ移行する手順です。
前提1.「AWS CodeCommitのHTTPS Git認証情報」を生成していること
「AWSコンソールへログイン」>「IAM」>「ユーザー」>「自身のユーザー名」>「セキュリティ認証情報」
※生成されていない場合は生成する。

参考資料
前提2.Developer > CodeCommitが生成されている事
「CodeCommitと入力」>「CodeCommitを選択」

「デベロッパー用ツール」>「CodeCommit」>「リポジトリ」欄に、リポジトリを作成していなければ、作成してください。

手順1.GitをWindowsにインストールする
インストールするだけでOKです。GitBashは起動しなくてOKです。

手順2.クローンするフォルダをWindows内に作り、コマンドプロンプトを起動する
例)C:\gitCodeCommit など
作ったらそこでコマンドプロンプトを起動する。

手順3.クローン用URLをコピーして、Gitコマンドを打つ
【コマンド】
git clone https://★/repos/XXX yyy
「yyy」は、クローンする先のディレクトリ名(フォルダ名)です。
「★」はAWS側CodeCommit画面でコピーしたURLです。(下記図参照)

コマンドを打つとこのようになります。

補足.この時に403エラーとなった場合
※403エラーは、認証エラーです。
Cloning into 'test' …
fatal: unable to access https://XXXXXXXXXXXX The requested URL returnd error: 403
補足1.CloudTrailで不足している権限がないかを確認(あれば付与すること)
下記のように、「errorMessage」内に不足している権限があれば、そのロールを追加する。下記の例だと、「codecommit:GitPull」が不足していることが伺えます。
{
"eventVersion"1.0.8,
"userIdentity": {],
"eventSource": "codecommit.amazonaws.com",
"eventName": "GitPull",
"errorCode": "AccessDenied",
"errorMessage": "User: arn:aws:iam::000000000:user/XXXXXX is not authorized to perform: codecommit:GitPull on .....",
:
}
参考資料
補足2.confidentials helperを使う
補足1のようにロール権限を付与してもまだ同様の403エラーが出る場合は、クライアントからの接続の際IAMユーザの権限でアクセスしてしまうことでエラーになっている可能性があります。
その場合は、confidentials helperを活用していきます。
詳しい設定方法は下記記事をご覧ください。
credentials helperを設定したら、改めてGitCloneコマンドを打ちます。

すると、このようにcloneが成功します。
cloneしたフォルダには何も入っていない空なので「empty repository」という警告が出ていますが、下記の通りクローン先フォルダにはちゃんとコピーされているので、問題はありません。

補足3.Git Credential Managerを突破できない場合
コマンドプロンプトで「git clone https://~~~~」を打った後、このようにGCMが立ち上がることがあります。

そしてここに正しい認証IDを入れたのにもかかわらず「403」となってしまうことがあります。
その場合は、立ち上がったGCMを消します。そうすると下記のようになるので、MFA認証コードを入力すると、正常に通過できます。
C:\user>git clone https://★/repos/XXX yyy
(ここでGCMが立ち上がるが閉じる)
fatal: User cancelled dialog.
Enter MFA code for arn:aws:iam::000000:mfa/UserName:
となるので、WinAuthなど多要素認証時に登録したMFAアプリを開き、6桁のコードを入力しましょう。
参考資料
正常にクローンが行なわれたので、作業は完了です。
ローカルにある資産をCodeCommit側に転送する手順は、また別の記事にまとめようと思います。
その他参考になった資料
AWS公式|AWS CodeCommit 認証情報ヘルパーを使用して Windows で AWS CLI リポジトリへの HTTPS 接続をセットアップする手順
AWS CodeCommitへの接続方法一覧(2024年度版)
⇒本稿ではこの記事の「①https接続(Git認証情報)」で実施しています。