AMIからEC2立ち上げしてタグ付けまでするbashスクリプト

題名の通りです。シンプルですが。

前提

JSON扱うので環境に応じてjqが実行できる環境が必要です。 https://stedolan.github.io/jq/download/

MacならHomebrewでインストールも可能です。

brew install jq

スクリプト

#EC2作成関連の変数
PRIVATE_IP=172.22.10.10
INSTANCE_TYPE=t2.micro
IMAGE_ID=ami-abcd1234
SEC_GRP=sg-abcd1234
SUBNET_ID=subnet-abcd1234
KEY_PAIR=your_key_pair
IAM_ROLE_NAME=your_role_name

#タグ関連の変数
TAG_NAME=infra-test
TAG_PROJECT=your_project



echo "-----Create EC2 Instance"
echo "PRIVATE_IP=${PRIVATE_IP}"
echo "INSTANCE_TYPE=${INSTANCE_TYPE}"
echo "IMAGE_ID=${IMAGE_ID}"
echo "SEC_GRP=${SEC_GRP}"
echo "SUBNET_ID=${SUBNET_ID}"
echo "KEY_PAIR=${KEY_PAIR}"
echo "IAM_ROLE_NAME=${IAM_ROLE_NAME}"
echo "TAG_NAME=${TAG_NAME}"
echo "TAG_PROJECT=${TAG_PROJECT}"
echo ""

read -p "Are you sure? (y/n) :" YN
if [ "${YN}" != "y" ]; then
  echo "exit script!"
  exit 1;
fi

instance_id=$(aws ec2 run-instances \
  --image-id ${IMAGE_ID} \
  --security-group-ids ${SEC_GRP} \
  --instance-type ${INSTANCE_TYPE} \
  --subnet-id ${SUBNET_ID} \
  --key-name ${KEY_PAIR} \
  --private-ip-address ${PRIVATE_IP} \
  --iam-instance-profile Name=${IAM_ROLE_NAME} \
  --count 1 \
  --no-associate-public-ip-address \
  | jq -r ".Instances[0].InstanceId" )

echo "------Instance Created"
echo "InstanceID=${instance_id}"
echo ""

#タグ付け
aws ec2 create-tags --resources ${instance_id} \
  --tag Key=Name,Value=${TAG_NAME}

aws ec2 create-tags --resources ${instance_id} \
  --tag Key=Project,Value=${TAG_PROJECT}

echo "completed"