今から始める CDK 入門 #2
今から始める CDK 入門シリーズの 2 回目です。
各回については以下のリンクからご覧ください。
前回は実践!AWS CDK #1 導入 | DevelopersIO を参考に以下の内容を実施しました。
- Cloud9 環境の作成
- CDK V2 用にコード修正
- リソース作成 ~ 削除
今回は実践!AWS CDK #2 VPC | DevelopersIO を実施します。
実装
CDK V2 の L2 での前回での実装は以下の通りでした。
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 を利用した場合、以下のコードになります。
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 の定義がすっきりしていることが確認できます。
"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