処理の実行
IAMロールのARNを取得します。
コマンド:
iam_role_arn=$( \
aws iam get-role \
--role-name ${IAM_ROLE_NAME} \
--query 'Role.Arn' \
--output text \
) \
&& echo ${iam_role_arn}
結果(例):
arn:aws:iam::XXXXXXXXXXXX:role/handson-cli-env/handson-cli-env-role
IAMリソースの作成
IAMポリシードキュメントを作成します。
変数の確認:
cat << END
# FILE_IAM_POLICY_DOC:"${HOME}/<ポリシードキュメント用ディレクトリパス>/handson-cli-IAMAllowRolePolicy-policy.json"
FILE_IAM_POLICY_DOC="${FILE_IAM_POLICY_DOC}"
# iam_role_arn:"arn:aws:iam::XXXXXXXXXXXX:role/handson-cli-env/handson-cli-env-role"
iam_role_arn="${iam_role_arn}"
END
コマンド:
cat << EOF > ${FILE_IAM_POLICY_DOC}
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowControlRolePolicy",
"Effect": "Allow",
"Action": [
"iam:AttachRolePolicy",
"iam:DetachRolePolicy"
],
"Resource": [
"${iam_role_arn}"
]
},
{
"Sid": "AllowReadPolicies",
"Effect": "Allow",
"Action": [
"iam:GetPolicy",
"iam:ListPolicies"
],
"Resource": "*"
}
]
}
EOF
cat ${FILE_IAM_POLICY_DOC}
結果(例):
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowControlRolePolicy",
"Effect": "Allow",
"Action": [
"iam:AttachRolePolicy",
"iam:DetachRolePolicy"
],
"Resource": [
"arn:aws:iam::XXXXXXXXXXXX:role/handson-cli-env/handson-cli-env-role"
]
},
{
"Sid": "AllowReadPolicies",
"Effect": "Allow",
"Action": [
"iam:GetPolicy",
"iam:ListPolicies"
],
"Resource": "*"
}
]
}
JSONファイルを作成したら、フォーマットが壊れてないか必ず確認します。
コマンド:
cat ${FILE_IAM_POLICY_DOC} \
| python3 -m json.tool \
> /dev/null
結果(例):
完了確認
「IAMポリシードキュメント"${HOME}/<ポリシードキュメント用ディレクトリパス>/handson-cli-IAMAllowRolePolicy-policy.json"が存在する。」ことを確認します。
コマンド:
ls ${FILE_IAM_POLICY_DOC}
結果(例):
/home/ec2-user/<ポリシードキュメント用ディレクトリパス>/handson-cli-IAMAllowRolePolicy-policy.json