処理の実行
インスタンスプロファイルのARNを取得します。
コマンド:
iam_instance_profile_arn=$( \
aws iam get-instance-profile \
--instance-profile-name ${IAM_INSTANCE_PROFILE_NAME} \
--query 'InstanceProfile.Arn' \
--output text \
) \
&& echo ${iam_instance_profile_arn}
結果(例):
arn:aws:iam::XXXXXXXXXXXX:instance-profile/handson-cloud9/handson-cloud9-instance-profile
インスタンスプロファイル設定文字列を生成します。
変数の設定:
string_ec2_instance_profile="Arn=${iam_instance_profile_arn},Name=${IAM_INSTANCE_PROFILE_NAME}" \
&& echo ${string_ec2_instance_profile}
変数の設定:
Arn=arn:aws:iam::XXXXXXXXXXXX:instance-profile/handson-cloud9/handson-cloud9-instance-profile,Name=handson-cloud9-instance-profile
EC2インスタンスIDを取得します。
コマンド:
array_ec2_instance_ids=$( \
aws ec2 describe-instances \
--filters Name=tag-key,Values=Name \
Name=tag-value,Values=${EC2_INSTANCE_TAG_PREFIX}* \
Name=instance-state-name,Values=running \
--query Reservations[].Instances[].InstanceId \
--output text \
) \
&& echo ${array_ec2_instance_ids}
結果(例):
注釈
本手順では、同一のEC2インスタンスタグ名プレフィックスを持つEC2インスタンスが1台しか存在しないことを前提にしています。
EC2インスタンスのインスタンスIDを変数に格納します。
変数の設定:
ec2_instance_id=$( \
echo ${array_ec2_instance_ids} \
| sed 's/ .*$//' \
) \
&& echo ${ec2_instance_id}
結果(例):
EC2インスタンスにインスタンスプロファイルを関連付けます。
変数の確認:
cat << END
# string_ec2_instance_profile:"Arn=arn:aws:iam::XXXXXXXXXXXX:instance-profile/handson-cloud9/handson-cloud9-instance-profile,Name=handson-cloud9-instance-profile"
string_ec2_instance_profile="${string_ec2_instance_profile}"
# ec2_instance_id:"i-xxxxxxxxxxxxxxxxx"
ec2_instance_id="${ec2_instance_id}"
END
コマンド:
aws ec2 associate-iam-instance-profile \
--iam-instance-profile ${string_ec2_instance_profile} \
--instance-id ${ec2_instance_id}
結果(例):
{
"IamInstanceProfileAssociation": {
"AssociationId": "iip-assoc-xxxxxxxxxxxxxxxxx",
"InstanceId": "i-xxxxxxxxxxxxxxxxx",
"IamInstanceProfile": {
"Arn": "arn:aws:iam::XXXXXXXXXXXX:instance-profile/handson-cloud9/handson-cloud9-instance-profile",
"Id": "AIPAXXXXXXXXXXXXXXXXX"
},
"State": "associating"
}
}
完了確認
「EC2インスタンス名プレフィックス"aws-cloud9-handson-cli-env"のEC2インスタンスにIAMインスタンスプロファイルが関連付けられている。」ことを確認します。
コマンド:
aws ec2 describe-iam-instance-profile-associations \
--filters "Name=instance-id,Values=${ec2_instance_id}" \
"Name=state,Values=associated" \
--query "IamInstanceProfileAssociations[].IamInstanceProfile.Arn" \
--output text
結果(例):
arn:aws:iam::XXXXXXXXXXXX:instance-profile/handson-cloud9/handson-cloud9-instance-profile