AWS Cloud Development Kit (以下CDK)はプログラミング言語を使用してAWS環境の定義、デプロイができるフレームワークです。CDKのコードは最終的にCloudFormationのテンプレートに変換されてデプロイされるため、宣言型のCloudFormationの持つ冪等性(繰り返し実行しても同じ結果になる)の恩恵を受けつつ、様々なデータ構造や繰り返しなどの制御構造を持つプログラミング言語でインフラストラクチャを記述できるというメリットがあります。2019/1/20時点ではDeveloper Previewで、C#/JavaScript/TypeScript/Javaで記述することができます。
今回はTypeScriptでVPCを作成します。
環境
- OS: macOS Sierra (10.12.6)
- AWS CDK: 0.22.0
基本的にはNode.jsが動く環境であればどの環境でも動作するはずです。
前提条件
以下は予めインストールしておく必要があります。
- Node.js (>= 8.11.x)
- AWS CLI
- git
- AWS CDK (インストール手順)
CDKプロジェクトの初期化
CDKプロジェクトをデフォルトテンプレートから初期化します。
- CDKをアップデートします。
$ npm -g update aws-cdk
$ cdk --version
0.22.0 (build 644ebf5)
- プロジェクトフォルダを作成します。
$ mkdir aws-cdk-vpc-sample
$ cd aws-cdk-vpc-sample
- プロジェクトを初期化します。
$ cdk init --language typescript
プロパティ指定なしで VPCを作成する。
プロパティを一切指定せずにVPCを作成します。
-
@aws-cdk/aws-ec2
パッケージをインストールします。
$ npm install @aws-cdk/aws-ec2
-
lib/aws-cdk-vpc-sample.ts
を編集し、VPCをスタックに追加します。
import cdk = require('@aws-cdk/cdk');
import ec2 = require('@aws-cdk/aws-ec2'); //ec2モジュールをインポート
export class AwsCdkVpcSampleStack extends cdk.Stack {
constructor(scope: cdk.App, id: string, props?: cdk.StackProps) {
super(scope, id, props);
new ec2.VpcNetwork(this, 'VPC'); //VPCを追加
}
}
- ビルドします。
$ npm run build
-
cdk diff
コマンドを実行すると作成されるリソースが表示されます。
AWSクレデンシャルとデフォルトリージョンが設定されていないとエラーになります。
$ cdk diff
Resources
[+] AWS::EC2::VPC VPC VPCB9E5F0B4
[+] AWS::EC2::Subnet VPC/PublicSubnet1/Subnet VPCPublicSubnet1SubnetB4246D30
[+] AWS::EC2::RouteTable VPC/PublicSubnet1/RouteTable VPCPublicSubnet1RouteTableFEE4B781
[+] AWS::EC2::SubnetRouteTableAssociation VPC/PublicSubnet1/RouteTableAssociation VPCPublicSubnet1RouteTableAssociation0B0896DC
[+] AWS::EC2::Route VPC/PublicSubnet1/DefaultRoute VPCPublicSubnet1DefaultRoute91CEF279
[+] AWS::EC2::EIP VPC/PublicSubnet1/EIP VPCPublicSubnet1EIP6AD938E8
[+] AWS::EC2::NatGateway VPC/PublicSubnet1/NATGateway VPCPublicSubnet1NATGatewayE0556630
[+] AWS::EC2::Subnet VPC/PublicSubnet2/Subnet VPCPublicSubnet2Subnet74179F39
[+] AWS::EC2::RouteTable VPC/PublicSubnet2/RouteTable VPCPublicSubnet2RouteTable6F1A15F1
[+] AWS::EC2::SubnetRouteTableAssociation VPC/PublicSubnet2/RouteTableAssociation VPCPublicSubnet2RouteTableAssociation5A808732
[+] AWS::EC2::Route VPC/PublicSubnet2/DefaultRoute VPCPublicSubnet2DefaultRouteB7481BBA
[+] AWS::EC2::EIP VPC/PublicSubnet2/EIP VPCPublicSubnet2EIP4947BC00
[+] AWS::EC2::NatGateway VPC/PublicSubnet2/NATGateway VPCPublicSubnet2NATGateway3C070193
[+] AWS::EC2::Subnet VPC/PublicSubnet3/Subnet VPCPublicSubnet3Subnet631C5E25
[+] AWS::EC2::RouteTable VPC/PublicSubnet3/RouteTable VPCPublicSubnet3RouteTable98AE0E14
[+] AWS::EC2::SubnetRouteTableAssociation VPC/PublicSubnet3/RouteTableAssociation VPCPublicSubnet3RouteTableAssociation427FE0C6
[+] AWS::EC2::Route VPC/PublicSubnet3/DefaultRoute VPCPublicSubnet3DefaultRouteA0D29D46
[+] AWS::EC2::EIP VPC/PublicSubnet3/EIP VPCPublicSubnet3EIPAD4BC883
[+] AWS::EC2::NatGateway VPC/PublicSubnet3/NATGateway VPCPublicSubnet3NATGatewayD3048F5C
[+] AWS::EC2::Subnet VPC/PrivateSubnet1/Subnet VPCPrivateSubnet1Subnet8BCA10E0
[+] AWS::EC2::RouteTable VPC/PrivateSubnet1/RouteTable VPCPrivateSubnet1RouteTableBE8A6027
[+] AWS::EC2::SubnetRouteTableAssociation VPC/PrivateSubnet1/RouteTableAssociation VPCPrivateSubnet1RouteTableAssociation347902D1
[+] AWS::EC2::Route VPC/PrivateSubnet1/DefaultRoute VPCPrivateSubnet1DefaultRouteAE1D6490
[+] AWS::EC2::Subnet VPC/PrivateSubnet2/Subnet VPCPrivateSubnet2SubnetCFCDAA7A
[+] AWS::EC2::RouteTable VPC/PrivateSubnet2/RouteTable VPCPrivateSubnet2RouteTable0A19E10E
[+] AWS::EC2::SubnetRouteTableAssociation VPC/PrivateSubnet2/RouteTableAssociation VPCPrivateSubnet2RouteTableAssociation0C73D413
[+] AWS::EC2::Route VPC/PrivateSubnet2/DefaultRoute VPCPrivateSubnet2DefaultRouteF4F5CFD2
[+] AWS::EC2::Subnet VPC/PrivateSubnet3/Subnet VPCPrivateSubnet3Subnet3EDCD457
[+] AWS::EC2::RouteTable VPC/PrivateSubnet3/RouteTable VPCPrivateSubnet3RouteTable192186F8
[+] AWS::EC2::SubnetRouteTableAssociation VPC/PrivateSubnet3/RouteTableAssociation VPCPrivateSubnet3RouteTableAssociationC28D144E
[+] AWS::EC2::Route VPC/PrivateSubnet3/DefaultRoute VPCPrivateSubnet3DefaultRoute27F311AE
[+] AWS::EC2::InternetGateway VPC/IGW VPCIGWB7E252D3
[+] AWS::EC2::VPCGatewayAttachment VPC/VPCGW VPCVPCGW99B986DC
何も指定しなくてもVPC/Public Subnet x 3AZ/Private Subnet x 3AZ/Route Table/NATGW/IGWが作成されることがわかります。
- CDKによって作成されるCloudFormationスタックのテンプレート(Resources)を確認します。
$ cdk synth AwsCdkVpcSampleStack
Resources:
VPCB9E5F0B4:
Type: AWS::EC2::VPC
Properties:
CidrBlock: 10.0.0.0/16
EnableDnsHostnames: true
EnableDnsSupport: true
InstanceTenancy: default
Tags:
- Key: Name
Value: AwsCdkVpcSampleStack/VPC
Metadata:
aws:cdk:path: AwsCdkVpcSampleStack/VPC/Resource
VPCPublicSubnet1SubnetB4246D30:
Type: AWS::EC2::Subnet
Properties:
CidrBlock: 10.0.0.0/19
VpcId:
Ref: VPCB9E5F0B4
AvailabilityZone: ap-northeast-1a
MapPublicIpOnLaunch: true
Tags:
- Key: Name
Value: AwsCdkVpcSampleStack/VPC/PublicSubnet1
- Key: aws-cdk:subnet-name
Value: Public
- Key: aws-cdk:subnet-type
Value: Public
Metadata:
aws:cdk:path: AwsCdkVpcSampleStack/VPC/PublicSubnet1/Subnet
VPCPublicSubnet1RouteTableFEE4B781:
Type: AWS::EC2::RouteTable
Properties:
VpcId:
Ref: VPCB9E5F0B4
Tags:
- Key: Name
Value: AwsCdkVpcSampleStack/VPC/PublicSubnet1
Metadata:
aws:cdk:path: AwsCdkVpcSampleStack/VPC/PublicSubnet1/RouteTable
VPCPublicSubnet1RouteTableAssociation0B0896DC:
Type: AWS::EC2::SubnetRouteTableAssociation
Properties:
RouteTableId:
Ref: VPCPublicSubnet1RouteTableFEE4B781
SubnetId:
Ref: VPCPublicSubnet1SubnetB4246D30
Metadata:
aws:cdk:path: AwsCdkVpcSampleStack/VPC/PublicSubnet1/RouteTableAssociation
VPCPublicSubnet1DefaultRoute91CEF279:
Type: AWS::EC2::Route
Properties:
RouteTableId:
Ref: VPCPublicSubnet1RouteTableFEE4B781
DestinationCidrBlock: 0.0.0.0/0
GatewayId:
Ref: VPCIGWB7E252D3
DependsOn:
- VPCVPCGW99B986DC
Metadata:
aws:cdk:path: AwsCdkVpcSampleStack/VPC/PublicSubnet1/DefaultRoute
VPCPublicSubnet1EIP6AD938E8:
Type: AWS::EC2::EIP
Properties:
Domain: vpc
Metadata:
aws:cdk:path: AwsCdkVpcSampleStack/VPC/PublicSubnet1/EIP
VPCPublicSubnet1NATGatewayE0556630:
Type: AWS::EC2::NatGateway
Properties:
AllocationId:
Fn::GetAtt:
- VPCPublicSubnet1EIP6AD938E8
- AllocationId
SubnetId:
Ref: VPCPublicSubnet1SubnetB4246D30
Tags:
- Key: Name
Value: AwsCdkVpcSampleStack/VPC/PublicSubnet1
Metadata:
aws:cdk:path: AwsCdkVpcSampleStack/VPC/PublicSubnet1/NATGateway
VPCPublicSubnet2Subnet74179F39:
Type: AWS::EC2::Subnet
Properties:
CidrBlock: 10.0.32.0/19
VpcId:
Ref: VPCB9E5F0B4
AvailabilityZone: ap-northeast-1c
MapPublicIpOnLaunch: true
Tags:
- Key: Name
Value: AwsCdkVpcSampleStack/VPC/PublicSubnet2
- Key: aws-cdk:subnet-name
Value: Public
- Key: aws-cdk:subnet-type
Value: Public
Metadata:
aws:cdk:path: AwsCdkVpcSampleStack/VPC/PublicSubnet2/Subnet
VPCPublicSubnet2RouteTable6F1A15F1:
Type: AWS::EC2::RouteTable
Properties:
VpcId:
Ref: VPCB9E5F0B4
Tags:
- Key: Name
Value: AwsCdkVpcSampleStack/VPC/PublicSubnet2
Metadata:
aws:cdk:path: AwsCdkVpcSampleStack/VPC/PublicSubnet2/RouteTable
VPCPublicSubnet2RouteTableAssociation5A808732:
Type: AWS::EC2::SubnetRouteTableAssociation
Properties:
RouteTableId:
Ref: VPCPublicSubnet2RouteTable6F1A15F1
SubnetId:
Ref: VPCPublicSubnet2Subnet74179F39
Metadata:
aws:cdk:path: AwsCdkVpcSampleStack/VPC/PublicSubnet2/RouteTableAssociation
VPCPublicSubnet2DefaultRouteB7481BBA:
Type: AWS::EC2::Route
Properties:
RouteTableId:
Ref: VPCPublicSubnet2RouteTable6F1A15F1
DestinationCidrBlock: 0.0.0.0/0
GatewayId:
Ref: VPCIGWB7E252D3
DependsOn:
- VPCVPCGW99B986DC
Metadata:
aws:cdk:path: AwsCdkVpcSampleStack/VPC/PublicSubnet2/DefaultRoute
VPCPublicSubnet2EIP4947BC00:
Type: AWS::EC2::EIP
Properties:
Domain: vpc
Metadata:
aws:cdk:path: AwsCdkVpcSampleStack/VPC/PublicSubnet2/EIP
VPCPublicSubnet2NATGateway3C070193:
Type: AWS::EC2::NatGateway
Properties:
AllocationId:
Fn::GetAtt:
- VPCPublicSubnet2EIP4947BC00
- AllocationId
SubnetId:
Ref: VPCPublicSubnet2Subnet74179F39
Tags:
- Key: Name
Value: AwsCdkVpcSampleStack/VPC/PublicSubnet2
Metadata:
aws:cdk:path: AwsCdkVpcSampleStack/VPC/PublicSubnet2/NATGateway
VPCPublicSubnet3Subnet631C5E25:
Type: AWS::EC2::Subnet
Properties:
CidrBlock: 10.0.64.0/19
VpcId:
Ref: VPCB9E5F0B4
AvailabilityZone: ap-northeast-1d
MapPublicIpOnLaunch: true
Tags:
- Key: Name
Value: AwsCdkVpcSampleStack/VPC/PublicSubnet3
- Key: aws-cdk:subnet-name
Value: Public
- Key: aws-cdk:subnet-type
Value: Public
Metadata:
aws:cdk:path: AwsCdkVpcSampleStack/VPC/PublicSubnet3/Subnet
VPCPublicSubnet3RouteTable98AE0E14:
Type: AWS::EC2::RouteTable
Properties:
VpcId:
Ref: VPCB9E5F0B4
Tags:
- Key: Name
Value: AwsCdkVpcSampleStack/VPC/PublicSubnet3
Metadata:
aws:cdk:path: AwsCdkVpcSampleStack/VPC/PublicSubnet3/RouteTable
VPCPublicSubnet3RouteTableAssociation427FE0C6:
Type: AWS::EC2::SubnetRouteTableAssociation
Properties:
RouteTableId:
Ref: VPCPublicSubnet3RouteTable98AE0E14
SubnetId:
Ref: VPCPublicSubnet3Subnet631C5E25
Metadata:
aws:cdk:path: AwsCdkVpcSampleStack/VPC/PublicSubnet3/RouteTableAssociation
VPCPublicSubnet3DefaultRouteA0D29D46:
Type: AWS::EC2::Route
Properties:
RouteTableId:
Ref: VPCPublicSubnet3RouteTable98AE0E14
DestinationCidrBlock: 0.0.0.0/0
GatewayId:
Ref: VPCIGWB7E252D3
DependsOn:
- VPCVPCGW99B986DC
Metadata:
aws:cdk:path: AwsCdkVpcSampleStack/VPC/PublicSubnet3/DefaultRoute
VPCPublicSubnet3EIPAD4BC883:
Type: AWS::EC2::EIP
Properties:
Domain: vpc
Metadata:
aws:cdk:path: AwsCdkVpcSampleStack/VPC/PublicSubnet3/EIP
VPCPublicSubnet3NATGatewayD3048F5C:
Type: AWS::EC2::NatGateway
Properties:
AllocationId:
Fn::GetAtt:
- VPCPublicSubnet3EIPAD4BC883
- AllocationId
SubnetId:
Ref: VPCPublicSubnet3Subnet631C5E25
Tags:
- Key: Name
Value: AwsCdkVpcSampleStack/VPC/PublicSubnet3
Metadata:
aws:cdk:path: AwsCdkVpcSampleStack/VPC/PublicSubnet3/NATGateway
VPCPrivateSubnet1Subnet8BCA10E0:
Type: AWS::EC2::Subnet
Properties:
CidrBlock: 10.0.96.0/19
VpcId:
Ref: VPCB9E5F0B4
AvailabilityZone: ap-northeast-1a
MapPublicIpOnLaunch: false
Tags:
- Key: Name
Value: AwsCdkVpcSampleStack/VPC/PrivateSubnet1
- Key: aws-cdk:subnet-name
Value: Private
- Key: aws-cdk:subnet-type
Value: Private
Metadata:
aws:cdk:path: AwsCdkVpcSampleStack/VPC/PrivateSubnet1/Subnet
VPCPrivateSubnet1RouteTableBE8A6027:
Type: AWS::EC2::RouteTable
Properties:
VpcId:
Ref: VPCB9E5F0B4
Tags:
- Key: Name
Value: AwsCdkVpcSampleStack/VPC/PrivateSubnet1
Metadata:
aws:cdk:path: AwsCdkVpcSampleStack/VPC/PrivateSubnet1/RouteTable
VPCPrivateSubnet1RouteTableAssociation347902D1:
Type: AWS::EC2::SubnetRouteTableAssociation
Properties:
RouteTableId:
Ref: VPCPrivateSubnet1RouteTableBE8A6027
SubnetId:
Ref: VPCPrivateSubnet1Subnet8BCA10E0
Metadata:
aws:cdk:path: AwsCdkVpcSampleStack/VPC/PrivateSubnet1/RouteTableAssociation
VPCPrivateSubnet1DefaultRouteAE1D6490:
Type: AWS::EC2::Route
Properties:
RouteTableId:
Ref: VPCPrivateSubnet1RouteTableBE8A6027
DestinationCidrBlock: 0.0.0.0/0
NatGatewayId:
Ref: VPCPublicSubnet1NATGatewayE0556630
Metadata:
aws:cdk:path: AwsCdkVpcSampleStack/VPC/PrivateSubnet1/DefaultRoute
VPCPrivateSubnet2SubnetCFCDAA7A:
Type: AWS::EC2::Subnet
Properties:
CidrBlock: 10.0.128.0/19
VpcId:
Ref: VPCB9E5F0B4
AvailabilityZone: ap-northeast-1c
MapPublicIpOnLaunch: false
Tags:
- Key: Name
Value: AwsCdkVpcSampleStack/VPC/PrivateSubnet2
- Key: aws-cdk:subnet-name
Value: Private
- Key: aws-cdk:subnet-type
Value: Private
Metadata:
aws:cdk:path: AwsCdkVpcSampleStack/VPC/PrivateSubnet2/Subnet
VPCPrivateSubnet2RouteTable0A19E10E:
Type: AWS::EC2::RouteTable
Properties:
VpcId:
Ref: VPCB9E5F0B4
Tags:
- Key: Name
Value: AwsCdkVpcSampleStack/VPC/PrivateSubnet2
Metadata:
aws:cdk:path: AwsCdkVpcSampleStack/VPC/PrivateSubnet2/RouteTable
VPCPrivateSubnet2RouteTableAssociation0C73D413:
Type: AWS::EC2::SubnetRouteTableAssociation
Properties:
RouteTableId:
Ref: VPCPrivateSubnet2RouteTable0A19E10E
SubnetId:
Ref: VPCPrivateSubnet2SubnetCFCDAA7A
Metadata:
aws:cdk:path: AwsCdkVpcSampleStack/VPC/PrivateSubnet2/RouteTableAssociation
VPCPrivateSubnet2DefaultRouteF4F5CFD2:
Type: AWS::EC2::Route
Properties:
RouteTableId:
Ref: VPCPrivateSubnet2RouteTable0A19E10E
DestinationCidrBlock: 0.0.0.0/0
NatGatewayId:
Ref: VPCPublicSubnet2NATGateway3C070193
Metadata:
aws:cdk:path: AwsCdkVpcSampleStack/VPC/PrivateSubnet2/DefaultRoute
VPCPrivateSubnet3Subnet3EDCD457:
Type: AWS::EC2::Subnet
Properties:
CidrBlock: 10.0.160.0/19
VpcId:
Ref: VPCB9E5F0B4
AvailabilityZone: ap-northeast-1d
MapPublicIpOnLaunch: false
Tags:
- Key: Name
Value: AwsCdkVpcSampleStack/VPC/PrivateSubnet3
- Key: aws-cdk:subnet-name
Value: Private
- Key: aws-cdk:subnet-type
Value: Private
Metadata:
aws:cdk:path: AwsCdkVpcSampleStack/VPC/PrivateSubnet3/Subnet
VPCPrivateSubnet3RouteTable192186F8:
Type: AWS::EC2::RouteTable
Properties:
VpcId:
Ref: VPCB9E5F0B4
Tags:
- Key: Name
Value: AwsCdkVpcSampleStack/VPC/PrivateSubnet3
Metadata:
aws:cdk:path: AwsCdkVpcSampleStack/VPC/PrivateSubnet3/RouteTable
VPCPrivateSubnet3RouteTableAssociationC28D144E:
Type: AWS::EC2::SubnetRouteTableAssociation
Properties:
RouteTableId:
Ref: VPCPrivateSubnet3RouteTable192186F8
SubnetId:
Ref: VPCPrivateSubnet3Subnet3EDCD457
Metadata:
aws:cdk:path: AwsCdkVpcSampleStack/VPC/PrivateSubnet3/RouteTableAssociation
VPCPrivateSubnet3DefaultRoute27F311AE:
Type: AWS::EC2::Route
Properties:
RouteTableId:
Ref: VPCPrivateSubnet3RouteTable192186F8
DestinationCidrBlock: 0.0.0.0/0
NatGatewayId:
Ref: VPCPublicSubnet3NATGatewayD3048F5C
Metadata:
aws:cdk:path: AwsCdkVpcSampleStack/VPC/PrivateSubnet3/DefaultRoute
VPCIGWB7E252D3:
Type: AWS::EC2::InternetGateway
Properties:
Tags:
- Key: Name
Value: AwsCdkVpcSampleStack/VPC
Metadata:
aws:cdk:path: AwsCdkVpcSampleStack/VPC/IGW
VPCVPCGW99B986DC:
Type: AWS::EC2::VPCGatewayAttachment
Properties:
VpcId:
Ref: VPCB9E5F0B4
InternetGatewayId:
Ref: VPCIGWB7E252D3
Metadata:
aws:cdk:path: AwsCdkVpcSampleStack/VPC/VPCGW
CDKMetadata:
Type: AWS::CDK::Metadata
Properties:
Modules: aws-cdk=0.22.0,@aws-cdk/aws-ec2=0.22.0,@aws-cdk/cdk=0.22.0,@aws-cdk/cx-api=0.22.0,jsii-runtime=node.js/v10.2.1
諸々といい感じに定義されています。IGWから直接インターネットと通信できるPublic Subnetと、NATGW経由でEgressの通信ができるPrivate Subnetが作成されることになります。デフォルトのVPCのCIDRは10.0.0.0/16、各サブネットは/19と大きく切られています。
- スタックをデプロイします。
$ cdk deploy
AwsCdkVpcSampleStack: deploying...
AwsCdkVpcSampleStack: creating CloudFormation changeset...
0/35 | 17:12:26 | CREATE_IN_PROGRESS | AWS::CloudFormation::Stack | AwsCdkVpcSampleStack User Initiated
0/35 | 17:12:31 | CREATE_IN_PROGRESS | AWS::EC2::EIP | VPC/PublicSubnet2/EIP (VPCPublicSubnet2EIP4947BC00)
0/35 | 17:12:31 | CREATE_IN_PROGRESS | AWS::EC2::EIP | VPC/PublicSubnet3/EIP (VPCPublicSubnet3EIPAD4BC883)
0/35 | 17:12:31 | CREATE_IN_PROGRESS | AWS::CDK::Metadata | CDKMetadata
0/35 | 17:12:32 | CREATE_IN_PROGRESS | AWS::EC2::InternetGateway | VPC/IGW (VPCIGWB7E252D3)
0/35 | 17:12:32 | CREATE_IN_PROGRESS | AWS::EC2::EIP | VPC/PublicSubnet1/EIP (VPCPublicSubnet1EIP6AD938E8)
0/35 | 17:12:32 | CREATE_IN_PROGRESS | AWS::EC2::VPC | VPC (VPCB9E5F0B4)
0/35 | 17:12:32 | CREATE_IN_PROGRESS | AWS::EC2::InternetGateway | VPC/IGW (VPCIGWB7E252D3) Resource creation Initiated
0/35 | 17:12:32 | CREATE_IN_PROGRESS | AWS::EC2::EIP | VPC/PublicSubnet2/EIP (VPCPublicSubnet2EIP4947BC00) Resourcecreation Initiated
0/35 | 17:12:32 | CREATE_IN_PROGRESS | AWS::EC2::EIP | VPC/PublicSubnet1/EIP (VPCPublicSubnet1EIP6AD938E8) Resourcecreation Initiated
0/35 | 17:12:32 | CREATE_IN_PROGRESS | AWS::EC2::EIP | VPC/PublicSubnet3/EIP (VPCPublicSubnet3EIPAD4BC883) Resourcecreation Initiated
0/35 | 17:12:32 | CREATE_IN_PROGRESS | AWS::EC2::VPC | VPC (VPCB9E5F0B4) Resource creation Initiated
0/35 | 17:12:35 | CREATE_IN_PROGRESS | AWS::CDK::Metadata | CDKMetadata Resource creation Initiated
1/35 | 17:12:35 | CREATE_COMPLETE | AWS::CDK::Metadata | CDKMetadata
2/35 | 17:12:48 | CREATE_COMPLETE | AWS::EC2::EIP | VPC/PublicSubnet2/EIP (VPCPublicSubnet2EIP4947BC00)
3/35 | 17:12:48 | CREATE_COMPLETE | AWS::EC2::EIP | VPC/PublicSubnet3/EIP (VPCPublicSubnet3EIPAD4BC883)
4/35 | 17:12:48 | CREATE_COMPLETE | AWS::EC2::EIP | VPC/PublicSubnet1/EIP (VPCPublicSubnet1EIP6AD938E8)
5/35 | 17:12:49 | CREATE_COMPLETE | AWS::EC2::InternetGateway | VPC/IGW (VPCIGWB7E252D3)
6/35 | 17:12:50 | CREATE_COMPLETE | AWS::EC2::VPC | VPC (VPCB9E5F0B4)
6/35 | 17:12:53 | CREATE_IN_PROGRESS | AWS::EC2::Subnet | VPC/PrivateSubnet2/Subnet (VPCPrivateSubnet2SubnetCFCDAA7A)
6/35 | 17:12:53 | CREATE_IN_PROGRESS | AWS::EC2::Subnet | VPC/PublicSubnet2/Subnet (VPCPublicSubnet2Subnet74179F39)
6/35 | 17:12:53 | CREATE_IN_PROGRESS | AWS::EC2::RouteTable | VPC/PublicSubnet2/RouteTable (VPCPublicSubnet2RouteTable6F1A15F1)
6/35 | 17:12:53 | CREATE_IN_PROGRESS | AWS::EC2::Subnet | VPC/PrivateSubnet3/Subnet (VPCPrivateSubnet3Subnet3EDCD457)
6/35 | 17:12:53 | CREATE_IN_PROGRESS | AWS::EC2::Subnet | VPC/PublicSubnet1/Subnet (VPCPublicSubnet1SubnetB4246D30)
6/35 | 17:12:53 | CREATE_IN_PROGRESS | AWS::EC2::RouteTable | VPC/PublicSubnet1/RouteTable (VPCPublicSubnet1RouteTableFEE4B781)
6/35 | 17:12:53 | CREATE_IN_PROGRESS | AWS::EC2::RouteTable | VPC/PrivateSubnet1/RouteTable (VPCPrivateSubnet1RouteTableBE8A6027)
6/35 | 17:12:53 | CREATE_IN_PROGRESS | AWS::EC2::RouteTable | VPC/PrivateSubnet3/RouteTable (VPCPrivateSubnet3RouteTable192186F8)
6/35 | 17:12:53 | CREATE_IN_PROGRESS | AWS::EC2::Subnet | VPC/PrivateSubnet1/Subnet (VPCPrivateSubnet1Subnet8BCA10E0)
6/35 | 17:12:53 | CREATE_IN_PROGRESS | AWS::EC2::RouteTable | VPC/PrivateSubnet2/RouteTable (VPCPrivateSubnet2RouteTable0A19E10E)
6/35 | 17:12:53 | CREATE_IN_PROGRESS | AWS::EC2::RouteTable | VPC/PublicSubnet3/RouteTable (VPCPublicSubnet3RouteTable98AE0E14)
6/35 | 17:12:53 | CREATE_IN_PROGRESS | AWS::EC2::RouteTable | VPC/PublicSubnet2/RouteTable (VPCPublicSubnet2RouteTable6F1A15F1) Resource creation Initiated
6/35 | 17:12:53 | CREATE_IN_PROGRESS | AWS::EC2::Subnet | VPC/PublicSubnet3/Subnet (VPCPublicSubnet3Subnet631C5E25)
6/35 | 17:12:53 | CREATE_IN_PROGRESS | AWS::EC2::VPCGatewayAttachment | VPC/VPCGW (VPCVPCGW99B986DC)
6/35 | 17:12:53 | CREATE_IN_PROGRESS | AWS::EC2::RouteTable | VPC/PrivateSubnet1/RouteTable (VPCPrivateSubnet1RouteTableBE8A6027) Resource creation Initiated
6/35 | 17:12:53 | CREATE_IN_PROGRESS | AWS::EC2::RouteTable | VPC/PrivateSubnet3/RouteTable (VPCPrivateSubnet3RouteTable192186F8) Resource creation Initiated
6/35 | 17:12:53 | CREATE_IN_PROGRESS | AWS::EC2::Subnet | VPC/PrivateSubnet2/Subnet (VPCPrivateSubnet2SubnetCFCDAA7A) Resource creation Initiated
6/35 | 17:12:53 | CREATE_IN_PROGRESS | AWS::EC2::Subnet | VPC/PrivateSubnet3/Subnet (VPCPrivateSubnet3Subnet3EDCD457) Resource creation Initiated
6/35 | 17:12:53 | CREATE_IN_PROGRESS | AWS::EC2::RouteTable | VPC/PrivateSubnet2/RouteTable (VPCPrivateSubnet2RouteTable0A19E10E) Resource creation Initiated
6/35 | 17:12:53 | CREATE_IN_PROGRESS | AWS::EC2::Subnet | VPC/PublicSubnet2/Subnet (VPCPublicSubnet2Subnet74179F39) Resource creation Initiated
6/35 | 17:12:53 | CREATE_IN_PROGRESS | AWS::EC2::Subnet | VPC/PrivateSubnet1/Subnet (VPCPrivateSubnet1Subnet8BCA10E0) Resource creation Initiated
6/35 | 17:12:53 | CREATE_IN_PROGRESS | AWS::EC2::RouteTable | VPC/PublicSubnet3/RouteTable (VPCPublicSubnet3RouteTable98AE0E14) Resource creation Initiated
6/35 | 17:12:54 | CREATE_IN_PROGRESS | AWS::EC2::RouteTable | VPC/PublicSubnet1/RouteTable (VPCPublicSubnet1RouteTableFEE4B781) Resource creation Initiated
6/35 | 17:12:54 | CREATE_IN_PROGRESS | AWS::EC2::Subnet | VPC/PublicSubnet1/Subnet (VPCPublicSubnet1SubnetB4246D30) Resource creation Initiated
6/35 | 17:12:54 | CREATE_IN_PROGRESS | AWS::EC2::VPCGatewayAttachment | VPC/VPCGW (VPCVPCGW99B986DC) Resource creation Initiated
6/35 | 17:12:54 | CREATE_IN_PROGRESS | AWS::EC2::Subnet | VPC/PublicSubnet3/Subnet (VPCPublicSubnet3Subnet631C5E25) Resource creation Initiated
7/35 | 17:12:54 | CREATE_COMPLETE | AWS::EC2::RouteTable | VPC/PublicSubnet2/RouteTable (VPCPublicSubnet2RouteTable6F1A15F1)
8/35 | 17:12:54 | CREATE_COMPLETE | AWS::EC2::RouteTable | VPC/PrivateSubnet3/RouteTable (VPCPrivateSubnet3RouteTable192186F8)
9/35 | 17:12:54 | CREATE_COMPLETE | AWS::EC2::RouteTable | VPC/PrivateSubnet2/RouteTable (VPCPrivateSubnet2RouteTable0A19E10E)
10/35 | 17:12:54 | CREATE_COMPLETE | AWS::EC2::RouteTable | VPC/PrivateSubnet1/RouteTable (VPCPrivateSubnet1RouteTableBE8A6027)
11/35 | 17:12:55 | CREATE_COMPLETE | AWS::EC2::RouteTable | VPC/PublicSubnet1/RouteTable (VPCPublicSubnet1RouteTableFEE4B781)
12/35 | 17:12:55 | CREATE_COMPLETE | AWS::EC2::RouteTable | VPC/PublicSubnet3/RouteTable (VPCPublicSubnet3RouteTable98AE0E14)
13/35 | 17:13:09 | CREATE_COMPLETE | AWS::EC2::VPCGatewayAttachment | VPC/VPCGW (VPCVPCGW99B986DC)
14/35 | 17:13:10 | CREATE_COMPLETE | AWS::EC2::Subnet | VPC/PublicSubnet2/Subnet (VPCPublicSubnet2Subnet74179F39)
15/35 | 17:13:10 | CREATE_COMPLETE | AWS::EC2::Subnet | VPC/PrivateSubnet1/Subnet (VPCPrivateSubnet1Subnet8BCA10E0)
16/35 | 17:13:10 | CREATE_COMPLETE | AWS::EC2::Subnet | VPC/PrivateSubnet2/Subnet (VPCPrivateSubnet2SubnetCFCDAA7A)
17/35 | 17:13:10 | CREATE_COMPLETE | AWS::EC2::Subnet | VPC/PrivateSubnet3/Subnet (VPCPrivateSubnet3Subnet3EDCD457)
18/35 | 17:13:10 | CREATE_COMPLETE | AWS::EC2::Subnet | VPC/PublicSubnet1/Subnet (VPCPublicSubnet1SubnetB4246D30)
19/35 | 17:13:10 | CREATE_COMPLETE | AWS::EC2::Subnet | VPC/PublicSubnet3/Subnet (VPCPublicSubnet3Subnet631C5E25)
19/35 | 17:13:12 | CREATE_IN_PROGRESS | AWS::EC2::Route | VPC/PublicSubnet2/DefaultRoute (VPCPublicSubnet2DefaultRouteB7481BBA)
19/35 | 17:13:12 | CREATE_IN_PROGRESS | AWS::EC2::Route | VPC/PublicSubnet3/DefaultRoute (VPCPublicSubnet3DefaultRouteA0D29D46)
19/35 | 17:13:13 | CREATE_IN_PROGRESS | AWS::EC2::Route | VPC/PublicSubnet1/DefaultRoute (VPCPublicSubnet1DefaultRoute91CEF279)
19/35 | 17:13:13 | CREATE_IN_PROGRESS | AWS::EC2::SubnetRouteTableAssociation | VPC/PublicSubnet2/RouteTableAssociation (VPCPublicSubnet2RouteTableAssociation5A808732)
19/35 | 17:13:13 | CREATE_IN_PROGRESS | AWS::EC2::NatGateway | VPC/PublicSubnet2/NATGateway (VPCPublicSubnet2NATGateway3C070193)
19/35 | 17:13:13 | CREATE_IN_PROGRESS | AWS::EC2::Route | VPC/PublicSubnet2/DefaultRoute (VPCPublicSubnet2DefaultRouteB7481BBA) Resource creation Initiated
19/35 | 17:13:13 | CREATE_IN_PROGRESS | AWS::EC2::SubnetRouteTableAssociation | VPC/PrivateSubnet3/RouteTableAssociation (VPCPrivateSubnet3RouteTableAssociationC28D144E)
19/35 | 17:13:13 | CREATE_IN_PROGRESS | AWS::EC2::NatGateway | VPC/PublicSubnet1/NATGateway (VPCPublicSubnet1NATGatewayE0556630)
19/35 | 17:13:13 | CREATE_IN_PROGRESS | AWS::EC2::Route | VPC/PublicSubnet3/DefaultRoute (VPCPublicSubnet3DefaultRouteA0D29D46) Resource creation Initiated
19/35 | 17:13:13 | CREATE_IN_PROGRESS | AWS::EC2::SubnetRouteTableAssociation | VPC/PublicSubnet1/RouteTableAssociation (VPCPublicSubnet1RouteTableAssociation0B0896DC)
19/35 | 17:13:13 | CREATE_IN_PROGRESS | AWS::EC2::Route | VPC/PublicSubnet1/DefaultRoute (VPCPublicSubnet1DefaultRoute91CEF279) Resource creation Initiated
19/35 | 17:13:14 | CREATE_IN_PROGRESS | AWS::EC2::SubnetRouteTableAssociation | VPC/PrivateSubnet2/RouteTableAssociation (VPCPrivateSubnet2RouteTableAssociation0C73D413)
19/35 | 17:13:14 | CREATE_IN_PROGRESS | AWS::EC2::NatGateway | VPC/PublicSubnet2/NATGateway (VPCPublicSubnet2NATGateway3C070193) Resource creation Initiated
19/35 | 17:13:14 | CREATE_IN_PROGRESS | AWS::EC2::NatGateway | VPC/PublicSubnet1/NATGateway (VPCPublicSubnet1NATGatewayE0556630) Resource creation Initiated
19/35 | 17:13:14 | CREATE_IN_PROGRESS | AWS::EC2::NatGateway | VPC/PublicSubnet3/NATGateway (VPCPublicSubnet3NATGatewayD3048F5C)
19/35 | 17:13:14 | CREATE_IN_PROGRESS | AWS::EC2::SubnetRouteTableAssociation | VPC/PublicSubnet3/RouteTableAssociation (VPCPublicSubnet3RouteTableAssociation427FE0C6)
19/35 | 17:13:14 | CREATE_IN_PROGRESS | AWS::EC2::SubnetRouteTableAssociation | VPC/PublicSubnet2/RouteTableAssociation (VPCPublicSubnet2RouteTableAssociation5A808732) Resource creation Initiated
19/35 | 17:13:14 | CREATE_IN_PROGRESS | AWS::EC2::SubnetRouteTableAssociation | VPC/PrivateSubnet1/RouteTableAssociation (VPCPrivateSubnet1RouteTableAssociation347902D1)
19/35 | 17:13:14 | CREATE_IN_PROGRESS | AWS::EC2::SubnetRouteTableAssociation | VPC/PrivateSubnet3/RouteTableAssociation (VPCPrivateSubnet3RouteTableAssociationC28D144E) Resource creation Initiated
19/35 | 17:13:14 | CREATE_IN_PROGRESS | AWS::EC2::NatGateway | VPC/PublicSubnet3/NATGateway (VPCPublicSubnet3NATGatewayD3048F5C) Resource creation Initiated
19/35 | 17:13:15 | CREATE_IN_PROGRESS | AWS::EC2::SubnetRouteTableAssociation | VPC/PrivateSubnet2/RouteTableAssociation (VPCPrivateSubnet2RouteTableAssociation0C73D413) Resource creation Initiated
19/35 | 17:13:15 | CREATE_IN_PROGRESS | AWS::EC2::SubnetRouteTableAssociation | VPC/PublicSubnet1/RouteTableAssociation (VPCPublicSubnet1RouteTableAssociation0B0896DC) Resource creation Initiated
19/35 | 17:13:15 | CREATE_IN_PROGRESS | AWS::EC2::SubnetRouteTableAssociation | VPC/PublicSubnet3/RouteTableAssociation (VPCPublicSubnet3RouteTableAssociation427FE0C6) Resource creation Initiated
19/35 | 17:13:15 | CREATE_IN_PROGRESS | AWS::EC2::SubnetRouteTableAssociation | VPC/PrivateSubnet1/RouteTableAssociation (VPCPrivateSubnet1RouteTableAssociation347902D1) Resource creation Initiated
20/35 | 17:13:29 | CREATE_COMPLETE | AWS::EC2::Route | VPC/PublicSubnet2/DefaultRoute (VPCPublicSubnet2DefaultRouteB7481BBA)
21/35 | 17:13:29 | CREATE_COMPLETE | AWS::EC2::Route | VPC/PublicSubnet3/DefaultRoute (VPCPublicSubnet3DefaultRouteA0D29D46)
22/35 | 17:13:29 | CREATE_COMPLETE | AWS::EC2::Route | VPC/PublicSubnet1/DefaultRoute (VPCPublicSubnet1DefaultRoute91CEF279)
23/35 | 17:13:30 | CREATE_COMPLETE | AWS::EC2::SubnetRouteTableAssociation | VPC/PublicSubnet2/RouteTableAssociation (VPCPublicSubnet2RouteTableAssociation5A808732)
24/35 | 17:13:30 | CREATE_COMPLETE | AWS::EC2::SubnetRouteTableAssociation | VPC/PrivateSubnet3/RouteTableAssociation (VPCPrivateSubnet3RouteTableAssociationC28D144E)
25/35 | 17:13:30 | CREATE_COMPLETE | AWS::EC2::SubnetRouteTableAssociation | VPC/PrivateSubnet2/RouteTableAssociation (VPCPrivateSubnet2RouteTableAssociation0C73D413)
26/35 | 17:13:30 | CREATE_COMPLETE | AWS::EC2::SubnetRouteTableAssociation | VPC/PublicSubnet1/RouteTableAssociation (VPCPublicSubnet1RouteTableAssociation0B0896DC)
27/35 | 17:13:31 | CREATE_COMPLETE | AWS::EC2::SubnetRouteTableAssociation | VPC/PublicSubnet3/RouteTableAssociation (VPCPublicSubnet3RouteTableAssociation427FE0C6)
28/35 | 17:13:31 | CREATE_COMPLETE | AWS::EC2::SubnetRouteTableAssociation | VPC/PrivateSubnet1/RouteTableAssociation (VPCPrivateSubnet1RouteTableAssociation347902D1)
28/35 Currently in progress: AwsCdkVpcSampleStack, VPCPublicSubnet2NATGateway3C070193, VPCPublicSubnet1NATGatewayE0556630, VPCPublicSubnet3NATGatewayD3048F5C
29/35 | 17:14:47 | CREATE_COMPLETE | AWS::EC2::NatGateway | VPC/PublicSubnet3/NATGateway (VPCPublicSubnet3NATGatewayD3048F5C)
30/35 | 17:14:47 | CREATE_COMPLETE | AWS::EC2::NatGateway | VPC/PublicSubnet2/NATGateway (VPCPublicSubnet2NATGateway3C070193)
30/35 | 17:14:51 | CREATE_IN_PROGRESS | AWS::EC2::Route | VPC/PrivateSubnet3/DefaultRoute (VPCPrivateSubnet3DefaultRoute27F311AE)
30/35 | 17:14:51 | CREATE_IN_PROGRESS | AWS::EC2::Route | VPC/PrivateSubnet2/DefaultRoute (VPCPrivateSubnet2DefaultRouteF4F5CFD2)
30/35 | 17:14:52 | CREATE_IN_PROGRESS | AWS::EC2::Route | VPC/PrivateSubnet3/DefaultRoute (VPCPrivateSubnet3DefaultRoute27F311AE) Resource creation Initiated
30/35 | 17:14:52 | CREATE_IN_PROGRESS | AWS::EC2::Route | VPC/PrivateSubnet2/DefaultRoute (VPCPrivateSubnet2DefaultRouteF4F5CFD2) Resource creation Initiated
31/35 | 17:15:03 | CREATE_COMPLETE | AWS::EC2::NatGateway | VPC/PublicSubnet1/NATGateway (VPCPublicSubnet1NATGatewayE0556630)
31/35 | 17:15:07 | CREATE_IN_PROGRESS | AWS::EC2::Route | VPC/PrivateSubnet1/DefaultRoute (VPCPrivateSubnet1DefaultRouteAE1D6490)
32/35 | 17:15:07 | CREATE_COMPLETE | AWS::EC2::Route | VPC/PrivateSubnet3/DefaultRoute (VPCPrivateSubnet3DefaultRoute27F311AE)
33/35 | 17:15:07 | CREATE_COMPLETE | AWS::EC2::Route | VPC/PrivateSubnet2/DefaultRoute (VPCPrivateSubnet2DefaultRouteF4F5CFD2)
33/35 | 17:15:07 | CREATE_IN_PROGRESS | AWS::EC2::Route | VPC/PrivateSubnet1/DefaultRoute (VPCPrivateSubnet1DefaultRouteAE1D6490) Resource creation Initiated
34/35 | 17:15:23 | CREATE_COMPLETE | AWS::EC2::Route | VPC/PrivateSubnet1/DefaultRoute (VPCPrivateSubnet1DefaultRouteAE1D6490)
35/35 | 17:15:25 | CREATE_COMPLETE | AWS::CloudFormation::Stack | AwsCdkVpcSampleStack
✅ AwsCdkVpcSampleStack
Stack ARN:
arn:aws:cloudformation:ap-northeast-1:xxxxxxxxxxxx:stack/AwsCdkVpcSampleStack/c8b80820-1641-11e9-a0e4-0aa20f14f06e
- 作成されたCFnスタックを確認します。
$ aws cloudformation describe-stacks \
--stack-name AwsCdkVpcSampleStack
{
"Stacks": [
{
"StackId": "arn:aws:cloudformation:ap-northeast-1:xxxxxxxx:stack/AwsCdkVpcSampleStack/c8b80820-1641-11e9-a0e4-0aa20f14f06e",
"StackName": "AwsCdkVpcSampleStack",
"ChangeSetId": "arn:aws:cloudformation:ap-northeast-1:xxxxxxxxxxxx:changeSet/CDK-32b9a889-3f7e-429b-8058-1190aa6be4f1/aa63d1ae-6aef-4a80-a397-7d9a8ff23361",
"CreationTime": "2019-01-12T08:12:20.814Z",
"LastUpdatedTime": "2019-01-12T08:12:26.347Z",
"RollbackConfiguration": {},
"StackStatus": "CREATE_COMPLETE",
"DisableRollback": false,
"NotificationARNs": [],
"Capabilities": [
"CAPABILITY_IAM",
"CAPABILITY_NAMED_IAM"
],
"Tags": [],
"EnableTerminationProtection": false,
"DriftInformation": {
"StackDriftStatus": "NOT_CHECKED"
}
}
]
}
- VPC IDを確認します。
$ aws cloudformation describe-stack-resources \
--stack-name AwsCdkVpcSampleStack \
--query StackResources[?ResourceType==\`AWS::EC2::VPC\`]
[
{
"StackName": "AwsCdkVpcSampleStack",
"StackId": "arn:aws:cloudformation:ap-northeast-1:xxxxxxxxxxxx:stack/AwsCdkVpcSampleStack/c8b80820-1641-11e9-a0e4-0aa20f14f06e",
"LogicalResourceId": "VPCB9E5F0B4",
"PhysicalResourceId": "vpc-0bf2dd4b8911a4c06",
"ResourceType": "AWS::EC2::VPC",
"Timestamp": "2019-01-12T08:12:50.036Z",
"ResourceStatus": "CREATE_COMPLETE",
"DriftInformation": {
"StackResourceDriftStatus": "NOT_CHECKED"
}
}
]
- VPCを確認します。
$ aws ec2 describe-vpcs --vpc-ids vpc-0bf2dd4b8911a4c06
{
"Vpcs": [
{
"CidrBlock": "10.0.0.0/16",
"DhcpOptionsId": "dopt-a74006c0",
"State": "available",
"VpcId": "vpc-0bf2dd4b8911a4c06",
"OwnerId": "xxxxxxxxxxxx",
"InstanceTenancy": "default",
"CidrBlockAssociationSet": [
{
"AssociationId": "vpc-cidr-assoc-06e23c526e705716e",
"CidrBlock": "10.0.0.0/16",
"CidrBlockState": {
"State": "associated"
}
}
],
"IsDefault": false,
"Tags": [
{
"Key": "aws:cloudformation:stack-name",
"Value": "AwsCdkVpcSampleStack"
},
{
"Key": "Name",
"Value": "AwsCdkVpcSampleStack/VPC"
},
{
"Key": "aws:cloudformation:stack-id",
"Value": "arn:aws:cloudformation:ap-northeast-1:xxxxxxxxxxxx:stack/AwsCdkVpcSampleStack/c8b80820-1641-11e9-a0e4-0aa20f14f06e"
},
{
"Key": "aws:cloudformation:logical-id",
"Value": "VPCB9E5F0B4"
}
]
}
]
}
VPC CIDR、Subnet Type、 Subnet CIDRを指定してVPCを作成する。
今度はVPCのCIDR、Subnet Type、 SubnetのCIDRを指定してVPCを作成します。新規にaws-cdk-vpc-sample2
ディレクトリを作ってプロジェクトの初期化とec2モジュールのインストールを実施しておきます。
-
lib/aws-cdk-vpc-sample.ts
を編集します。
import cdk = require('@aws-cdk/cdk');
import ec2 = require('@aws-cdk/aws-ec2');
export class AwsCdkVpcSample2Stack extends cdk.Stack {
constructor(scope: cdk.App, id: string, props?: cdk.StackProps) {
super(scope, id, props);
new ec2.VpcNetwork(this, 'VPC', {
cidr: '10.0.0.0/16',
subnetConfiguration: [
{
cidrMask: 24,
name: 'Ingress',
subnetType: ec2.SubnetType.Public,
},
{
cidrMask: 24,
name: 'Application',
subnetType: ec2.SubnetType.Private,
},
{
cidrMask: 28,
name: 'Database',
subnetType: ec2.SubnetType.Isolated,
}
],
});
}
}
雛形として用意されているSubnet Typeには以下があり、ルートテーブルが適切に設定されます。
サブネット種類 | 通信ポリシー |
---|---|
Public | インターネットと両方向に通信可能 |
Private | インターネットへはNATGWを通してアウトバウンドのみ通信可能 |
Isolated | インターネットへは通信不可 |
-
bin/aws-cdk-vpc-sample2.ts
を編集し、リージョンをStack作成時のプロパティとして指定してみます。
#!/usr/bin/env node
import cdk = require('@aws-cdk/cdk');
import { AwsCdkVpcSample2Stack } from '../lib/aws-cdk-vpc-sample2-stack';
const app = new cdk.App();
new AwsCdkVpcSample2Stack(app, 'AwsCdkVpcSample2Stack', { env: { region: 'ap-northeast-1' } }); //展開するリージョンを指定する。ここに展開するアカウントも指定可能。
app.run();
- ビルドします。
$ npm run build
-
cdk diff
コマンドを実行すると作成されるリソースが表示されます。
AWSクレデンシャルが設定されていないとエラーになります。
$ cdk diff
Resources
[+] AWS::EC2::VPC VPC VPCB9E5F0B4
[+] AWS::EC2::Subnet VPC/IngressSubnet1/Subnet VPCIngressSubnet1Subnet4257CD65
[+] AWS::EC2::RouteTable VPC/IngressSubnet1/RouteTable VPCIngressSubnet1RouteTable9BE753A6
[+] AWS::EC2::SubnetRouteTableAssociation VPC/IngressSubnet1/RouteTableAssociation VPCIngressSubnet1RouteTableAssociationCAFE4089
[+] AWS::EC2::Route VPC/IngressSubnet1/DefaultRoute VPCIngressSubnet1DefaultRouteFE025494
[+] AWS::EC2::EIP VPC/IngressSubnet1/EIP VPCIngressSubnet1EIP99406D22
[+] AWS::EC2::NatGateway VPC/IngressSubnet1/NATGateway VPCIngressSubnet1NATGatewayEA4AE80E
[+] AWS::EC2::Subnet VPC/IngressSubnet2/Subnet VPCIngressSubnet2SubnetE0EA735B
[+] AWS::EC2::RouteTable VPC/IngressSubnet2/RouteTable VPCIngressSubnet2RouteTableDFE1B4BC
[+] AWS::EC2::SubnetRouteTableAssociation VPC/IngressSubnet2/RouteTableAssociation VPCIngressSubnet2RouteTableAssociationB244DE25
[+] AWS::EC2::Route VPC/IngressSubnet2/DefaultRoute VPCIngressSubnet2DefaultRoute9FF8300E
[+] AWS::EC2::EIP VPC/IngressSubnet2/EIP VPCIngressSubnet2EIPCE44C233
[+] AWS::EC2::NatGateway VPC/IngressSubnet2/NATGateway VPCIngressSubnet2NATGateway68BB4190
[+] AWS::EC2::Subnet VPC/IngressSubnet3/Subnet VPCIngressSubnet3Subnet5B03B6AE
[+] AWS::EC2::RouteTable VPC/IngressSubnet3/RouteTable VPCIngressSubnet3RouteTableBA29E68D
[+] AWS::EC2::SubnetRouteTableAssociation VPC/IngressSubnet3/RouteTableAssociation VPCIngressSubnet3RouteTableAssociationF8544212
[+] AWS::EC2::Route VPC/IngressSubnet3/DefaultRoute VPCIngressSubnet3DefaultRouteD4DCD60F
[+] AWS::EC2::EIP VPC/IngressSubnet3/EIP VPCIngressSubnet3EIP7A19F11D
[+] AWS::EC2::NatGateway VPC/IngressSubnet3/NATGateway VPCIngressSubnet3NATGatewayF804BFD1
[+] AWS::EC2::Subnet VPC/ApplicationSubnet1/Subnet VPCApplicationSubnet1SubnetCE118F80
[+] AWS::EC2::RouteTable VPC/ApplicationSubnet1/RouteTable VPCApplicationSubnet1RouteTable5B6CE71A
[+] AWS::EC2::SubnetRouteTableAssociation VPC/ApplicationSubnet1/RouteTableAssociation VPCApplicationSubnet1RouteTableAssociation8DF0EAE5
[+] AWS::EC2::Route VPC/ApplicationSubnet1/DefaultRoute VPCApplicationSubnet1DefaultRouteA4E47D36
[+] AWS::EC2::Subnet VPC/ApplicationSubnet2/Subnet VPCApplicationSubnet2Subnet988E96B1
[+] AWS::EC2::RouteTable VPC/ApplicationSubnet2/RouteTable VPCApplicationSubnet2RouteTableFDC3EEE6
[+] AWS::EC2::SubnetRouteTableAssociation VPC/ApplicationSubnet2/RouteTableAssociation VPCApplicationSubnet2RouteTableAssociationD84040F3
[+] AWS::EC2::Route VPC/ApplicationSubnet2/DefaultRoute VPCApplicationSubnet2DefaultRouteC3680A52
[+] AWS::EC2::Subnet VPC/ApplicationSubnet3/Subnet VPCApplicationSubnet3Subnet152008D5
[+] AWS::EC2::RouteTable VPC/ApplicationSubnet3/RouteTable VPCApplicationSubnet3RouteTable29639657
[+] AWS::EC2::SubnetRouteTableAssociation VPC/ApplicationSubnet3/RouteTableAssociation VPCApplicationSubnet3RouteTableAssociationB4462F03
[+] AWS::EC2::Route VPC/ApplicationSubnet3/DefaultRoute VPCApplicationSubnet3DefaultRoute33D8EB24
[+] AWS::EC2::Subnet VPC/DatabaseSubnet1/Subnet VPCDatabaseSubnet1Subnet3E790B6F
[+] AWS::EC2::RouteTable VPC/DatabaseSubnet1/RouteTable VPCDatabaseSubnet1RouteTable50155611
[+] AWS::EC2::SubnetRouteTableAssociation VPC/DatabaseSubnet1/RouteTableAssociation VPCDatabaseSubnet1RouteTableAssociation56EE26FE
[+] AWS::EC2::Subnet VPC/DatabaseSubnet2/Subnet VPCDatabaseSubnet2Subnet93B13DD5
[+] AWS::EC2::RouteTable VPC/DatabaseSubnet2/RouteTable VPCDatabaseSubnet2RouteTable5A3ECF56
[+] AWS::EC2::SubnetRouteTableAssociation VPC/DatabaseSubnet2/RouteTableAssociation VPCDatabaseSubnet2RouteTableAssociation2350B25C
[+] AWS::EC2::Subnet VPC/DatabaseSubnet3/Subnet VPCDatabaseSubnet3SubnetBC9F7BFD
[+] AWS::EC2::RouteTable VPC/DatabaseSubnet3/RouteTable VPCDatabaseSubnet3RouteTableF4BFD0C7
[+] AWS::EC2::SubnetRouteTableAssociation VPC/DatabaseSubnet3/RouteTableAssociation VPCDatabaseSubnet3RouteTableAssociationC74EC212
[+] AWS::EC2::InternetGateway VPC/IGW VPCIGWB7E252D3
[+] AWS::EC2::VPCGatewayAttachment VPC/VPCGW VPCVPCGW99B986DC
- CDKによって作成されるCloudFormationスタックのテンプレート(Resources)を確認します。
$ cdk synth AwsCdkVpcSample2Stack
Resources:
VPCB9E5F0B4:
Type: AWS::EC2::VPC
Properties:
CidrBlock: 10.0.0.0/16
EnableDnsHostnames: true
EnableDnsSupport: true
InstanceTenancy: default
Tags:
- Key: Name
Value: AwsCdkVpcSample2Stack/VPC
Metadata:
aws:cdk:path: AwsCdkVpcSample2Stack/VPC/Resource
VPCIngressSubnet1Subnet4257CD65:
Type: AWS::EC2::Subnet
Properties:
CidrBlock: 10.0.0.0/24
VpcId:
Ref: VPCB9E5F0B4
AvailabilityZone: ap-northeast-1a
MapPublicIpOnLaunch: true
Tags:
- Key: Name
Value: AwsCdkVpcSample2Stack/VPC/IngressSubnet1
- Key: aws-cdk:subnet-name
Value: Ingress
- Key: aws-cdk:subnet-type
Value: Public
Metadata:
aws:cdk:path: AwsCdkVpcSample2Stack/VPC/IngressSubnet1/Subnet
VPCIngressSubnet1RouteTable9BE753A6:
Type: AWS::EC2::RouteTable
Properties:
VpcId:
Ref: VPCB9E5F0B4
Tags:
- Key: Name
Value: AwsCdkVpcSample2Stack/VPC/IngressSubnet1
Metadata:
aws:cdk:path: AwsCdkVpcSample2Stack/VPC/IngressSubnet1/RouteTable
VPCIngressSubnet1RouteTableAssociationCAFE4089:
Type: AWS::EC2::SubnetRouteTableAssociation
Properties:
RouteTableId:
Ref: VPCIngressSubnet1RouteTable9BE753A6
SubnetId:
Ref: VPCIngressSubnet1Subnet4257CD65
Metadata:
aws:cdk:path: AwsCdkVpcSample2Stack/VPC/IngressSubnet1/RouteTableAssociation
VPCIngressSubnet1DefaultRouteFE025494:
Type: AWS::EC2::Route
Properties:
RouteTableId:
Ref: VPCIngressSubnet1RouteTable9BE753A6
DestinationCidrBlock: 0.0.0.0/0
GatewayId:
Ref: VPCIGWB7E252D3
DependsOn:
- VPCVPCGW99B986DC
Metadata:
aws:cdk:path: AwsCdkVpcSample2Stack/VPC/IngressSubnet1/DefaultRoute
VPCIngressSubnet1EIP99406D22:
Type: AWS::EC2::EIP
Properties:
Domain: vpc
Metadata:
aws:cdk:path: AwsCdkVpcSample2Stack/VPC/IngressSubnet1/EIP
VPCIngressSubnet1NATGatewayEA4AE80E:
Type: AWS::EC2::NatGateway
Properties:
AllocationId:
Fn::GetAtt:
- VPCIngressSubnet1EIP99406D22
- AllocationId
SubnetId:
Ref: VPCIngressSubnet1Subnet4257CD65
Tags:
- Key: Name
Value: AwsCdkVpcSample2Stack/VPC/IngressSubnet1
Metadata:
aws:cdk:path: AwsCdkVpcSample2Stack/VPC/IngressSubnet1/NATGateway
VPCIngressSubnet2SubnetE0EA735B:
Type: AWS::EC2::Subnet
Properties:
CidrBlock: 10.0.1.0/24
VpcId:
Ref: VPCB9E5F0B4
AvailabilityZone: ap-northeast-1c
MapPublicIpOnLaunch: true
Tags:
- Key: Name
Value: AwsCdkVpcSample2Stack/VPC/IngressSubnet2
- Key: aws-cdk:subnet-name
Value: Ingress
- Key: aws-cdk:subnet-type
Value: Public
Metadata:
aws:cdk:path: AwsCdkVpcSample2Stack/VPC/IngressSubnet2/Subnet
VPCIngressSubnet2RouteTableDFE1B4BC:
Type: AWS::EC2::RouteTable
Properties:
VpcId:
Ref: VPCB9E5F0B4
Tags:
- Key: Name
Value: AwsCdkVpcSample2Stack/VPC/IngressSubnet2
Metadata:
aws:cdk:path: AwsCdkVpcSample2Stack/VPC/IngressSubnet2/RouteTable
VPCIngressSubnet2RouteTableAssociationB244DE25:
Type: AWS::EC2::SubnetRouteTableAssociation
Properties:
RouteTableId:
Ref: VPCIngressSubnet2RouteTableDFE1B4BC
SubnetId:
Ref: VPCIngressSubnet2SubnetE0EA735B
Metadata:
aws:cdk:path: AwsCdkVpcSample2Stack/VPC/IngressSubnet2/RouteTableAssociation
VPCIngressSubnet2DefaultRoute9FF8300E:
Type: AWS::EC2::Route
Properties:
RouteTableId:
Ref: VPCIngressSubnet2RouteTableDFE1B4BC
DestinationCidrBlock: 0.0.0.0/0
GatewayId:
Ref: VPCIGWB7E252D3
DependsOn:
- VPCVPCGW99B986DC
Metadata:
aws:cdk:path: AwsCdkVpcSample2Stack/VPC/IngressSubnet2/DefaultRoute
VPCIngressSubnet2EIPCE44C233:
Type: AWS::EC2::EIP
Properties:
Domain: vpc
Metadata:
aws:cdk:path: AwsCdkVpcSample2Stack/VPC/IngressSubnet2/EIP
VPCIngressSubnet2NATGateway68BB4190:
Type: AWS::EC2::NatGateway
Properties:
AllocationId:
Fn::GetAtt:
- VPCIngressSubnet2EIPCE44C233
- AllocationId
SubnetId:
Ref: VPCIngressSubnet2SubnetE0EA735B
Tags:
- Key: Name
Value: AwsCdkVpcSample2Stack/VPC/IngressSubnet2
Metadata:
aws:cdk:path: AwsCdkVpcSample2Stack/VPC/IngressSubnet2/NATGateway
VPCIngressSubnet3Subnet5B03B6AE:
Type: AWS::EC2::Subnet
Properties:
CidrBlock: 10.0.2.0/24
VpcId:
Ref: VPCB9E5F0B4
AvailabilityZone: ap-northeast-1d
MapPublicIpOnLaunch: true
Tags:
- Key: Name
Value: AwsCdkVpcSample2Stack/VPC/IngressSubnet3
- Key: aws-cdk:subnet-name
Value: Ingress
- Key: aws-cdk:subnet-type
Value: Public
Metadata:
aws:cdk:path: AwsCdkVpcSample2Stack/VPC/IngressSubnet3/Subnet
VPCIngressSubnet3RouteTableBA29E68D:
Type: AWS::EC2::RouteTable
Properties:
VpcId:
Ref: VPCB9E5F0B4
Tags:
- Key: Name
Value: AwsCdkVpcSample2Stack/VPC/IngressSubnet3
Metadata:
aws:cdk:path: AwsCdkVpcSample2Stack/VPC/IngressSubnet3/RouteTable
VPCIngressSubnet3RouteTableAssociationF8544212:
Type: AWS::EC2::SubnetRouteTableAssociation
Properties:
RouteTableId:
Ref: VPCIngressSubnet3RouteTableBA29E68D
SubnetId:
Ref: VPCIngressSubnet3Subnet5B03B6AE
Metadata:
aws:cdk:path: AwsCdkVpcSample2Stack/VPC/IngressSubnet3/RouteTableAssociation
VPCIngressSubnet3DefaultRouteD4DCD60F:
Type: AWS::EC2::Route
Properties:
RouteTableId:
Ref: VPCIngressSubnet3RouteTableBA29E68D
DestinationCidrBlock: 0.0.0.0/0
GatewayId:
Ref: VPCIGWB7E252D3
DependsOn:
- VPCVPCGW99B986DC
Metadata:
aws:cdk:path: AwsCdkVpcSample2Stack/VPC/IngressSubnet3/DefaultRoute
VPCIngressSubnet3EIP7A19F11D:
Type: AWS::EC2::EIP
Properties:
Domain: vpc
Metadata:
aws:cdk:path: AwsCdkVpcSample2Stack/VPC/IngressSubnet3/EIP
VPCIngressSubnet3NATGatewayF804BFD1:
Type: AWS::EC2::NatGateway
Properties:
AllocationId:
Fn::GetAtt:
- VPCIngressSubnet3EIP7A19F11D
- AllocationId
SubnetId:
Ref: VPCIngressSubnet3Subnet5B03B6AE
Tags:
- Key: Name
Value: AwsCdkVpcSample2Stack/VPC/IngressSubnet3
Metadata:
aws:cdk:path: AwsCdkVpcSample2Stack/VPC/IngressSubnet3/NATGateway
VPCApplicationSubnet1SubnetCE118F80:
Type: AWS::EC2::Subnet
Properties:
CidrBlock: 10.0.3.0/24
VpcId:
Ref: VPCB9E5F0B4
AvailabilityZone: ap-northeast-1a
MapPublicIpOnLaunch: false
Tags:
- Key: Name
Value: AwsCdkVpcSample2Stack/VPC/ApplicationSubnet1
- Key: aws-cdk:subnet-name
Value: Application
- Key: aws-cdk:subnet-type
Value: Private
Metadata:
aws:cdk:path: AwsCdkVpcSample2Stack/VPC/ApplicationSubnet1/Subnet
VPCApplicationSubnet1RouteTable5B6CE71A:
Type: AWS::EC2::RouteTable
Properties:
VpcId:
Ref: VPCB9E5F0B4
Tags:
- Key: Name
Value: AwsCdkVpcSample2Stack/VPC/ApplicationSubnet1
Metadata:
aws:cdk:path: AwsCdkVpcSample2Stack/VPC/ApplicationSubnet1/RouteTable
VPCApplicationSubnet1RouteTableAssociation8DF0EAE5:
Type: AWS::EC2::SubnetRouteTableAssociation
Properties:
RouteTableId:
Ref: VPCApplicationSubnet1RouteTable5B6CE71A
SubnetId:
Ref: VPCApplicationSubnet1SubnetCE118F80
Metadata:
aws:cdk:path: AwsCdkVpcSample2Stack/VPC/ApplicationSubnet1/RouteTableAssociation
VPCApplicationSubnet1DefaultRouteA4E47D36:
Type: AWS::EC2::Route
Properties:
RouteTableId:
Ref: VPCApplicationSubnet1RouteTable5B6CE71A
DestinationCidrBlock: 0.0.0.0/0
NatGatewayId:
Ref: VPCIngressSubnet1NATGatewayEA4AE80E
Metadata:
aws:cdk:path: AwsCdkVpcSample2Stack/VPC/ApplicationSubnet1/DefaultRoute
VPCApplicationSubnet2Subnet988E96B1:
Type: AWS::EC2::Subnet
Properties:
CidrBlock: 10.0.4.0/24
VpcId:
Ref: VPCB9E5F0B4
AvailabilityZone: ap-northeast-1c
MapPublicIpOnLaunch: false
Tags:
- Key: Name
Value: AwsCdkVpcSample2Stack/VPC/ApplicationSubnet2
- Key: aws-cdk:subnet-name
Value: Application
- Key: aws-cdk:subnet-type
Value: Private
Metadata:
aws:cdk:path: AwsCdkVpcSample2Stack/VPC/ApplicationSubnet2/Subnet
VPCApplicationSubnet2RouteTableFDC3EEE6:
Type: AWS::EC2::RouteTable
Properties:
VpcId:
Ref: VPCB9E5F0B4
Tags:
- Key: Name
Value: AwsCdkVpcSample2Stack/VPC/ApplicationSubnet2
Metadata:
aws:cdk:path: AwsCdkVpcSample2Stack/VPC/ApplicationSubnet2/RouteTable
VPCApplicationSubnet2RouteTableAssociationD84040F3:
Type: AWS::EC2::SubnetRouteTableAssociation
Properties:
RouteTableId:
Ref: VPCApplicationSubnet2RouteTableFDC3EEE6
SubnetId:
Ref: VPCApplicationSubnet2Subnet988E96B1
Metadata:
aws:cdk:path: AwsCdkVpcSample2Stack/VPC/ApplicationSubnet2/RouteTableAssociation
VPCApplicationSubnet2DefaultRouteC3680A52:
Type: AWS::EC2::Route
Properties:
RouteTableId:
Ref: VPCApplicationSubnet2RouteTableFDC3EEE6
DestinationCidrBlock: 0.0.0.0/0
NatGatewayId:
Ref: VPCIngressSubnet2NATGateway68BB4190
Metadata:
aws:cdk:path: AwsCdkVpcSample2Stack/VPC/ApplicationSubnet2/DefaultRoute
VPCApplicationSubnet3Subnet152008D5:
Type: AWS::EC2::Subnet
Properties:
CidrBlock: 10.0.5.0/24
VpcId:
Ref: VPCB9E5F0B4
AvailabilityZone: ap-northeast-1d
MapPublicIpOnLaunch: false
Tags:
- Key: Name
Value: AwsCdkVpcSample2Stack/VPC/ApplicationSubnet3
- Key: aws-cdk:subnet-name
Value: Application
- Key: aws-cdk:subnet-type
Value: Private
Metadata:
aws:cdk:path: AwsCdkVpcSample2Stack/VPC/ApplicationSubnet3/Subnet
VPCApplicationSubnet3RouteTable29639657:
Type: AWS::EC2::RouteTable
Properties:
VpcId:
Ref: VPCB9E5F0B4
Tags:
- Key: Name
Value: AwsCdkVpcSample2Stack/VPC/ApplicationSubnet3
Metadata:
aws:cdk:path: AwsCdkVpcSample2Stack/VPC/ApplicationSubnet3/RouteTable
VPCApplicationSubnet3RouteTableAssociationB4462F03:
Type: AWS::EC2::SubnetRouteTableAssociation
Properties:
RouteTableId:
Ref: VPCApplicationSubnet3RouteTable29639657
SubnetId:
Ref: VPCApplicationSubnet3Subnet152008D5
Metadata:
aws:cdk:path: AwsCdkVpcSample2Stack/VPC/ApplicationSubnet3/RouteTableAssociation
VPCApplicationSubnet3DefaultRoute33D8EB24:
Type: AWS::EC2::Route
Properties:
RouteTableId:
Ref: VPCApplicationSubnet3RouteTable29639657
DestinationCidrBlock: 0.0.0.0/0
NatGatewayId:
Ref: VPCIngressSubnet3NATGatewayF804BFD1
Metadata:
aws:cdk:path: AwsCdkVpcSample2Stack/VPC/ApplicationSubnet3/DefaultRoute
VPCDatabaseSubnet1Subnet3E790B6F:
Type: AWS::EC2::Subnet
Properties:
CidrBlock: 10.0.6.0/28
VpcId:
Ref: VPCB9E5F0B4
AvailabilityZone: ap-northeast-1a
MapPublicIpOnLaunch: false
Tags:
- Key: Name
Value: AwsCdkVpcSample2Stack/VPC/DatabaseSubnet1
- Key: aws-cdk:subnet-type
Value: Isolated
- Key: aws-cdk:subnet-name
Value: Database
Metadata:
aws:cdk:path: AwsCdkVpcSample2Stack/VPC/DatabaseSubnet1/Subnet
VPCDatabaseSubnet1RouteTable50155611:
Type: AWS::EC2::RouteTable
Properties:
VpcId:
Ref: VPCB9E5F0B4
Tags:
- Key: Name
Value: AwsCdkVpcSample2Stack/VPC/DatabaseSubnet1
Metadata:
aws:cdk:path: AwsCdkVpcSample2Stack/VPC/DatabaseSubnet1/RouteTable
VPCDatabaseSubnet1RouteTableAssociation56EE26FE:
Type: AWS::EC2::SubnetRouteTableAssociation
Properties:
RouteTableId:
Ref: VPCDatabaseSubnet1RouteTable50155611
SubnetId:
Ref: VPCDatabaseSubnet1Subnet3E790B6F
Metadata:
aws:cdk:path: AwsCdkVpcSample2Stack/VPC/DatabaseSubnet1/RouteTableAssociation
VPCDatabaseSubnet2Subnet93B13DD5:
Type: AWS::EC2::Subnet
Properties:
CidrBlock: 10.0.6.16/28
VpcId:
Ref: VPCB9E5F0B4
AvailabilityZone: ap-northeast-1c
MapPublicIpOnLaunch: false
Tags:
- Key: Name
Value: AwsCdkVpcSample2Stack/VPC/DatabaseSubnet2
- Key: aws-cdk:subnet-type
Value: Isolated
- Key: aws-cdk:subnet-name
Value: Database
Metadata:
aws:cdk:path: AwsCdkVpcSample2Stack/VPC/DatabaseSubnet2/Subnet
VPCDatabaseSubnet2RouteTable5A3ECF56:
Type: AWS::EC2::RouteTable
Properties:
VpcId:
Ref: VPCB9E5F0B4
Tags:
- Key: Name
Value: AwsCdkVpcSample2Stack/VPC/DatabaseSubnet2
Metadata:
aws:cdk:path: AwsCdkVpcSample2Stack/VPC/DatabaseSubnet2/RouteTable
VPCDatabaseSubnet2RouteTableAssociation2350B25C:
Type: AWS::EC2::SubnetRouteTableAssociation
Properties:
RouteTableId:
Ref: VPCDatabaseSubnet2RouteTable5A3ECF56
SubnetId:
Ref: VPCDatabaseSubnet2Subnet93B13DD5
Metadata:
aws:cdk:path: AwsCdkVpcSample2Stack/VPC/DatabaseSubnet2/RouteTableAssociation
VPCDatabaseSubnet3SubnetBC9F7BFD:
Type: AWS::EC2::Subnet
Properties:
CidrBlock: 10.0.6.32/28
VpcId:
Ref: VPCB9E5F0B4
AvailabilityZone: ap-northeast-1d
MapPublicIpOnLaunch: false
Tags:
- Key: Name
Value: AwsCdkVpcSample2Stack/VPC/DatabaseSubnet3
- Key: aws-cdk:subnet-type
Value: Isolated
- Key: aws-cdk:subnet-name
Value: Database
Metadata:
aws:cdk:path: AwsCdkVpcSample2Stack/VPC/DatabaseSubnet3/Subnet
VPCDatabaseSubnet3RouteTableF4BFD0C7:
Type: AWS::EC2::RouteTable
Properties:
VpcId:
Ref: VPCB9E5F0B4
Tags:
- Key: Name
Value: AwsCdkVpcSample2Stack/VPC/DatabaseSubnet3
Metadata:
aws:cdk:path: AwsCdkVpcSample2Stack/VPC/DatabaseSubnet3/RouteTable
VPCDatabaseSubnet3RouteTableAssociationC74EC212:
Type: AWS::EC2::SubnetRouteTableAssociation
Properties:
RouteTableId:
Ref: VPCDatabaseSubnet3RouteTableF4BFD0C7
SubnetId:
Ref: VPCDatabaseSubnet3SubnetBC9F7BFD
Metadata:
aws:cdk:path: AwsCdkVpcSample2Stack/VPC/DatabaseSubnet3/RouteTableAssociation
VPCIGWB7E252D3:
Type: AWS::EC2::InternetGateway
Properties:
Tags:
- Key: Name
Value: AwsCdkVpcSample2Stack/VPC
Metadata:
aws:cdk:path: AwsCdkVpcSample2Stack/VPC/IGW
VPCVPCGW99B986DC:
Type: AWS::EC2::VPCGatewayAttachment
Properties:
VpcId:
Ref: VPCB9E5F0B4
InternetGatewayId:
Ref: VPCIGWB7E252D3
Metadata:
aws:cdk:path: AwsCdkVpcSample2Stack/VPC/VPCGW
CDKMetadata:
Type: AWS::CDK::Metadata
Properties:
Modules: aws-cdk=0.22.0,@aws-cdk/aws-ec2=0.22.0,@aws-cdk/cdk=0.22.0,@aws-cdk/cx-api=0.22.0,jsii-runtime=node.js/v10.2.1
- スタックをデプロイします。
$ cdk deploy
AwsCdkVpcSample2Stack: deploying...
AwsCdkVpcSample2Stack: creating CloudFormation changeset...
0/44 | 18:23:21 | CREATE_IN_PROGRESS | AWS::CloudFormation::Stack | AwsCdkVpcSample2Stack User Initiated
0/44 | 18:23:26 | CREATE_IN_PROGRESS | AWS::CDK::Metadata | CDKMetadata
0/44 | 18:23:27 | CREATE_IN_PROGRESS | AWS::EC2::EIP | VPC/IngressSubnet3/EIP (VPCIngressSubnet3EIP7A19F11D)
0/44 | 18:23:27 | CREATE_IN_PROGRESS | AWS::EC2::EIP | VPC/IngressSubnet2/EIP (VPCIngressSubnet2EIPCE44C233)
0/44 | 18:23:27 | CREATE_IN_PROGRESS | AWS::EC2::InternetGateway | VPC/IGW (VPCIGWB7E252D3)
0/44 | 18:23:27 | CREATE_IN_PROGRESS | AWS::EC2::VPC | VPC (VPCB9E5F0B4)
0/44 | 18:23:27 | CREATE_IN_PROGRESS | AWS::EC2::EIP | VPC/IngressSubnet1/EIP (VPCIngressSubnet1EIP99406D22)
0/44 | 18:23:27 | CREATE_IN_PROGRESS | AWS::EC2::EIP | VPC/IngressSubnet3/EIP (VPCIngressSubnet3EIP7A19F11D) Resource creation Initiated
0/44 | 18:23:27 | CREATE_IN_PROGRESS | AWS::EC2::InternetGateway | VPC/IGW (VPCIGWB7E252D3) Resource creation Initiated
0/44 | 18:23:27 | CREATE_IN_PROGRESS | AWS::EC2::EIP | VPC/IngressSubnet2/EIP (VPCIngressSubnet2EIPCE44C233) Resource creation Initiated
0/44 | 18:23:27 | CREATE_IN_PROGRESS | AWS::EC2::EIP | VPC/IngressSubnet1/EIP (VPCIngressSubnet1EIP99406D22) Resource creation Initiated
0/44 | 18:23:27 | CREATE_IN_PROGRESS | AWS::EC2::VPC | VPC (VPCB9E5F0B4) Resource creation Initiated
0/44 | 18:23:29 | CREATE_IN_PROGRESS | AWS::CDK::Metadata | CDKMetadata Resource creation Initiated
1/44 | 18:23:29 | CREATE_COMPLETE | AWS::CDK::Metadata | CDKMetadata
2/44 | 18:23:43 | CREATE_COMPLETE | AWS::EC2::EIP | VPC/IngressSubnet3/EIP (VPCIngressSubnet3EIP7A19F11D)
3/44 | 18:23:43 | CREATE_COMPLETE | AWS::EC2::EIP | VPC/IngressSubnet1/EIP (VPCIngressSubnet1EIP99406D22)
4/44 | 18:23:43 | CREATE_COMPLETE | AWS::EC2::EIP | VPC/IngressSubnet2/EIP (VPCIngressSubnet2EIPCE44C233)
5/44 | 18:23:43 | CREATE_COMPLETE | AWS::EC2::InternetGateway | VPC/IGW (VPCIGWB7E252D3)
6/44 | 18:23:44 | CREATE_COMPLETE | AWS::EC2::VPC | VPC (VPCB9E5F0B4)
6/44 | 18:23:47 | CREATE_IN_PROGRESS | AWS::EC2::Subnet | VPC/ApplicationSubnet1/Subnet (VPCApplicationSubnet1SubnetCE118F80)
6/44 | 18:23:48 | CREATE_IN_PROGRESS | AWS::EC2::Subnet | VPC/DatabaseSubnet2/Subnet (VPCDatabaseSubnet2Subnet93B13DD5)
6/44 | 18:23:48 | CREATE_IN_PROGRESS | AWS::EC2::RouteTable | VPC/IngressSubnet1/RouteTable (VPCIngressSubnet1RouteTable9BE753A6)
6/44 | 18:23:48 | CREATE_IN_PROGRESS | AWS::EC2::RouteTable | VPC/IngressSubnet3/RouteTable (VPCIngressSubnet3RouteTableBA29E68D)
6/44 | 18:23:48 | CREATE_IN_PROGRESS | AWS::EC2::Subnet | VPC/ApplicationSubnet3/Subnet (VPCApplicationSubnet3Subnet152008D5)
6/44 | 18:23:48 | CREATE_IN_PROGRESS | AWS::EC2::Subnet | VPC/DatabaseSubnet1/Subnet (VPCDatabaseSubnet1Subnet3E790B6F)
6/44 | 18:23:48 | CREATE_IN_PROGRESS | AWS::EC2::RouteTable | VPC/ApplicationSubnet1/RouteTable (VPCApplicationSubnet1RouteTable5B6CE71A)
6/44 | 18:23:48 | CREATE_IN_PROGRESS | AWS::EC2::Subnet | VPC/IngressSubnet1/Subnet (VPCIngressSubnet1Subnet4257CD65)
6/44 | 18:23:48 | CREATE_IN_PROGRESS | AWS::EC2::Subnet | VPC/IngressSubnet3/Subnet (VPCIngressSubnet3Subnet5B03B6AE)
6/44 | 18:23:48 | CREATE_IN_PROGRESS | AWS::EC2::Subnet | VPC/ApplicationSubnet2/Subnet (VPCApplicationSubnet2Subnet988E96B1)
6/44 | 18:23:48 | CREATE_IN_PROGRESS | AWS::EC2::RouteTable | VPC/ApplicationSubnet2/RouteTable (VPCApplicationSubnet2RouteTableFDC3EEE6)
6/44 | 18:23:48 | CREATE_IN_PROGRESS | AWS::EC2::RouteTable | VPC/DatabaseSubnet2/RouteTable (VPCDatabaseSubnet2RouteTable5A3ECF56)
6/44 | 18:23:48 | CREATE_IN_PROGRESS | AWS::EC2::VPCGatewayAttachment | VPC/VPCGW (VPCVPCGW99B986DC)
6/44 | 18:23:48 | CREATE_IN_PROGRESS | AWS::EC2::Subnet | VPC/DatabaseSubnet3/Subnet (VPCDatabaseSubnet3SubnetBC9F7BFD)
6/44 | 18:23:48 | CREATE_IN_PROGRESS | AWS::EC2::RouteTable | VPC/IngressSubnet2/RouteTable (VPCIngressSubnet2RouteTableDFE1B4BC)
6/44 | 18:23:48 | CREATE_IN_PROGRESS | AWS::EC2::RouteTable | VPC/ApplicationSubnet3/RouteTable (VPCApplicationSubnet3RouteTable29639657)
6/44 | 18:23:48 | CREATE_IN_PROGRESS | AWS::EC2::RouteTable | VPC/DatabaseSubnet1/RouteTable (VPCDatabaseSubnet1RouteTable50155611)
6/44 | 18:23:48 | CREATE_IN_PROGRESS | AWS::EC2::Subnet | VPC/IngressSubnet2/Subnet (VPCIngressSubnet2SubnetE0EA735B)
6/44 | 18:23:48 | CREATE_IN_PROGRESS | AWS::EC2::RouteTable | VPC/IngressSubnet1/RouteTable (VPCIngressSubnet1RouteTable9BE753A6) Resource creation Initiated
6/44 | 18:23:48 | CREATE_IN_PROGRESS | AWS::EC2::Subnet | VPC/ApplicationSubnet1/Subnet (VPCApplicationSubnet1SubnetCE118F80) Resource creation Initiated
6/44 | 18:23:48 | CREATE_IN_PROGRESS | AWS::EC2::RouteTable | VPC/IngressSubnet3/RouteTable (VPCIngressSubnet3RouteTableBA29E68D) Resource creation Initiated
6/44 | 18:23:48 | CREATE_IN_PROGRESS | AWS::EC2::Subnet | VPC/DatabaseSubnet2/Subnet (VPCDatabaseSubnet2Subnet93B13DD5) Resource creation Initiated
6/44 | 18:23:48 | CREATE_IN_PROGRESS | AWS::EC2::RouteTable | VPC/DatabaseSubnet3/RouteTable (VPCDatabaseSubnet3RouteTableF4BFD0C7)
6/44 | 18:23:48 | CREATE_IN_PROGRESS | AWS::EC2::RouteTable | VPC/ApplicationSubnet1/RouteTable (VPCApplicationSubnet1RouteTable5B6CE71A) Resource creation Initiated
6/44 | 18:23:48 | CREATE_IN_PROGRESS | AWS::EC2::Subnet | VPC/DatabaseSubnet1/Subnet (VPCDatabaseSubnet1Subnet3E790B6F) Resource creation Initiated
6/44 | 18:23:48 | CREATE_IN_PROGRESS | AWS::EC2::RouteTable | VPC/DatabaseSubnet2/RouteTable (VPCDatabaseSubnet2RouteTable5A3ECF56) Resource creation Initiated
6/44 | 18:23:48 | CREATE_IN_PROGRESS | AWS::EC2::Subnet | VPC/ApplicationSubnet3/Subnet (VPCApplicationSubnet3Subnet152008D5) Resource creation Initiated
6/44 | 18:23:48 | CREATE_IN_PROGRESS | AWS::EC2::Subnet | VPC/IngressSubnet1/Subnet (VPCIngressSubnet1Subnet4257CD65) Resource creation Initiated
6/44 | 18:23:49 | CREATE_IN_PROGRESS | AWS::EC2::RouteTable | VPC/IngressSubnet2/RouteTable (VPCIngressSubnet2RouteTableDFE1B4BC) Resource creation Initiated
6/44 | 18:23:49 | CREATE_IN_PROGRESS | AWS::EC2::Subnet | VPC/IngressSubnet3/Subnet (VPCIngressSubnet3Subnet5B03B6AE) Resource creation Initiated
6/44 | 18:23:49 | CREATE_IN_PROGRESS | AWS::EC2::RouteTable | VPC/DatabaseSubnet1/RouteTable (VPCDatabaseSubnet1RouteTable50155611) Resource creation Initiated
6/44 | 18:23:49 | CREATE_IN_PROGRESS | AWS::EC2::Subnet | VPC/DatabaseSubnet3/Subnet (VPCDatabaseSubnet3SubnetBC9F7BFD) Resource creation Initiated
6/44 | 18:23:49 | CREATE_IN_PROGRESS | AWS::EC2::RouteTable | VPC/ApplicationSubnet2/RouteTable (VPCApplicationSubnet2RouteTableFDC3EEE6) Resource creation Initiated
6/44 | 18:23:49 | CREATE_IN_PROGRESS | AWS::EC2::RouteTable | VPC/ApplicationSubnet3/RouteTable (VPCApplicationSubnet3RouteTable29639657) Resource creation Initiated
6/44 | 18:23:49 | CREATE_IN_PROGRESS | AWS::EC2::Subnet | VPC/IngressSubnet2/Subnet (VPCIngressSubnet2SubnetE0EA735B) Resource creation Initiated
6/44 | 18:23:49 | CREATE_IN_PROGRESS | AWS::EC2::RouteTable | VPC/DatabaseSubnet3/RouteTable (VPCDatabaseSubnet3RouteTableF4BFD0C7) Resource creation Initiated
6/44 | 18:23:49 | CREATE_IN_PROGRESS | AWS::EC2::VPCGatewayAttachment | VPC/VPCGW (VPCVPCGW99B986DC) Resource creation Initiated
6/44 | 18:23:49 | CREATE_IN_PROGRESS | AWS::EC2::Subnet | VPC/ApplicationSubnet2/Subnet (VPCApplicationSubnet2Subnet988E96B1) Resource creation Initiated
7/44 | 18:23:49 | CREATE_COMPLETE | AWS::EC2::RouteTable | VPC/IngressSubnet1/RouteTable (VPCIngressSubnet1RouteTable9BE753A6)
8/44 | 18:23:49 | CREATE_COMPLETE | AWS::EC2::RouteTable | VPC/ApplicationSubnet1/RouteTable (VPCApplicationSubnet1RouteTable5B6CE71A)
9/44 | 18:23:49 | CREATE_COMPLETE | AWS::EC2::RouteTable | VPC/IngressSubnet3/RouteTable (VPCIngressSubnet3RouteTableBA29E68D)
10/44 | 18:23:50 | CREATE_COMPLETE | AWS::EC2::RouteTable | VPC/DatabaseSubnet2/RouteTable (VPCDatabaseSubnet2RouteTable5A3ECF56)
11/44 | 18:23:50 | CREATE_COMPLETE | AWS::EC2::RouteTable | VPC/ApplicationSubnet2/RouteTable (VPCApplicationSubnet2RouteTableFDC3EEE6)
12/44 | 18:23:50 | CREATE_COMPLETE | AWS::EC2::RouteTable | VPC/DatabaseSubnet1/RouteTable (VPCDatabaseSubnet1RouteTable50155611)
13/44 | 18:23:50 | CREATE_COMPLETE | AWS::EC2::RouteTable | VPC/ApplicationSubnet3/RouteTable (VPCApplicationSubnet3RouteTable29639657)
14/44 | 18:23:50 | CREATE_COMPLETE | AWS::EC2::RouteTable | VPC/IngressSubnet2/RouteTable (VPCIngressSubnet2RouteTableDFE1B4BC)
15/44 | 18:23:50 | CREATE_COMPLETE | AWS::EC2::RouteTable | VPC/DatabaseSubnet3/RouteTable (VPCDatabaseSubnet3RouteTableF4BFD0C7)
16/44 | 18:24:04 | CREATE_COMPLETE | AWS::EC2::VPCGatewayAttachment | VPC/VPCGW (VPCVPCGW99B986DC)
17/44 | 18:24:04 | CREATE_COMPLETE | AWS::EC2::Subnet | VPC/DatabaseSubnet2/Subnet (VPCDatabaseSubnet2Subnet93B13DD5)
18/44 | 18:24:05 | CREATE_COMPLETE | AWS::EC2::Subnet | VPC/DatabaseSubnet1/Subnet (VPCDatabaseSubnet1Subnet3E790B6F)
19/44 | 18:24:05 | CREATE_COMPLETE | AWS::EC2::Subnet | VPC/ApplicationSubnet1/Subnet (VPCApplicationSubnet1SubnetCE118F80)
20/44 | 18:24:05 | CREATE_COMPLETE | AWS::EC2::Subnet | VPC/ApplicationSubnet3/Subnet (VPCApplicationSubnet3Subnet152008D5)
21/44 | 18:24:05 | CREATE_COMPLETE | AWS::EC2::Subnet | VPC/IngressSubnet1/Subnet (VPCIngressSubnet1Subnet4257CD65)
22/44 | 18:24:05 | CREATE_COMPLETE | AWS::EC2::Subnet | VPC/DatabaseSubnet3/Subnet (VPCDatabaseSubnet3SubnetBC9F7BFD)
23/44 | 18:24:05 | CREATE_COMPLETE | AWS::EC2::Subnet | VPC/IngressSubnet3/Subnet (VPCIngressSubnet3Subnet5B03B6AE)
24/44 | 18:24:05 | CREATE_COMPLETE | AWS::EC2::Subnet | VPC/ApplicationSubnet2/Subnet (VPCApplicationSubnet2Subnet988E96B1)
25/44 | 18:24:05 | CREATE_COMPLETE | AWS::EC2::Subnet | VPC/IngressSubnet2/Subnet (VPCIngressSubnet2SubnetE0EA735B)
25/44 | 18:24:07 | CREATE_IN_PROGRESS | AWS::EC2::Route | VPC/IngressSubnet3/DefaultRoute (VPCIngressSubnet3DefaultRouteD4DCD60F)
25/44 | 18:24:07 | CREATE_IN_PROGRESS | AWS::EC2::Route | VPC/IngressSubnet1/DefaultRoute (VPCIngressSubnet1DefaultRouteFE025494)
25/44 | 18:24:07 | CREATE_IN_PROGRESS | AWS::EC2::SubnetRouteTableAssociation | VPC/ApplicationSubnet3/RouteTableAssociation (VPCApplicationSubnet3RouteTableAssociationB4462F03)
25/44 | 18:24:07 | CREATE_IN_PROGRESS | AWS::EC2::Route | VPC/IngressSubnet2/DefaultRoute (VPCIngressSubnet2DefaultRoute9FF8300E)
25/44 | 18:24:08 | CREATE_IN_PROGRESS | AWS::EC2::Route | VPC/IngressSubnet3/DefaultRoute (VPCIngressSubnet3DefaultRouteD4DCD60F) Resource creation Initiated
25/44 | 18:24:08 | CREATE_IN_PROGRESS | AWS::EC2::SubnetRouteTableAssociation | VPC/IngressSubnet1/RouteTableAssociation (VPCIngressSubnet1RouteTableAssociationCAFE4089)
25/44 | 18:24:08 | CREATE_IN_PROGRESS | AWS::EC2::SubnetRouteTableAssociation | VPC/ApplicationSubnet1/RouteTableAssociation (VPCApplicationSubnet1RouteTableAssociation8DF0EAE5)
25/44 | 18:24:08 | CREATE_IN_PROGRESS | AWS::EC2::SubnetRouteTableAssociation | VPC/DatabaseSubnet1/RouteTableAssociation (VPCDatabaseSubnet1RouteTableAssociation56EE26FE)
25/44 | 18:24:08 | CREATE_IN_PROGRESS | AWS::EC2::SubnetRouteTableAssociation | VPC/IngressSubnet3/RouteTableAssociation (VPCIngressSubnet3RouteTableAssociationF8544212)
25/44 | 18:24:08 | CREATE_IN_PROGRESS | AWS::EC2::SubnetRouteTableAssociation | VPC/DatabaseSubnet2/RouteTableAssociation (VPCDatabaseSubnet2RouteTableAssociation2350B25C)
25/44 | 18:24:08 | CREATE_IN_PROGRESS | AWS::EC2::Route | VPC/IngressSubnet1/DefaultRoute (VPCIngressSubnet1DefaultRouteFE025494) Resource creation Initiated
25/44 | 18:24:08 | CREATE_IN_PROGRESS | AWS::EC2::SubnetRouteTableAssociation | VPC/DatabaseSubnet3/RouteTableAssociation (VPCDatabaseSubnet3RouteTableAssociationC74EC212)
25/44 | 18:24:08 | CREATE_IN_PROGRESS | AWS::EC2::Route | VPC/IngressSubnet2/DefaultRoute (VPCIngressSubnet2DefaultRoute9FF8300E) Resource creation Initiated
25/44 | 18:24:08 | CREATE_IN_PROGRESS | AWS::EC2::NatGateway | VPC/IngressSubnet1/NATGateway (VPCIngressSubnet1NATGatewayEA4AE80E)
25/44 | 18:24:08 | CREATE_IN_PROGRESS | AWS::EC2::SubnetRouteTableAssociation | VPC/ApplicationSubnet2/RouteTableAssociation (VPCApplicationSubnet2RouteTableAssociationD84040F3)
25/44 | 18:24:08 | CREATE_IN_PROGRESS | AWS::EC2::SubnetRouteTableAssociation | VPC/IngressSubnet2/RouteTableAssociation (VPCIngressSubnet2RouteTableAssociationB244DE25)
25/44 | 18:24:08 | CREATE_IN_PROGRESS | AWS::EC2::NatGateway | VPC/IngressSubnet3/NATGateway (VPCIngressSubnet3NATGatewayF804BFD1)
25/44 | 18:24:09 | CREATE_IN_PROGRESS | AWS::EC2::NatGateway | VPC/IngressSubnet2/NATGateway (VPCIngressSubnet2NATGateway68BB4190)
25/44 | 18:24:09 | CREATE_IN_PROGRESS | AWS::EC2::SubnetRouteTableAssociation | VPC/ApplicationSubnet3/RouteTableAssociation (VPCApplicationSubnet3RouteTableAssociationB4462F03) Resource creation Initiated
25/44 | 18:24:09 | CREATE_IN_PROGRESS | AWS::EC2::NatGateway | VPC/IngressSubnet1/NATGateway (VPCIngressSubnet1NATGatewayEA4AE80E) Resource creation Initiated
25/44 | 18:24:09 | CREATE_IN_PROGRESS | AWS::EC2::NatGateway | VPC/IngressSubnet3/NATGateway (VPCIngressSubnet3NATGatewayF804BFD1) Resource creation Initiated
25/44 | 18:24:09 | CREATE_IN_PROGRESS | AWS::EC2::SubnetRouteTableAssociation | VPC/ApplicationSubnet1/RouteTableAssociation (VPCApplicationSubnet1RouteTableAssociation8DF0EAE5) Resource creation Initiated
25/44 | 18:24:09 | CREATE_IN_PROGRESS | AWS::EC2::SubnetRouteTableAssociation | VPC/IngressSubnet3/RouteTableAssociation (VPCIngressSubnet3RouteTableAssociationF8544212) Resource creation Initiated
25/44 | 18:24:09 | CREATE_IN_PROGRESS | AWS::EC2::SubnetRouteTableAssociation | VPC/IngressSubnet1/RouteTableAssociation (VPCIngressSubnet1RouteTableAssociationCAFE4089) Resource creation Initiated
25/44 | 18:24:09 | CREATE_IN_PROGRESS | AWS::EC2::SubnetRouteTableAssociation | VPC/DatabaseSubnet1/RouteTableAssociation (VPCDatabaseSubnet1RouteTableAssociation56EE26FE) Resource creation Initiated
25/44 | 18:24:09 | CREATE_IN_PROGRESS | AWS::EC2::SubnetRouteTableAssociation | VPC/DatabaseSubnet2/RouteTableAssociation (VPCDatabaseSubnet2RouteTableAssociation2350B25C) Resource creation Initiated
25/44 | 18:24:09 | CREATE_IN_PROGRESS | AWS::EC2::NatGateway | VPC/IngressSubnet2/NATGateway (VPCIngressSubnet2NATGateway68BB4190) Resource creation Initiated
25/44 | 18:24:09 | CREATE_IN_PROGRESS | AWS::EC2::SubnetRouteTableAssociation | VPC/DatabaseSubnet3/RouteTableAssociation (VPCDatabaseSubnet3RouteTableAssociationC74EC212) Resource creation Initiated
25/44 | 18:24:09 | CREATE_IN_PROGRESS | AWS::EC2::SubnetRouteTableAssociation | VPC/ApplicationSubnet2/RouteTableAssociation (VPCApplicationSubnet2RouteTableAssociationD84040F3) Resource creation Initiated
25/44 | 18:24:10 | CREATE_IN_PROGRESS | AWS::EC2::SubnetRouteTableAssociation | VPC/IngressSubnet2/RouteTableAssociation (VPCIngressSubnet2RouteTableAssociationB244DE25) Resource creation Initiated
26/44 | 18:24:23 | CREATE_COMPLETE | AWS::EC2::Route | VPC/IngressSubnet3/DefaultRoute (VPCIngressSubnet3DefaultRouteD4DCD60F)
27/44 | 18:24:24 | CREATE_COMPLETE | AWS::EC2::Route | VPC/IngressSubnet1/DefaultRoute (VPCIngressSubnet1DefaultRouteFE025494)
28/44 | 18:24:24 | CREATE_COMPLETE | AWS::EC2::Route | VPC/IngressSubnet2/DefaultRoute (VPCIngressSubnet2DefaultRoute9FF8300E)
29/44 | 18:24:24 | CREATE_COMPLETE | AWS::EC2::SubnetRouteTableAssociation | VPC/ApplicationSubnet3/RouteTableAssociation (VPCApplicationSubnet3RouteTableAssociationB4462F03)
30/44 | 18:24:24 | CREATE_COMPLETE | AWS::EC2::SubnetRouteTableAssociation | VPC/ApplicationSubnet1/RouteTableAssociation (VPCApplicationSubnet1RouteTableAssociation8DF0EAE5)
31/44 | 18:24:25 | CREATE_COMPLETE | AWS::EC2::SubnetRouteTableAssociation | VPC/IngressSubnet1/RouteTableAssociation (VPCIngressSubnet1RouteTableAssociationCAFE4089)
32/44 | 18:24:25 | CREATE_COMPLETE | AWS::EC2::SubnetRouteTableAssociation | VPC/DatabaseSubnet1/RouteTableAssociation (VPCDatabaseSubnet1RouteTableAssociation56EE26FE)
33/44 | 18:24:25 | CREATE_COMPLETE | AWS::EC2::SubnetRouteTableAssociation | VPC/DatabaseSubnet2/RouteTableAssociation (VPCDatabaseSubnet2RouteTableAssociation2350B25C)
34/44 | 18:24:25 | CREATE_COMPLETE | AWS::EC2::SubnetRouteTableAssociation | VPC/IngressSubnet3/RouteTableAssociation (VPCIngressSubnet3RouteTableAssociationF8544212)
35/44 | 18:24:25 | CREATE_COMPLETE | AWS::EC2::SubnetRouteTableAssociation | VPC/DatabaseSubnet3/RouteTableAssociation (VPCDatabaseSubnet3RouteTableAssociationC74EC212)
36/44 | 18:24:25 | CREATE_COMPLETE | AWS::EC2::SubnetRouteTableAssociation | VPC/IngressSubnet2/RouteTableAssociation (VPCIngressSubnet2RouteTableAssociationB244DE25)
37/44 | 18:24:25 | CREATE_COMPLETE | AWS::EC2::SubnetRouteTableAssociation | VPC/ApplicationSubnet2/RouteTableAssociation (VPCApplicationSubnet2RouteTableAssociationD84040F3)
37/44 Currently in progress: AwsCdkVpcSample2Stack, VPCIngressSubnet1NATGatewayEA4AE80E, VPCIngressSubnet3NATGatewayF804BFD1, VPCIngressSubnet2NATGateway68BB4190
38/44 | 18:25:27 | CREATE_COMPLETE | AWS::EC2::NatGateway | VPC/IngressSubnet2/NATGateway (VPCIngressSubnet2NATGateway68BB4190)
38/44 | 18:25:30 | CREATE_IN_PROGRESS | AWS::EC2::Route | VPC/ApplicationSubnet2/DefaultRoute (VPCApplicationSubnet2DefaultRouteC3680A52)
38/44 | 18:25:31 | CREATE_IN_PROGRESS | AWS::EC2::Route | VPC/ApplicationSubnet2/DefaultRoute (VPCApplicationSubnet2DefaultRouteC3680A52) Resource creation Initiated
39/44 | 18:25:46 | CREATE_COMPLETE | AWS::EC2::Route | VPC/ApplicationSubnet2/DefaultRoute (VPCApplicationSubnet2DefaultRouteC3680A52)
40/44 | 18:25:58 | CREATE_COMPLETE | AWS::EC2::NatGateway | VPC/IngressSubnet1/NATGateway (VPCIngressSubnet1NATGatewayEA4AE80E)
40/44 | 18:26:01 | CREATE_IN_PROGRESS | AWS::EC2::Route | VPC/ApplicationSubnet1/DefaultRoute (VPCApplicationSubnet1DefaultRouteA4E47D36)
40/44 | 18:26:02 | CREATE_IN_PROGRESS | AWS::EC2::Route | VPC/ApplicationSubnet1/DefaultRoute (VPCApplicationSubnet1DefaultRouteA4E47D36) Resource creation Initiated
41/44 | 18:26:14 | CREATE_COMPLETE | AWS::EC2::NatGateway | VPC/IngressSubnet3/NATGateway (VPCIngressSubnet3NATGatewayF804BFD1)
41/44 | 18:26:17 | CREATE_IN_PROGRESS | AWS::EC2::Route | VPC/ApplicationSubnet3/DefaultRoute (VPCApplicationSubnet3DefaultRoute33D8EB24)
42/44 | 18:26:18 | CREATE_COMPLETE | AWS::EC2::Route | VPC/ApplicationSubnet1/DefaultRoute (VPCApplicationSubnet1DefaultRouteA4E47D36)
42/44 | 18:26:18 | CREATE_IN_PROGRESS | AWS::EC2::Route | VPC/ApplicationSubnet3/DefaultRoute (VPCApplicationSubnet3DefaultRoute33D8EB24) Resource creation Initiated
43/44 | 18:26:34 | CREATE_COMPLETE | AWS::EC2::Route | VPC/ApplicationSubnet3/DefaultRoute (VPCApplicationSubnet3DefaultRoute33D8EB24)
44/44 | 18:26:36 | CREATE_COMPLETE | AWS::CloudFormation::Stack | AwsCdkVpcSample2Stack
✅ AwsCdkVpcSample2Stack
Stack ARN:
arn:aws:cloudformation:ap-northeast-1:xxxxxxxxxxxx:stack/AwsCdkVpcSample2Stack/b0fd2850-164b-11e9-b181-0a8788cf6370
- 作成されたCFnスタックを確認します。
$ aws cloudformation describe-stacks \
--stack-name AwsCdkVpcSample2Stack
{
"Stacks": [
{
"StackId": "arn:aws:cloudformation:ap-northeast-1:xxxxxxxxxxxx:stack/AwsCdkVpcSample2Stack/b0fd2850-164b-11e9-b181-0a8788cf6370",
"StackName": "AwsCdkVpcSample2Stack",
"ChangeSetId": "arn:aws:cloudformation:ap-northeast-1:xxxxxxxxxxxx:changeSet/CDK-de63a38c-a4ee-4d73-bd58-6cbb18575ace/4fd4d238-9249-4be4-9ecb-90523dff8df5",
"CreationTime": "2019-01-12T09:23:15.969Z",
"LastUpdatedTime": "2019-01-12T09:23:21.476Z",
"RollbackConfiguration": {},
"StackStatus": "CREATE_COMPLETE",
"DisableRollback": false,
"NotificationARNs": [],
"Capabilities": [
"CAPABILITY_IAM",
"CAPABILITY_NAMED_IAM"
],
"Tags": [],
"EnableTerminationProtection": false,
"DriftInformation": {
"StackDriftStatus": "NOT_CHECKED"
}
}
]
}
- VPC IDを確認します。
$ aws cloudformation describe-stack-resources \
--stack-name AwsCdkVpcSample2Stack \
--query StackResources[?ResourceType==\`AWS::EC2::VPC\`]
[
{
"StackName": "AwsCdkVpcSample2Stack",
"StackId": "arn:aws:cloudformation:ap-northeast-1:xxxxxxxxxxxx:stack/AwsCdkVpcSample2Stack/b0fd2850-164b-11e9-b181-0a8788cf6370",
"LogicalResourceId": "VPCB9E5F0B4",
"PhysicalResourceId": "vpc-07d7263312dbe87b6",
"ResourceType": "AWS::EC2::VPC",
"Timestamp": "2019-01-12T09:23:44.808Z",
"ResourceStatus": "CREATE_COMPLETE",
"DriftInformation": {
"StackResourceDriftStatus": "NOT_CHECKED"
}
}
]
- VPCを確認します。
$ aws ec2 describe-vpcs --vpc-ids vpc-07d7263312dbe87b6
{
"Vpcs": [
{
"CidrBlock": "10.0.0.0/16",
"DhcpOptionsId": "dopt-a74006c0",
"State": "available",
"VpcId": "vpc-07d7263312dbe87b6",
"OwnerId": "xxxxxxxxxxxx",
"InstanceTenancy": "default",
"CidrBlockAssociationSet": [
{
"AssociationId": "vpc-cidr-assoc-0e77ce173e6641870",
"CidrBlock": "10.0.0.0/16",
"CidrBlockState": {
"State": "associated"
}
}
],
"IsDefault": false,
"Tags": [
{
"Key": "Name",
"Value": "AwsCdkVpcSample2Stack/VPC"
},
{
"Key": "aws:cloudformation:stack-name",
"Value": "AwsCdkVpcSample2Stack"
},
{
"Key": "aws:cloudformation:stack-id",
"Value": "arn:aws:cloudformation:ap-northeast-1:xxxxxxxxxxxx:stack/AwsCdkVpcSample2Stack/b0fd2850-164b-11e9-b181-0a8788cf6370"
},
{
"Key": "aws:cloudformation:logical-id",
"Value": "VPCB9E5F0B4"
}
]
}
]
まとめ
CDKを利用することにより、サブネットやルートテーブルの煩雑なCloudFormationテンプテートを記載しなくてもVPCを作成することができました。現実世界では空のVPCから独自の構成を作ることもあるためその場合はどういったコードになるのか試してみたいところです。またスタックに関する情報をExportして他スタックから参照させることもできるためそちらも要検証です。