AWS CDKでLambda(node.js)をデプロイする

AWS CDKでLambda(node.js)をデプロイする

aws-cdkをグローバルインストールします。

npm install -g aws-cdk

これでcdkコマンドが使えるようになります。

cdk --version
2.26.0 (build a409d63)

プロジェクト作成します。

cdk init app --language typescript

esbuildをインストールします。

npm i --save-dev esbuild@0

lambdaディレクトリを作成し、index.js(lambda)を作成します。

mkdir lambda
touch index.js

index.js(lambda)は以下のようにします。

exports.handler = async function(event) {
  console.log("request:", JSON.stringify(event, undefined, 2));
  return {
    statusCode: 200,
    headers: { "Content-Type": "text/plain" },
    body: `Hello, CDK! You've hit ${event.path}\n`
  }
}

lib配下のts修正

プロジェクトのlib配下にあるtsファイルを修正します。

add start ~ add endまでです。以下では、index.handler、node.js v16にしています。

import { Stack, StackProps } from 'aws-cdk-lib';
import { Construct } from 'constructs';
import * as lambda from 'aws-cdk-lib/aws-lambda';

export class Sample001Stack extends Stack {
  constructor(scope: Construct, id: string, props?: StackProps) {
    super(scope, id, props);
    // add start
    const index = new lambda.Function(this, 'IndexHandler', {
      runtime: lambda.Runtime.NODEJS_16_X, // node.js v16
      code: lambda.Code.fromAsset('lambda'), // lambdaディレクトリ
      handler: 'index.handler' // index.jsにしたのでindex
    })
    // add end
  }
}

これで保存します。

cdk bootstrap

次に以下コマンド実行します。

cdk bootstrap

このコマンドはデプロイする前に1回だけ実行が必要なようです。

裏でcloudformationのstackが作成されます。Lambdaデプロイ用のS3バケットが作成されます。

CDKでLambda(node.js)をデプロイする

cdk

cdk deploy

デプロイします。

cdk deploy

これでstackとlambdaがデプロイされます。

AWS CDKでLambda(node.js)をデプロイする

AWS CDKでLambda(node.js)をデプロイする

node_modulesを含めたデプロイの場合は、aws-lambda-node.jsを使う必要がありそうです。

参考サイト

Workshop Studio
Discover and participate in AWS workshops and GameDays
AWS Cloud Development Kit (AWS CDK) v2

コメント

株式会社CONFRAGE ITソリューション事業部をもっと見る

今すぐ購読し、続きを読んで、すべてのアーカイブにアクセスしましょう。

続きを読む

タイトルとURLをコピーしました