リソース(RouteDefault)のCloudFormationリソースファイルを作成します。
手順に必要な設定値を変数に格納をします。
1. CloudFormationリソース名
CloudFormationリソース名を指定します。
変数の設定: TEMPLATE_CFN_RESOURCE_NAME='RouteDefault'
変数の設定:
TEMPLATE_CFN_RESOURCE_NAME='RouteDefault'
2. リソースファイル用ディレクトリ
リソースファイル用ディレクトリを指定します。
変数の設定: DIR_TEMPLATE_CFN_RESOURCE="${HOME}/environment/conf-handson-cli-cfn-ec2-Route/resources"
DIR_TEMPLATE_CFN_RESOURCE="${HOME}/environment/conf-handson-cli-cfn-ec2-Route/resources"
ディレクトリが存在することを確認します。
コマンド: ls -d ${DIR_TEMPLATE_CFN_RESOURCE} 結果(例:存在する場合): ${HOME}/environment/conf-handson-cli-cfn-ec2-Route/resources
コマンド:
ls -d ${DIR_TEMPLATE_CFN_RESOURCE}
結果(例:存在する場合):
${HOME}/environment/conf-handson-cli-cfn-ec2-Route/resources
存在しない場合は作成します。
コマンド: mkdir -p ${DIR_TEMPLATE_CFN_RESOURCE} 結果(例): (出力なし)
mkdir -p ${DIR_TEMPLATE_CFN_RESOURCE}
結果(例):
(出力なし)
3. リソースファイル名
リソースファイル名を指定します。
変数の設定: FILE_TEMPLATE_CFN_RESOURCE="${DIR_TEMPLATE_CFN_RESOURCE}/${TEMPLATE_CFN_RESOURCE_NAME}.txt" \ && echo ${FILE_TEMPLATE_CFN_RESOURCE} 結果(例): ${HOME}/environment/conf-handson-cli-cfn-ec2-Route/resources/RouteDefault.txt
FILE_TEMPLATE_CFN_RESOURCE="${DIR_TEMPLATE_CFN_RESOURCE}/${TEMPLATE_CFN_RESOURCE_NAME}.txt" \ && echo ${FILE_TEMPLATE_CFN_RESOURCE}
${HOME}/environment/conf-handson-cli-cfn-ec2-Route/resources/RouteDefault.txt
4. ルートテーブルリソース名
ルートテーブルのリソース名を指定します。
変数の設定: TEMPLATE_CFN_RESOURCE_NAME_EC2_ROUTE_TABLE='RouteTable0StackName'
TEMPLATE_CFN_RESOURCE_NAME_EC2_ROUTE_TABLE='RouteTable0StackName'
5. 宛先アドレス(CIDR指定)
宛先アドレス(CIDR)を指定します。
変数の設定: EC2_ROUTE_DESTINATION_CIDR='0.0.0.0/0'
EC2_ROUTE_DESTINATION_CIDR='0.0.0.0/0'
6. ゲートウェイのリソース名
ゲートウェイのリソース名を指定します。
変数の設定: TEMPLATE_CFN_RESOURCE_NAME_EC2_GATEWAY='Igw0StackName'
TEMPLATE_CFN_RESOURCE_NAME_EC2_GATEWAY='Igw0StackName'
各変数に正しい設定値が格納されていることを確認しながら保存します。
変数の確認: cat << END # 1. TEMPLATE_CFN_RESOURCE_NAME:"RouteDefault" TEMPLATE_CFN_RESOURCE_NAME="${TEMPLATE_CFN_RESOURCE_NAME}" # 2. DIR_TEMPLATE_CFN_RESOURCE:"${HOME}/environment/conf-handson-cli-cfn-ec2-Route/resources" DIR_TEMPLATE_CFN_RESOURCE="${DIR_TEMPLATE_CFN_RESOURCE}" # 3. FILE_TEMPLATE_CFN_RESOURCE:"${HOME}/environment/conf-handson-cli-cfn-ec2-Route/resources/RouteDefault.txt" FILE_TEMPLATE_CFN_RESOURCE="${FILE_TEMPLATE_CFN_RESOURCE}" # 4. TEMPLATE_CFN_RESOURCE_NAME_EC2_ROUTE_TABLE:"RouteTable0StackName" TEMPLATE_CFN_RESOURCE_NAME_EC2_ROUTE_TABLE="${TEMPLATE_CFN_RESOURCE_NAME_EC2_ROUTE_TABLE}" # 5. EC2_ROUTE_DESTINATION_CIDR:"0.0.0.0/0" EC2_ROUTE_DESTINATION_CIDR="${EC2_ROUTE_DESTINATION_CIDR}" # 6. TEMPLATE_CFN_RESOURCE_NAME_EC2_GATEWAY:"Igw0StackName" TEMPLATE_CFN_RESOURCE_NAME_EC2_GATEWAY="${TEMPLATE_CFN_RESOURCE_NAME_EC2_GATEWAY}" END
変数の確認:
cat << END # 1. TEMPLATE_CFN_RESOURCE_NAME:"RouteDefault" TEMPLATE_CFN_RESOURCE_NAME="${TEMPLATE_CFN_RESOURCE_NAME}" # 2. DIR_TEMPLATE_CFN_RESOURCE:"${HOME}/environment/conf-handson-cli-cfn-ec2-Route/resources" DIR_TEMPLATE_CFN_RESOURCE="${DIR_TEMPLATE_CFN_RESOURCE}" # 3. FILE_TEMPLATE_CFN_RESOURCE:"${HOME}/environment/conf-handson-cli-cfn-ec2-Route/resources/RouteDefault.txt" FILE_TEMPLATE_CFN_RESOURCE="${FILE_TEMPLATE_CFN_RESOURCE}" # 4. TEMPLATE_CFN_RESOURCE_NAME_EC2_ROUTE_TABLE:"RouteTable0StackName" TEMPLATE_CFN_RESOURCE_NAME_EC2_ROUTE_TABLE="${TEMPLATE_CFN_RESOURCE_NAME_EC2_ROUTE_TABLE}" # 5. EC2_ROUTE_DESTINATION_CIDR:"0.0.0.0/0" EC2_ROUTE_DESTINATION_CIDR="${EC2_ROUTE_DESTINATION_CIDR}" # 6. TEMPLATE_CFN_RESOURCE_NAME_EC2_GATEWAY:"Igw0StackName" TEMPLATE_CFN_RESOURCE_NAME_EC2_GATEWAY="${TEMPLATE_CFN_RESOURCE_NAME_EC2_GATEWAY}" END
下段の変数が入っていない、もしくは上段と同等の値が入っていない場合は、それぞれの手順番号に戻って変数の設定を行います。
CFnリソースファイルを作成します。
変数の確認: cat << END # FILE_TEMPLATE_CFN_RESOURCE:"${HOME}/environment/conf-handson-cli-cfn-ec2-Route/resources/RouteDefault.txt" FILE_TEMPLATE_CFN_RESOURCE="${FILE_TEMPLATE_CFN_RESOURCE}" # TEMPLATE_CFN_RESOURCE_NAME:"RouteDefault" TEMPLATE_CFN_RESOURCE_NAME="${TEMPLATE_CFN_RESOURCE_NAME}" # TEMPLATE_CFN_RESOURCE_NAME_EC2_ROUTE_TABLE:"RouteTable0StackName" TEMPLATE_CFN_RESOURCE_NAME_EC2_ROUTE_TABLE="${TEMPLATE_CFN_RESOURCE_NAME_EC2_ROUTE_TABLE}" # EC2_ROUTE_DESTINATION_CIDR:"0.0.0.0/0" EC2_ROUTE_DESTINATION_CIDR="${EC2_ROUTE_DESTINATION_CIDR}" # TEMPLATE_CFN_RESOURCE_NAME_EC2_GATEWAY:"Igw0StackName" TEMPLATE_CFN_RESOURCE_NAME_EC2_GATEWAY="${TEMPLATE_CFN_RESOURCE_NAME_EC2_GATEWAY}" END コマンド: cat << EOF > ${FILE_TEMPLATE_CFN_RESOURCE} ${TEMPLATE_CFN_RESOURCE_NAME}: Type: AWS::EC2::Route Properties: RouteTableId: !Ref ${TEMPLATE_CFN_RESOURCE_NAME_EC2_ROUTE_TABLE} DestinationCidrBlock: ${EC2_ROUTE_DESTINATION_CIDR} GatewayId: !Ref ${TEMPLATE_CFN_RESOURCE_NAME_EC2_GATEWAY} EOF cat ${FILE_TEMPLATE_CFN_RESOURCE} 結果(例): RouteDefault: Type: AWS::EC2::Route Properties: RouteTableId: !Ref RouteTable0StackName DestinationCidrBlock: 0.0.0.0/0 GatewayId: !Ref Igw0StackName
cat << END # FILE_TEMPLATE_CFN_RESOURCE:"${HOME}/environment/conf-handson-cli-cfn-ec2-Route/resources/RouteDefault.txt" FILE_TEMPLATE_CFN_RESOURCE="${FILE_TEMPLATE_CFN_RESOURCE}" # TEMPLATE_CFN_RESOURCE_NAME:"RouteDefault" TEMPLATE_CFN_RESOURCE_NAME="${TEMPLATE_CFN_RESOURCE_NAME}" # TEMPLATE_CFN_RESOURCE_NAME_EC2_ROUTE_TABLE:"RouteTable0StackName" TEMPLATE_CFN_RESOURCE_NAME_EC2_ROUTE_TABLE="${TEMPLATE_CFN_RESOURCE_NAME_EC2_ROUTE_TABLE}" # EC2_ROUTE_DESTINATION_CIDR:"0.0.0.0/0" EC2_ROUTE_DESTINATION_CIDR="${EC2_ROUTE_DESTINATION_CIDR}" # TEMPLATE_CFN_RESOURCE_NAME_EC2_GATEWAY:"Igw0StackName" TEMPLATE_CFN_RESOURCE_NAME_EC2_GATEWAY="${TEMPLATE_CFN_RESOURCE_NAME_EC2_GATEWAY}" END
cat << EOF > ${FILE_TEMPLATE_CFN_RESOURCE} ${TEMPLATE_CFN_RESOURCE_NAME}: Type: AWS::EC2::Route Properties: RouteTableId: !Ref ${TEMPLATE_CFN_RESOURCE_NAME_EC2_ROUTE_TABLE} DestinationCidrBlock: ${EC2_ROUTE_DESTINATION_CIDR} GatewayId: !Ref ${TEMPLATE_CFN_RESOURCE_NAME_EC2_GATEWAY} EOF cat ${FILE_TEMPLATE_CFN_RESOURCE}
RouteDefault: Type: AWS::EC2::Route Properties: RouteTableId: !Ref RouteTable0StackName DestinationCidrBlock: 0.0.0.0/0 GatewayId: !Ref Igw0StackName
「リソースファイル"${HOME}/environment/conf-handson-cli-cfn-ec2-Route/resources/RouteDefault.txt"が存在する。」ことを確認します。
コマンド: ls ${FILE_TEMPLATE_CFN_RESOURCE} 結果(例): ${HOME}/environment/conf-handson-cli-cfn-ec2-Route/resources/RouteDefault.txt
ls ${FILE_TEMPLATE_CFN_RESOURCE}