JumpアカウントにIAMユーザーでログインして、スイッチロール先のCodeCommitにアクセスする方法です。
JumpアカウントのIAMユーザーにはMFAを有効化しています。
このような状況だとGRC(git-remote-codecommit)を用いると簡単にCodeCommitからcloneできます。
前提
- Gitはインストール済み
- Pythonはインストール済み
- AWS CLIはインストール済み
- MFAを有効化したIAMユーザーとスイッチロール先のIAMロールは作成済み
- CodeCommitリポジトリは作成済み(ここでは「sample」リポジトリにしています)
GRCのインストール
pipを利用してGRCをインストールします。
pip install git-remote-codecommit
詳細は以下のURLを参照してください。
https://docs.aws.amazon.com/ja_jp/codecommit/latest/userguide/setting-up-git-remote-codecommit.html
AWS CLIのプロファイル設定
プロファイル(configファイルとcredentialsファイル)を直接修正します。
[default]
region = ap-northeast-1
output = json
[profile codecommit-profile]
role_arn = arn:aws:iam::YYYYYYYYYYYY:role/codecommit-role
source_profile = default
mfa_serial = arn:aws:iam::XXXXXXXXXXXX:mfa/ninja-yuki
- role_arnは、スイッチロール先のIAMロールのARNです。
- mfa_serialは、マネジメントコンソールでIAMユーザーの「セキュリティ認証情報」から確認できます。
[default]
aws_access_key_id = AAAAAAAAAAAAAAAAAAAA
aws_secret_access_key = BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
- aws_access_key_idとaws_secret_access_keyは、自身の値に変更してください。
プロファイルの場所は以下のURLを参考にしてみてください。
https://docs.aws.amazon.com/sdkref/latest/guide/file-location.html
GRCコマンドの確認
マネジメントコンソールでCodeCommitを開き、「URLのクローン」から「HTTPSのクローン(GRC)」をクリックします。
すると、「codecommit::ap-northeast-1://sample」が表示されます。
スイッチロールをしなければあとは「git clone codecommit::ap-northeast-1://sample」で、cloneできます。
GRCでcloneの実行
スイッチロールを伴う場合、profileを指定する必要があります。
git clone codecommit::ap-northeast-1://codecommit-profile@sample
VSCodeのGUIでGitの操作をする
VSCodeのターミナルでgitコマンドを実行すると、MFAが求められます。
ターミナルでMFAを通すと、VSCodeのGUIを利用できます。
GUIで操作したら長時間固まって動かないことがあります。
そんなときはターミナル「git fetch」などを実行して、再認証すると動きます。
ただ、VSCodeを一度終了しないといけないです。
もしかしたら他にいい方法があるかもしれません。