AWS CDK入門ガイドやってみた
SIEM on Amazon OpenSearch ServiceとかでCDKに触ることはあったのですが、 雰囲気で使っていたので入門ガイドやってみることにします。
環境
- macOS Monterey Ver 12.3.1
環境構築
AWS CLIのインストール
AWS CLIを環境に合わせてインストールしておきます。
自分の場合はbrew install
で入れました。
$ brew install awscli
$ aws --version $ aws-cli/2.7.0 Python/3.9.12 Darwin/21.4.0 source/x86_64 prompt/off
インストールできたら、アクセスキーID/シークレットアクセスキーを設定します。
$ aws configure AWS Access Key ID [None]:**************** AWS Secret Access Key [None]:**************** Default region name [ap-northeast-1]: Default output format [json]:
Node.jsのインストール
AWS CDKの動作にはNode.jsが必要です。
複数バージョンを管理するためにnodebrew
を入れておくと良いかと思います。
良かったら前回のブログ記事も参考にしてみてください。
$ node --version v16.15.0 $ npm --version 8.5.5
AWS CDK CLIのインストール
npm
でAWS CDK CLI
をインストールします。
sudo npm install -g aws-cdk
AWSアカウントのブートストラップ
CDKのデプロイに必要なリソースをAmazon S3
上に用意します。
いわゆるAWS CDKを使うためのおまじないで、 同一AWSアカウント同一リージョンであれば一度だけ実行すればOKです。
$ cdk bootstrap aws://123456789012/ap-northeast-1
CDKを試してみる
2つのアベイラビリティゾーンを持つVPCをCDKで作成します。
作業用のディレクトリを作っておきます。
$ mkdir cdk-demo $ cd cdk-demo
CDKでTypeScriptを使うように初期化します。
$ cdk init --language typescript
cdk-demo/bin.cdk-demo.ts
を編集し、デプロイ先となるAWSアカウントIDとリージョンを追記します。
#!/usr/bin/env node import 'source-map-support/register'; import * as cdk from '@aws-cdk/core'; import { CdkDemoStack } from '../lib/cdk-demo-stack'; const app = new cdk.App(); new CdkDemoStack(app, 'CdkDemoStack', { env: { account: '123456789012', region: 'ap-northeast-1' }, });
VPCやサブネットを作成するには専用のクラスが必要になります。
EC2モジュールをインストールします。
$ npm install -g @aws-cdk/aws-ec2
package.json
に追加したEC2モジュールの情報が自動で追記されます。
"dependencies": { "@aws-cdk/aws-ec2": "^1.155.0", "aws-cdk-lib": "2.23.0", "constructs": "^10.0.0", "source-map-support": "^0.5.21" }
cdk-demo/lib/cdk-demo-stack.ts
を編集します。
EC2モジュールからVpc
クラスとSubnetType
クラスをインポートし、
2つのAZを指定したVPCを用意します。
import * as cdk from '@aws-cdk/core'; import { Construct } from 'constructs'; import { Vpc, SubnetType } from '@aws-cdk/aws-ec2'; export class CdkDemoStack extends cdk.Stack { constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) { super(scope, id, props); const vpc = new Vpc(this, 'MainVpc', { maxAzs: 2, subnetConfiguration: [ { cidrMask: 24, name: 'public-subnet', subnetType: SubnetType.PUBLIC }, ] }); } }
CDKのデプロイ
ここまでできたらAWSアカウントにデプロイします。
デプロイするとCloudFormationがのスタックが定義されリソースが作成されます。
$ cdk deploy
CdkDemoStack/MainVPC
という名前でVPCが作成されています。
パブリックサブネットが2つ作られていることが確認できました。
クリーンアップ
作成したリソースは次のコマンドで一括で削除できます。
$ cdk destroy
まとめ
AWS CDKの環境構築からVPCのリソース作成まで一通りやってみました。
CloudFormationよりも記述量が少なく、コード補完も効くので書きやすくて便利だなと思いました。
もう少し詳しく知るためにBlackBeltの資料を見たり、 AWS CDK intro Workshopも見つけたのでまたやってみたいと思います。
- AWS CDK Intro Workshop