IAM Identity Center のユーザー・グループの名前からIDを取得するCLIコマンド

2023.07.03

AWSのマルチアカウント管理で役立つノウハウ、 [マルチアカウントTIPS] をお届けします。

今回は IAM Identity Center 周りの運用効率化です。

IAM Identity Center 周りの操作を CLI/SDKで行う際に、 何かとユーザーIDやグループIDが必要になってきます。 これらIDはランダムで長い文字列です。

img

img

これらIDをユーザーフレンドリーな情報(名前やメールアドレス)から取得する方法を紹介します。

前提

IAM Identity Center の独自IDストア上で試した結果を紹介します。

また、以下環境のCloudShell上で動作するbashスクリプトを記載していきます。

$ aws --version
aws-cli/2.12.3 Python/3.11.4 Linux/4.14.255-314-253.539.amzn2.x86_64 exec-env/CloudShell exe/x86_64.amzn.2 prompt/off

ユーザー名からユーザーIDを取得する

ユーザーIDは get-user-id で取得できます。 --alternate-identifier オプションに代わりの識別子(ユーザー名もしくはメールアドレス)を指定します。

以下、サンプルスクリプトです。

USER_NAME="kurameso.taro"

##### 以降編集不要
STORE_ID=$(aws sso-admin list-instances --query "Instances[0].IdentityStoreId" --output text --no-paginate)
USER_ID=$(aws identitystore get-user-id --output text \
  --identity-store-id "${STORE_ID}" \
  --alternate-identifier "{\"UniqueAttribute\":{\"AttributePath\":\"userName\",\"AttributeValue\":\"${USER_NAME}\"}}" \
  --query "UserId")
echo "user_name(${USER_NAME}) ID: ${USER_ID}"
# 出力サンプル: user_name(kurameso.taro) ID: f123456-80f1-70c1-b66c-example

ユーザーのメールアドレスからユーザーIDを取得する

同じく get-user-id で取得します。

以下、サンプルスクリプトです。

USER_EMAIL="kawahara.masahiro@classmethod.jp"

##### 以降編集不要
STORE_ID=$(aws sso-admin list-instances --query "Instances[0].IdentityStoreId" --output text --no-paginate)
USER_ID=$(aws identitystore get-user-id --output text \
  --identity-store-id "${STORE_ID}" \
  --alternate-identifier "{\"UniqueAttribute\":{\"AttributePath\":\"emails.value\",\"AttributeValue\":\"${USER_EMAIL}\"}}" \
  --query "UserId")
echo "e_mail(${USER_EMAIL}) ID: ${USER_ID}"
# 出力サンプル: e_mail(kurameso.taro@example.com) ID: f123456-80f1-70c1-b66c-example

グループ名からグループIDを取得する

グループIDは get-group-id で取得できます。 --alternate-identifier オプションに代わりの識別子(グループ表示名)を指定します。

以下、サンプルスクリプトです。

GROUP_NAME="EXAMPLE_GROUP"

##### 以降編集不要
STORE_ID=$(aws sso-admin list-instances --query "Instances[0].IdentityStoreId" --output text --no-paginate)
GROUP_ID=$(aws identitystore get-group-id --output text \
  --identity-store-id "${STORE_ID}" \
  --alternate-identifier "{\"UniqueAttribute\":{\"AttributePath\":\"displayName\",\"AttributeValue\":\"${GROUP_NAME}\"}}" \
  --query "GroupId")
echo "group_name(${GROUP_NAME}) ID: ${GROUP_ID}"
# group_name(EXAMPLE_GROUP) ID: 27example-5081-70a5-63f9-a8fe93c81ac9

おわりに

以上、IAM Identity Center のCLI運用でチョット役に立つTIPSでした。

参考