AWS CDK v2でVPCを新規作成してみたら、いろいろできてた!

ならたけぽん
2023-04-25
2023-04-25

おつかれさまです。ならたけぽんです。🌷

なんだか世の中が騒がしいな~と思っていたら、
今週末からGWだそうで。🏅

あれかな、ゴールデンウィークとかシルバーウィークの他に、
俺も心の小宇宙を燃やせば、
ブロンズウィークとかスチールウィークとかブラックウィークとか、
いっぱいいっぱい休み増えるんかな。🌌
えへ、えへ、えへへへへ。🤑

ということで、
現実逃避を兼ねた厨二的な妄想でテンションを高くしたところで、
本題に参りましょう。

今回は、前回のブログの続きになります~。🐾



前回、

 const vpc = new ec2.Vpc(this, 'Vpc', {});

こんな感じに1行追加してVPCを作成したのですが、
実は、VPCだけではなくて、
一緒に自動的にいろいろなオブジェクトも新規作成されているんです!!!🐣
※しれっと課金対象のオブジェクトも。。。😱

知ってる~、という皆様は、本日はこれにて解散!!!🕊️
チャオ!🎈

そんな知らんし~、という皆様は、もうちょっとだけお付き合いを!!!🐨



🍀 VPC!

 まぁ、そりゃ作成したんだから、できてますがな。🐶
 代表的なプロパティは以下のとおり。

  • IPv4 CIDR:10.0.0.0/16
  • タグ:Name / [プロジェクト名]Stack/Vpc


🍀 インターネットゲートウェイ!

 AWSコンソールからポチポチやっていると、あまり気にしなかったりもするのですが、
 ちゃんとインターネットゲートウェイも作成されます。🐶
 作成したVPCにアタッチもされています。
 代表的なプロパティは以下のとおり。

  • タグ:Name / [プロジェクト名]Stack/Vpc


🍀 Elastic IP!

 NATゲートウェイ用に、計2つ作成されます。🐶🐶
 代表的なプロパティは以下になります。

 🌿 Elastic IP(1):

  • 割り当てられた IPv4 アドレス:[ランダムなIPアドレス]
  • タグ:Name / [下記のパブリックサブネット(1)名]

 🌿 Elastic IP(2):

  • 割り当てられた IPv4 アドレス:[ランダムなIPアドレス]
  • タグ:Name / [下記のパブリックサブネット(2)名]


🌋 NATゲートウェイ!

 ⚠️WARNING!⚠️ 

 プライベートサブネット毎に、計2つ作成されます。🐶🐶

 え、2つも?😨
 基本的なVPC周りのオブジェクトは無料だったりするのですが、
 この子は有料になります!😱
 
 VPC作成しただけなんで、課金走らないもんね~、おれっち無課金勢だもんね~、
 な~んて甘く考えていると、知らぬ間に微課金勢になってます。
 ※私はなってました。💸💀💸
 個人のAWSアカウントをご利用の皆様は、特にご留意いただきますよう。🙇
 
 代表的なプロパティは以下のとおり。

 🍄 NATゲートウェイ(1):

  • サブネット:パブリックサブネット(1)
  • プライマリパブリックIPv4アドレス:上記のElastic IP(1)
  • タグ:Name / [下記のパブリックサブネット(1)名]

 🍄 NATゲートウェイ(2):

  • サブネット:パブリックサブネット(2)
  • プライマリパブリックIPv4アドレス:上記のElastic IP(2)
  • タグ:Name / [下記のパブリックサブネット(2)名]


🍀 ルートテーブル!

 サブネット毎に、パブリックサブネット用2つ、プライベートサブネット用2つ、
 計4つ作成されます。⛵
 パブリックサブネット用にはインターネットゲートウェイが、
 プライベートサブネット用にはNATゲートウェイが、 
 それぞれ設定済になっています。
 代表的なプロパティは以下になります。

 🌿 ルートテーブル(パブリックサブネット用(1)):

  • ルート:
     送信先:0.0.0.0/0
     ターゲット:上記のインターネットゲートウェイ
  • タグ:Name / [下記のパブリックサブネット(1)名]

 🌿 ルートテーブル(パブリックサブネット用(2)):

  • ルート:
     送信先:0.0.0.0/0
     ターゲット:上記のインターネットゲートウェイ
  • タグ:Name / [下記のパブリックサブネット(2)名]

 🌿 ルートテーブル(プライベートサブネット用(1)):

  • ルート:
     送信先:0.0.0.0/0
     ターゲット:上記のNATゲートウェイ(1)
  • タグ:Name / [下記のプライベートサブネット(1)名]

 🌿 ルートテーブル(プライベートサブネット用(2)):

  • ルート:
     送信先:0.0.0.0/0
     ターゲット:上記のNATゲートウェイ(2)
  • タグ:Name / [下記のプライベートサブネット(2)名]


