IAMロール"handson-cli-sts-assume-role-role"のプリンシパルを定義する信頼ポリシードキュメントを作成します。
サービス"<サービス名>.amazonaws.com"にIAMロールの利用を許可します。
手順に必要な設定値を変数に格納をします。
ロールの利用を許可するIAMユーザーを指定します。
変数の設定: IAM_USER_NAME='handson-cli-sts-assume-role-user'
変数の設定:
IAM_USER_NAME='handson-cli-sts-assume-role-user'
信頼ポリシードキュメント用ディレクトリを指定します。
変数の設定: DIR_IAM_ROLE_DOC="${HOME}/environment/conf-handson-cli-sts-assume-role"
DIR_IAM_ROLE_DOC="${HOME}/environment/conf-handson-cli-sts-assume-role"
ディレクトリが存在することを確認し、存在しない場合は作成します。
コマンド: ls -d ${DIR_IAM_ROLE_DOC} > /dev/null 2>&1 \ || mkdir -p ${DIR_IAM_ROLE_DOC} 結果(例): (出力なし)
コマンド:
ls -d ${DIR_IAM_ROLE_DOC} > /dev/null 2>&1 \ || mkdir -p ${DIR_IAM_ROLE_DOC}
結果(例):
(出力なし)
信頼ポリシードキュメント名を指定します。
変数の設定: IAM_ROLE_DOC_NAME='handson-cli-sts-assume-role-role'
IAM_ROLE_DOC_NAME='handson-cli-sts-assume-role-role'
信頼ポリシードキュメントのファイル名を指定します。
変数の設定: FILE_IAM_ROLE_DOC="${DIR_IAM_ROLE_DOC}/${IAM_ROLE_DOC_NAME}.json" \ && echo ${FILE_IAM_ROLE_DOC} 結果(例): ${HOME}/environment/conf-handson-cli-sts-assume-role/handson-cli-sts-assume-role-role.json
FILE_IAM_ROLE_DOC="${DIR_IAM_ROLE_DOC}/${IAM_ROLE_DOC_NAME}.json" \ && echo ${FILE_IAM_ROLE_DOC}
${HOME}/environment/conf-handson-cli-sts-assume-role/handson-cli-sts-assume-role-role.json
各変数に正しい設定値が格納されていることを確認します。
変数の確認: cat << END # 1. IAM_USER_NAME:"handson-cli-sts-assume-role-user" IAM_USER_NAME="${IAM_USER_NAME}" # 2. DIR_IAM_ROLE_DOC:"${HOME}/environment/conf-handson-cli-sts-assume-role" DIR_IAM_ROLE_DOC="${DIR_IAM_ROLE_DOC}" # 3. FILE_IAM_ROLE_DOC:"${HOME}/environment/conf-handson-cli-sts-assume-role/handson-cli-sts-assume-role-role.json" FILE_IAM_ROLE_DOC="${FILE_IAM_ROLE_DOC}" END
変数の確認:
cat << END # 1. IAM_USER_NAME:"handson-cli-sts-assume-role-user" IAM_USER_NAME="${IAM_USER_NAME}" # 2. DIR_IAM_ROLE_DOC:"${HOME}/environment/conf-handson-cli-sts-assume-role" DIR_IAM_ROLE_DOC="${DIR_IAM_ROLE_DOC}" # 3. FILE_IAM_ROLE_DOC:"${HOME}/environment/conf-handson-cli-sts-assume-role/handson-cli-sts-assume-role-role.json" FILE_IAM_ROLE_DOC="${FILE_IAM_ROLE_DOC}" END
各変数について、上の行と下の行の値の内容もしくは形式が同じであることを確認します。 もし異なる場合は、それぞれの手順番号に戻って変数の設定を行います。
IAMユーザーのARNを取得します。
コマンド: iam_user_arn=$( \ aws iam list-users \ --query "Users[?UserName == \`${IAM_USER_NAME}\` ].Arn" \ --output text \ ) \ && echo ${iam_user_arn} 結果(例): arn:aws:iam::XXXXXXXXXXXX:user/handson-cli-sts-assume-role-user
iam_user_arn=$( \ aws iam list-users \ --query "Users[?UserName == \`${IAM_USER_NAME}\` ].Arn" \ --output text \ ) \ && echo ${iam_user_arn}
arn:aws:iam::XXXXXXXXXXXX:user/handson-cli-sts-assume-role-user
信頼ポリシードキュメントを作成します。
変数の確認: cat << END # FILE_IAM_ROLE_DOC:"${HOME}/environment/conf-handson-cli-sts-assume-role/handson-cli-sts-assume-role-role.json" FILE_IAM_ROLE_DOC="${FILE_IAM_ROLE_DOC}" # iam_user_arn:"arn:aws:iam::XXXXXXXXXXXX:user/handson-cli-sts-assume-role-user" iam_user_arn="${iam_user_arn}" END コマンド: cat << EOF > ${FILE_IAM_ROLE_DOC} { "Version": "2012-10-17", "Statement": [ { "Action": "sts:AssumeRole", "Principal": { "AWS": "${iam_user_arn}" }, "Effect": "Allow", "Sid": "" } ] } EOF cat ${FILE_IAM_ROLE_DOC} 結果(例): { "Version": "2012-10-17", "Statement": [ { "Action": "sts:AssumeRole", "Principal": { "AWS": "arn:aws:iam::XXXXXXXXXXXX:user/handson-cli-sts-assume-role-user" }, "Effect": "Allow", "Sid": "" } ] } JSONファイルを作成したら、フォーマットが壊れていないか必ず確認します。 エラーが出力されなければOKです。
cat << END # FILE_IAM_ROLE_DOC:"${HOME}/environment/conf-handson-cli-sts-assume-role/handson-cli-sts-assume-role-role.json" FILE_IAM_ROLE_DOC="${FILE_IAM_ROLE_DOC}" # iam_user_arn:"arn:aws:iam::XXXXXXXXXXXX:user/handson-cli-sts-assume-role-user" iam_user_arn="${iam_user_arn}" END
cat << EOF > ${FILE_IAM_ROLE_DOC} { "Version": "2012-10-17", "Statement": [ { "Action": "sts:AssumeRole", "Principal": { "AWS": "${iam_user_arn}" }, "Effect": "Allow", "Sid": "" } ] } EOF cat ${FILE_IAM_ROLE_DOC}
{ "Version": "2012-10-17", "Statement": [ { "Action": "sts:AssumeRole", "Principal": { "AWS": "arn:aws:iam::XXXXXXXXXXXX:user/handson-cli-sts-assume-role-user" }, "Effect": "Allow", "Sid": "" } ] }
JSONファイルを作成したら、フォーマットが壊れていないか必ず確認します。
エラーが出力されなければOKです。
「信頼ポリシードキュメント"${HOME}/environment/conf-handson-cli-sts-assume-role/handson-cli-sts-assume-role-role.json"が存在する。」ことを確認します。
コマンド: ls ${FILE_IAM_ROLE_DOC} 結果(例): ${HOME}/environment/conf-handson-cli-sts-assume-role/handson-cli-sts-assume-role-role.json
ls ${FILE_IAM_ROLE_DOC}