Я пытался пометить тома EBS, прикрепленные к экземплярам EC2, в разделе пользовательских данных CloudFormation.Вот моя первая попытка:
Пример 1:
AWS_INSTANCE_ID=`curl -s http://169.254.169.254/latest/meta-data/instance-id`
ROOT_DISK_ID=`aws ec2 describe-volumes \
--filter Name=attachment.instance-id,Values="${AWS_INSTANCE_ID}" \
--query "Volumes[].VolumeId" --region us-east-1 --out text`
aws ec2 create-tags --resources "${ROOT_DISK_ID}" \
--tags 'Key=VolumeTagName,Value=VolumeTagValue' --region us-east-1
Это привело к ошибке Template format error: Unresolved resource dependencies [AWS_INSTANCE_ID, ROOT_DISK_ID] in the Resources block of the template
.
В посте, с которым я столкнулся, упоминалось, что использование !
при вызове переменной в скрипте Cloudformation UserData поможет обойти это, поэтому теперь это выглядит так:
Пример 2:
AWS_INSTANCE_ID=`curl -s http://169.254.169.254/latest/meta-data/instance-id`
ROOT_DISK_ID=`aws ec2 describe-volumes \
--filter Name=attachment.instance-id,Values="${!AWS_INSTANCE_ID}" \
--query "Volumes[].VolumeId" --region us-east-1 --out text`
aws ec2 create-tags --resources "${!ROOT_DISK_ID}" \
--tags 'Key=VolumeTagName,Value=VolumeTagValue' --region us-east-1
Это позволяет обойти эту ошибку, но теги на томе, присоединенном к экземпляру, запущенному с этим шаблоном, не отображаются.Если я ssh в экземпляр и запускаю Пример 1 , он работает просто отлично. Пример 2 не дает мне ошибок для работы.
Что я делаю неправильно в bash, что характерно для Cloudformation?