🍀 ネットワークACL

 デフォルトとして、サブネット共通で1つ作成されます。
 こちらは1つ。🐶
 代表的なプロパティは以下になります。

 🌿 ネットワークACL:

  • インバウンドルール(1) / アウトバウンドルール(1):
     ルール番号:100
     タイプ:すべてのトラフィック
     プロトコル:すべて
     ポート範囲:すべて
     送信元:0.0.0.0/0
     許可/拒否:許可
  • インバウンドルール(2) / アウトバウンドルール(2):
     ルール番号:*
     タイプ:すべてのトラフィック
     プロトコル:すべて
     ポート範囲:すべて
     送信元:0.0.0.0/0
     許可/拒否:拒否


🍀 サブネット!

 パブリックサブネットが2つ、プライベートサブネットが2つ、計4つ作成されます。⛵
 東京リージョンのようにAZが3つあっても、2つのAZにのみ作成されます。🐶🐶
 ※このご時世、3つは欲しいなぁ。👡

 代表的なプロパティは以下になります。

 🌿 パブリックサブネット(1):

  • IPv4 CIDR:10.0.0.0/18
  • アベイラビリティゾーン:ap-northeast-1a
  • ルートテーブル:上記のルートテーブル(パブリックサブネット用(1))
  • ネットワークACL:上記のネットワークACL
  • Name / [プロジェクト名]/Vpc/PublicSubnet1

 🌿 パブリックサブネット(2):

  • IPv4 CIDR:10.0.64.0/18
  • アベイラビリティゾーン:ap-northeast-1c
  • ルートテーブル:上記のルートテーブル(パブリックサブネット用(2))
  • ネットワークACL:上記のネットワークACL
  • Name / [プロジェクト名]/Vpc/PublicSubnet2

 🌿 プライベートサブネット(1):

  • IPv4 CIDR:10.0.128.0/18
  • アベイラビリティゾーン:ap-northeast-1a
  • ルートテーブル:上記ルートテーブル(プライベートサブネット用(1))
  • ネットワークACL:上記共通のネットワークACL
  • Name / [プロジェクト名]/Vpc/PrivateSubnet1

 🌿 プライベートサブネット(2):

  • IPv4 CIDR:10.0.192.0/18
  • アベイラビリティゾーン:ap-northeast-1c
  • ルートテーブル:上記ルートテーブル(プライベートサブネット用(2))
  • ネットワークACL:上記共通のネットワークACL
  • Name / [プロジェクト名]/Vpc/PrivateSubnet2


作成されるオブジェクトは以上です!

いかがでしたでしょうか。
AWSの思想に不慣れなうちは、何が何やらぴーひゃらら、ですが、
慣れてくると、
あの1行でこれらオブジェクトが展開されて関連付けされることの凄さ、ありがたさが、
しみじみ分かってくるんですよね。😉

AWSコンソールでポチポチやっても良いんですが、
AWS CDKを使った方が何か構築した感が出るのはなんでなんでしょう。
ただのひとりよがりなのかもしれませんが。

そうそう、ひとりよがりと言えば、
自動で生成されるのはありがたいんですけれど、
何かもうちょっと自分でいろいろ設定したいですよね。😁
オブジェクトに好きな名前つけたいとか、
AZ3つ対応したいとか、
NATGateway最初は設定したくないとか。🐛

できますよ。そう。CDKならね!😎

というわけで次回はカスタマイズ方法をちょこちょこと。
まぁ、この世の中、やりたいことをやったほうが良いよ~、ということで。🐽

それでは、良き良き、AWS CDKライフを!!!🌈