コマンドラインでAMIを選んでEC2を立ち上げる

ものぐさシリーズ、AMIを表示して選択したものからインスタンスを作成します。

vim create-test-instance.sh 
#!/bin/sh

tmpfile=`mktemp`
/usr/bin/aws ec2 describe-images --filters "Name=tag-key,Values=Name" "Name=tag-key,Values=Backup-Type" "Name=tag-value,Values=${INSTANCE_NAME}" --query 'Images[].{Name:Name, ID:ImageId}' | awk '{print $2 ":" $1}' > $tmpfile

if [ ! -f $tmpfile ]; then
  echo "image not found"
  exit 1
fi

if [ ! -s $tmpfile ]; then
  echo "image not found"
  exit 1
fi

COUNT=1

for line in `cat $tmpfile`
do
  echo "${COUNT} $line"
  COUNT=$(( COUNT + 1 ))
done

read -p "please choose image number : " NUMBER_LOADSETTING

AMI=`sed -n -e ${NUMBER_LOADSETTING}p $tmpfile | awk -F":" '{print $2}'`

if [ "${AMI}" = "" ]; then
  echo "wrong number selected"
  exit 1
fi

echo $AMI""

rm -f $tmpfile

NAME={instanceName}
result=`/path/to/file/launch_from_ami.sh ${AMI} ${NAME}`

echo "instance $result created"
echo "please wait for publicip assign"

sleep 15

publicip=`/usr/bin/aws ec2 describe-instances --instance-ids $result --query 'Reservations[].Instances[].PublicIpAddress'`

echo "PublicIP: $publicip"
vim launch_from_ami.sh 
#/bin/sh

AMI=$1
instanceName=$2
awsprofile=$3

if [ "$awsprofile" = "" ]; then
  awsprofile=default
fi

SUBNET="{subnet}"
KEYPAIR="{keypair}"
GROUP="{securitygroup}"

if [ "$AMI" = "" ]; then
        echo "usage: $0 amiID tagName"
        exit 1
fi

TYPE="t2.micro"

result_id=`aws ec2 run-instances --profile ${awsprofile} --image-id ${AMI} --instance-type ${TYPE} --subnet-id ${SUBNET} --key-name ${KEYPAIR} --security-group-ids ${GROUP} | grep INSTANCE | awk '{ print $7 }'`

#echo "instance_id: $result_id created !"

if [ "$result_id" = "" ]; then
        echo "instance_id not found ..."
        exit 1
fi

TAGS=[{\"Key\":\"Name\",\"Value\":\"${instanceName}\"}]

if [ "$instanceName" != "" ]; then
  aws ec2 create-tags --profile ${awsprofile} --resources $result_id --tags $TAGS
fi

echo $result_id