Edited at

AWS CDKで構築したVPCのテンプレートを眺めるだけの記事

早速眺めていきます。


ソース


cdk_stack.py

from aws_cdk import (

core,
aws_ec2 as ec2
)

class CdkStack(core.Stack):

def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:
super().__init__(scope, id, **kwargs)

ec2.Vpc(self,"CDK_TEST_HIROGA")


app.synth() するところは省略。


Overview

(アイコンが小さくて分かりづらい...)

image.png


  • VPC: 1つ

  • Subnet: Public2つ、Private2つ

  • InternetGateway: VPCに対して1つ

  • NatGateway: PublicSubnetごとに1つ、合計2つ

  • EIP: NatGatewayごとに1つ、合計2つ

  • ほか、RouteTable, Route, SubnetRouteTableAssociation


VPC


  • デフォルトのCIDR Blockは10.0.0.0/16

  • Nameの命名規則は、指定しない限り スタック名/リソースのIDになるようだ。

  CDKTESTHIROGA2CBE18D7:

Type: AWS::EC2::VPC
Properties:
CidrBlock: 10.0.0.0/16
EnableDnsHostnames: true
EnableDnsSupport: true
InstanceTenancy: default
Tags:
- Key: Name
Value: cdk/CDK_TEST_HIROGA
Metadata:
aws:cdk:path: cdk/CDK_TEST_HIROGA/Resource


Public Subnet


  • ネットワークアドレスはデフォルトで18ビット。

  • AZ IDはデフォルトで apne1-az4apne1-az11


  • aws-cdk:subnet-name は、既存のSubnetをCDKでimportする際に参照するための値。何も指定しないと aws-cdk:subnet-type とおなじになるらしい。2


  • aws-cdk:subnet-type はISOLATED, PRIVATE, PUBLICのいずれか。

image.png

  CDKTESTHIROGAPublicSubnet1SubnetEDE92B34:

Type: AWS::EC2::Subnet
Properties:
CidrBlock: 10.0.0.0/18
VpcId:
Ref: CDKTESTHIROGA2CBE18D7
AvailabilityZone:
Fn::Select:
- 0
- Fn::GetAZs: ""
MapPublicIpOnLaunch: true
Tags:
- Key: Name
Value: cdk/CDK_TEST_HIROGA/PublicSubnet1
- Key: aws-cdk:subnet-name
Value: Public
- Key: aws-cdk:subnet-type
Value: Public
Metadata:
aws:cdk:path: cdk/CDK_TEST_HIROGA/PublicSubnet1/Subnet


おまけ

今回作成したテンプレート

https://gist.github.com/hiroga-cc/5d5d33e2a677efce1a82c2f2d7cc9484





  1. こういう記事ではAZ IDを使ったほうがいいみたいですね。クラメソさんブログ 



  2. Importing an existing VPC