HitCounterの準備ができましたのでアプリに実装していきましょう。
lib/cdk-workshop-stack.ts
を開き、次の強調表示されたコードを追加します。
import { Stack, StackProps } from 'aws-cdk-lib';
import { LambdaRestApi } from 'aws-cdk-lib/aws-apigateway';
import { Runtime } from 'aws-cdk-lib/aws-lambda';
import { NodejsFunction } from 'aws-cdk-lib/aws-lambda-nodejs';
import { Construct } from 'constructs';
import { HitCounter } from './hitcounter';
export class CdkWorkshopStack extends Stack {
constructor(scope: Construct, id: string, props?: StackProps) {
super(scope, id, props);
// AWS Lambdaリソースを定義
const hello = new NodejsFunction(this, 'HelloHandler', {
runtime: Runtime.NODEJS_16_X,
entry: 'lambda/hello.ts',
});
const helloWithCounter = new HitCounter(this, 'HelloHitCounter', {
downstream: hello,
});
// "hello" 関数をバックに持つAPI Gateway REST APIリソースを定義
new LambdaRestApi(this, 'Endpoint', {
handler: helloWithCounter.handler,
});
}
}
API Gatewayのハンドラーをhello
からhelloWithCounter.handler
に変更しています。
これは、エンドポイントが実行されるたびに、API GatewayがHitCounterハンドラーにリクエストをルーティングし、
HitCounterハンドラーが実行されてログに記録し、hello関数に中継することを意味します。
レスポンスはユーザーに返されるまで逆順でリレーされます。
cdk deploy
デプロイには少し時間がかかります。
出力は次のとおりです。
CdkWorkshopStack.Endpoint8024A810 = https://xxxxxxxxxx.execute-api.us-east-1.amazonaws.com/prod/
デプロイが完了したら、次の章でテストをしましょう。