はじめに
IAM Identiy Center利用環境下で、メンバーアカウントのCodeCommitのリポジトリをクローンしてみました。
IAM Identiy Center利用環境下で、CodeCommitのリポジトリをクライアント端末にクローンする場合、IAMユーザーの永続的な認証情報であるアクセスキーを使うのではなく、IAM Identity Centerから払い出される一時的な認証情報を利用する方がよいです。
今回は、AWS CLIからIAM Identity Centerとの認証後にCodeCommitのリポジトリをクローンする手順をまとめました。
事前設定
- IAM Identiy Centerの設定
- IAM Identiy Centerは設定済み
- 許可セットは、CodeCommitを利用するメンバーアカウントに対して、
AWSAdministratorAccess
権限をユーザーに割り当てます - AWSアクセスポータルのURLとリージョンをコピーしておきます
- クライアント端末に、AWS CLI V2をインストール済み
メンバーアカウントでリポジトリを作成
メンバーアカウントで、CodeCommitのリポジトリを作成します。
リポジトリ内にtest.txt
ファイルを追加しておきます。
IAM Identity Centerにログイン
クライアント端末のターミナルで、AWS CLIでIAM Identity Centerにログインします
$ aws configure sso
SSO session name (Recommended): なんでもよいですが、SSOログイン時のユーザー名を推奨(今回は、cm-ssoにしました)
SSO start URL [None]: https://d-xxxxxxxx.awsapps.com/start(IAM Identity CenterポータルページURL)
SSO region [None]: ap-northeast-1
SSO registration scopes [sso:account:access]: 何も入力せずEnter
Attempting to automatically open the SSO authorization page in your default browser.
If the browser does not open or you wish to use a different device to authorize this request, open the following URL:
https://device.sso.ap-northeast-1.amazonaws.com/
Then enter the code:
XLVN-XBWS
最後にXLVN-XBWS
という一時的なコードが出力された後、ブラウザに強制遷移されます。
ターミナルのXLVN-XBWS
というコードと、ブラウザのコードが同一であることを確認し、Confirm and continue
をクリックします。
ユーザー名、パスワード、MFAコードを入力します。
Allowをクリックすると、ターミナルに戻ります。
下記の中から、CodeCommitのアカウントIDとユーザー名を選択します。許可セットが1つであれば、選択せずに次に進みます。
There are 3 AWS accounts available to you.
> ユーザー名, メールアドレス (アカウントID)
ユーザー名, メールアドレス (アカウントID)
ユーザー名, メールアドレス (アカウントID)
選択したアカウントの許可セットを選択します(今回はAWSAdministratorAccess
を選択)。許可セットが1つであれば、選択せずに次に進みます。
There are 2 AWS accounts available to you.
Using the account ID アカウントID
There are 2 roles available to you.
> ReadOnly
AWSAdministratorAccess
CLI default client Region [None]:ap-northeast-1
CLI default output format [None]:そのままエンター
CLI profile name [AWSAdministratorAccess-アカウントID]:そのままでもよい
To use this profile, specify the profile name using --profile, as shown:
aws s3 ls --profile プロファイル名(AWSAdministratorAccess-アカウントID)
最後のメッセージにコマンド例がありましたので、問題なく実行されるか確認してみましょう。
$ aws s3 ls --profile プロファイル名(AWSAdministratorAccess-アカウントID)
ターミナルの/.aws/config
にプロファイルが作成されていました。
$ cat ~/.aws/config
[profile AWSAdministratorAccess-アカウントID]
sso_session = cm-sso
sso_account_id = アカウントID
sso_role_name = AWSAdministratorAccess(SSO session nameで付けた名前です)
region = ap-northeast-1
//IAM Identity Centerの設定
[sso-session cm-sso]
sso_start_url = https://d-xxxxxxxx.awsapps.com/start
sso_region = ap-northeast-1
sso_registration_scopes = sso:account:access
クライアント端末にリポジトリをクローン
AWSが提供する、CodeCommitリポジトリにアクセス可能なコマンドラインツールであるgit-remote-codecommitをインストールします。
$ pip install git-remote-codecommit
// もしくは
$ pip3 install git-remote-codecommit
下記のコマンドでリポジトリをクローンできます。
$ git clone codecommit://プロファイル名@リポジトリ名 ローカルの保存パス
// プロファイルにリージョンを指定していない場合
$ git clone codecommit::ap-northeast-1://プロファイル名@リポジトリ名 ローカルに保存するパスと新規ディレクトリ名
//実際に実行した内容
$ git clone codecommit://AWSAdministratorAccess-アカウントID@cm-hirai cm-hirai-repo
Cloning into 'cm-hirai'...
remote: Counting objects: 3, done.
Unpacking objects: 100% (3/3), 187 bytes | 93.00 KiB/s, done.
$ ls cm-hirai-repo
test.txt
リポジトリをクローンできました!
IAM Identity Centerに再ログイン
再ログインする際は、下記のコマンドを実行し、同じように進めるだけです。
$ aws sso login --profile プロファイル名(AWSAdministratorAccess-アカウントID)
Attempting to automatically open the SSO authorization page in your default browser.
If the browser does not open or you wish to use a different device to authorize this request, open the following URL:
https://device.sso.ap-northeast-1.amazonaws.com/
Then enter the code:
NFWL-LJKL