はじめに
CDK触ったことがなかったのでハンズオンをやってみました。
備忘録も兼ねて投稿します。
使用したハンズオン教材(古いのでバージョンやコードに注意)
HOL-10:コードでAWS環境を管理しよう! AWS CDKハンズオン
CDKの概念
1時間くらいのハンズオンの動画である程度理解できると思います。
CloudFormationを触ったことがある方であればstackの概念にConstructを組み合わせるイメージです。
ディレクトリの作成
- stackを作成、反映させるための空ディレクトリを作成しておく。
初期化コードの生成
cdk init sample-app --language=typescript
初期設定(初回時)
cdk bootstrap
具体的に何をしてくれるコマンド?
- S3バケットの作成
- IAMロールの作成
- CFnスタックの作成
リソースを作成するためのバックエンドを作ってくれる
lambdaコード
- lambdaのフォルダを作成して、jsファイルを入れておく(下記参照)
Hello Lambda
lib配下のtest_cdk-stackを変更する
- SQSとSNSっぽいものは不要なため削除してok
- 作成したいサービスのコンストラクトライブラリを指定する(lambdaとapi gateway)
- aws-cdk-libから全リソースはインポートできる
import { Duration, Stack, StackProps } from 'aws-cdk-lib';
import { Construct } from 'constructs';
import * as lambda from 'aws-cdk-lib/aws-lambda';
import * as apigw from 'aws-cdk-lib/aws-apigateway';
export class TestCdkStack extends Stack {
constructor(scope: Construct, id: string, props?: StackProps) {
super(scope, id, props);
const hello = new lambda.Function(this, 'HelloHandler', {
runtime: lambda.Runtime.NODEJS_18_X,
code: lambda.Code.fromAsset('lambda'),
handler: 'hello.handler',
});
const api = new apigw.LambdaRestApi(this, 'Endpoint', {
handler: hello,
});
}
}
エラーが出た場合
公式のハンズオンは古いのでコードの修正が必要です。
- CDKのバージョンを確認
cdk --version
CDK v2の場合、aws-cdk-lib をインストールしてコードを上のように修正
npm install aws-cdk-lib
- ランタイムのバージョンを確認
デプロイ
cdk deploy
結果
- 出力結果で返ってきたURLを指定してcurlを実行
C:\test_cdk>curl https://xxxxxxxx.execute-api.ap-northeast-1.amazonaws.com/prod/
Hello, CDK! You've hit
最後に
High-level Constructsのおかげでコード量がほかのIaCに比べて圧倒的に少ないのが魅力的
他のリソースを作成して応用していきたい