リソース作成後にわざわざIDを拾ってきてタグ付けするのが面倒だったので、CLIコマンドをくっ付けました。
つかいかた
ec2_create_subnet.shの中でec2_create_subnet.shをロードしてます。
必要な変数は呼び出す側(ec2_create_subnet.sh)で定義します。
引数1に文字列「exe」を渡すと実行します。
それ以外の文字列を渡すと、Dry-runで実行します。
Nameタグ付け
ec2_create_name_tag.sh
#!/bin/bash
ec2CreateNameTag(){
aws ec2 create-tags \
--resources ${RESOURCE_ID} \
--tags "Key=Name,Value=${TAGS_VALUE}"
}
Subnet作成
ec2_create_subnet.sh
#!/bin/bash
source ./ec2_create_name_tag.sh
AZ_VALUE="a"
REGION_NAME="ap-northeast-1"
AVAILABILITY_ZONE="${REGION_NAME}${AZ_VALUE}"
CIDR="1.2.3.240/28"
VPC_ID="vpc-00aa0aa000aa00000"
DRY_OR_NOT=""
TAGS_VALUE="subnet-nameTagValue${AZ_VALUE^}"
if [ -n "$1" ];
then
if [ "exe" = "$1" ];
then
DRY_OR_NOT="--no-dry-run"
else
DRY_OR_NOT="--dry-run"
fi
else
echo "Argument1 is required."
exit 9
fi
RESOURCE_ID=`aws ec2 create-subnet \
--availability-zone ${AVAILABILITY_ZONE} \
--cidr-block ${CIDR} \
--vpc-id ${VPC_ID} \
${DRY_OR_NOT} | jq -r '.Subnet.SubnetId'`
if [ $? -eq 0 ];
then
echo "Subnet ID: ${RESOURCE_ID}"
ec2CreateNameTag
else
echo "Create subnet is failed."
fi
...CloudFormation使おう
CloudFormation使いました
create_subnet_backendA.json
{
"AWSTemplateFormatVersion" : "2010-09-09",
"Resources":{
"subnetBackendA": {
"Type": "AWS::EC2::Subnet",
"Properties": {
"VpcId": "vpc-00aa0aa000aa00000",
"CidrBlock": "1.2.3.240/28",
"AvailabilityZone": "ap-northeast-1a",
"Tags": [{"Key": "Name", "Value": "subnet-nameTagValueA"}]
}
}
}
}