2016-02-04 47 views
2

當我在具有自動縮放組的實例內部時。我試圖選擇Autoscaling Group的一些特定標籤。我知道我可以使用AWS CLI命令「aws autoscaling describe-tags」。 所以我寫了一些.sh文件。比包含:使用AWS CLI選擇實例內部的自動縮放組的標籤

#!/bin/sh 
#Instance ID 
InstanceID=`/usr/bin/curl -s http://169.254.169.254/latest/meta-data/instance-id` 

#Allocation ID from Autoscaling tags 
Autoscaling=`aws ec2 describe-tags --filters "Name=resource-id,Values=$InstanceID" "Name=key,Values=aws:autoscaling:groupName"` 
AllocationID=`aws autoscaling describe-tags --filter "Name=key,Values=$Autoscaling"| select(["Value"] | contains("eipalloc"))` 

#Assigning VPC Elastic IP to Instance via Allocation ID 
aws ec2 associate-address --instance-id $InstanceID --allocation-id $AllocationID 

它不工作,因爲我不能以這種方式選擇價值。誰能告訴我如何正確選擇某個特定標籤?

謝謝!

回答

4

看起來可怕,但它的工作原理:

#!/bin/sh 
#Instance ID 
InstanceID=`/usr/bin/curl -s http://169.254.169.254/latest/meta-data/instance-id` 

#Elastic IP captured through the AllocationID Autoscaling tag 
ScalingGroup=`aws ec2 describe-tags --filters "Name=resource-id,Values=$InstanceID" "Name=key,Values=aws:autoscaling:groupName" | jq '.Tags[] | .Value'` 
AllocationID=`aws autoscaling describe-tags --filters "Name=auto-scaling-group,Values=$ScalingGroup" | jq '.Tags[] | select(.["Key"] | contains("AllocationID")) | .Value'` 
AllocationID=`echo $AllocationID | tr -d '"'` 

#Assigning Elastic IP to Instance 
aws ec2 associate-address --instance-id $InstanceID --allocation-id $AllocationID