🔖

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

2021/05/02に公開

早速眺めていきます。

ソース

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-az1[1]
  • 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 ↩︎

GitHubで編集を提案

Discussion