はじめに
-
以前実施した、こちらのハンズオンの振り返りを目的とした記事です。
JAWS-UG CLI専門支部 #315 IAM基礎(インスタンスプロファイル) (入門者向け) -
インスタンスプロファイルの要素の作成・更新・削除をCLIで実行します。
-
気づいたこと、まとめておきたいポイントに絞って記事にしています。
インスタンスプロファイル
- IAMロールを格納するコンテナのこと
- EC2だけに使われるもの
- マネジメントコンソールを使用してEC2のロールを作成する場合、自動的に作成されて紐づけされる
ハンズオンで実施したコマンド
実行したコマンドたちを一度整理します。
IAMロールの作成
aws iam create-role
を実行します。
aws iam create-role \
--role-name ${IAM_ROLE_NAME} \
--path ${IAM_ROLE_PATH} \
--assume-role-policy-document file://${FILE_IAM_ROLE_DOC}
ここで出てきたassume-roleについては、こちらの記事がとても分かりやすく解説されています。
IAM ロールの PassRole と AssumeRole をもう二度と忘れないために絵を描いてみた
aws iam list-roles
で作成したIAMロールを確認します。
aws iam list-roles \
--query "Roles[?RoleName == \`${IAM_ROLE_NAME}\`].RoleName" \
--output text
IAMインスタンスプロファイルの作成
aws iam create-instance-profile
を実行します。
aws iam create-instance-profile \
--instance-profile-name ${IAM_INSTANCE_PROFILE_NAME} \
--path "${IAM_INSTANCE_PROFILE_PATH}"
作成したインスタンスプロファイルを確認します。
aws iam list-instance-profile
を実行します。
aws iam list-instance-profiles \
--query "InstanceProfiles[?InstanceProfileName == \`${IAM_INSTANCE_PROFILE_NAME}\`].InstanceProfileName" \
--output text
インスタンスプロファイルにIAMロールをアタッチする
aws iam add-role-to-instance-profile
を実行します。
aws iam add-role-to-instance-profile \
--instance-profile-name ${IAM_INSTANCE_PROFILE_NAME} \
--role-name ${IAM_ROLE_NAME}
アタッチできていることを確認します。
aws iam get-instance-profile
を実行します。
aws iam get-instance-profile \
--instance-profile-name ${IAM_INSTANCE_PROFILE_NAME} \
--query 'InstanceProfile.Roles[].RoleName' \
--output text
IAMポリシーのアタッチ
aws iam attach-role-policy
を実行します。
aws iam attach-role-policy \
--role-name ${iam_role_name} \
--policy-arn ${iam_policy_arn}
ポリシーがアタッチされていることを確認します。
aws iam list-attached-role-policies
を実行します。
aws iam list-attached-role-policies \
--role-name ${iam_role_name} \
--query "AttachedPolicies[?PolicyName == \`${IAM_POLICY_NAME}\`].PolicyName" \
--output text
インスタンスイメージIDを取得して、変数に指定する
実行したコマンドはこちらです。
ec2_instance_image_id=$( \
aws ec2 describe-images \
--filters Name=name,Values="${EC2_INSTANCE_IMAGE_NAME}" \
--query 'Images[].ImageId' \
--output text \
) \
&& echo ${ec2_instance_image_id}
-
ec2_instance_image_id=$( \
を入力します。 - 続くコマンドに
aws ec2 describe-images \
として--filters
や--query
で対象を絞ります。 - 最後に
&& echo
で出力させます。
同様に、VPC IDやサブネットIDも子のハンズオンの中で出力させています。
まとめ
- これまでのCLI支部の資料をもとにハンズオンを試していたが、Qiitaには投稿してこなかったので改めて知識を整理できた
- AWS CLIを触ることで、コンソール画面ではあまり意識しないものを深く知ることができる
- CLI支部の資料はクオリティが高く、度々勉強会も開催されているので時間を見つけて今後も参加していきたい
参考
【参考】Amazon EC2 の IAM ロール
【参考】インスタンスプロファイルの使用
【参考】特定のサブネットにある AWS リソースの一覧と IP アドレスを CSV で出力してみた