📝

今から始める CDK 入門 #2

2023/10/03に公開

今から始める CDK 入門シリーズの 2 回目です。

各回については以下のリンクからご覧ください。

  1. 今から始める CDK 入門 #1

前回は実践!AWS CDK #1 導入 | DevelopersIO を参考に以下の内容を実施しました。

  • Cloud9 環境の作成
  • CDK V2 用にコード修正
  • リソース作成 ~ 削除

今回は実践!AWS CDK #2 VPC | DevelopersIO を実施します。

実装

CDK V2 の L2 での前回での実装は以下の通りでした。

devio-stack.ts
import * as cdk from 'aws-cdk-lib';
import { Construct } from 'constructs';
import { Vpc } from 'aws-cdk-lib/aws-ec2'; // <- 追加

export class DevioStack extends cdk.Stack {
  constructor(scope: Construct, id: string, props?: cdk.StackProps) {
    super(scope, id, props);
    
    new Vpc(this, 'Vpc'); // <- 追加
  }
}

L2 では VPC だけではなくネットワークに関連するリソースも自動的に作成される仕様であることは前回のブログで紹介されていました。

実践!AWS CDK #1 導入 | DevelopersIO

今回のサンプルで使用したクラス(Construct)Vpc は L2 であり、それを作成することでネットワーク構築に必要な(ベストプラクティスとされる)他のリソースが適切な設定値で軒並み一緒に作られてしまったというわけです。

VPC 単体だけを作成したい場合にはブログでの説明通り L1 の CfnVPC クラスを使用します。
class CfnVPC (construct) · AWS CDK

CDK V2 で L1 を利用した場合、以下のコードになります。

devio-stack.ts
import * as cdk from 'aws-cdk-lib';
import { Construct } from 'constructs';
import { CfnVPC } from 'aws-cdk-lib/aws-ec2'; // import の名前のみ変更

export class DevioStack extends cdk.Stack {
  constructor(scope: Construct, id: string, props?: cdk.StackProps) {
    super(scope, id, props);

  // L1 での定義
    new CfnVPC(this, 'Vpc', {
      cidrBlock: '10.0.0.0/16',
      tags: [{ key: 'Name', value: 'devio-stg-vpc' }]
    });
  }
}

ブログでは CfnVPC の引数について説明されています。
基本的には引数に作成したいリソースタイプや CloudFormation プロパティを記載する構成のようです。
詳しくはブログをご覧ください。

テンプレートの作成

前回同様 cdk synth コマンドで CloudFormation テンプレートを生成します。
私の場合、前回の実施以降 Cloud9 環境を一度停止させてしまったので IDE を起動後に cd コマンドでディレクトリを変更する必要がありました。

$ cdk synth
--app is required either in command-line, in cdk.json or in ~/.cdk.json

上記エラーが発生したので、cd コマンドでディレクトリを変更してから再度 cdk synth コマンドを実行しました。

$ cd devio
$ cdk synth

DevioStack.template.json で CloudFormation テンプレートを確認してみると、VPC の定義がすっきりしていることが確認できます。

DevioStack.template.json
"Resources": {
  "Vpc": {
   "Type": "AWS::EC2::VPC",
   "Properties": {
    "CidrBlock": "10.0.0.0/16",
    "Tags": [
     {
      "Key": "Name",
      "Value": "devio-stg-vpc"
     }
    ]
   },
以下、略

デプロイ

cdk deploy コマンドでデプロイします。

$ cdk deploy

確認

デプロイ後に CloudFormation スタックを確認すると VPC のみが作成されていることがわかります。

クリーンアップ

cdk destroy コマンドでリソースを削除します。

$ cdk destroy

まとめ

今回の手順でブログと大きく異なる点は特になく、前回同様 import の定義の部分のみでした。

次回は実践!AWS CDK #3 テスト | DevelopersIO を実施します。

今から始める CDK 入門 #3 へ続く

参考資料

Discussion