HitCounterの使用

スタックにHitCounterを追加する

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/

デプロイが完了したら、次の章でテストをしましょう。