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を使う必要がありそうです。

参考サイト

CDK Immersion Day Workshop
Workshops to learn the AWS CDK. This content is available as part of a full Immersion Day, but can also be run separatel...
Getting started with the AWS CDK - AWS Cloud Development Kit (AWS CDK) v2
Get started with the AWS Cloud Development Kit (AWS CDK) by creating an AWS account, configuring the AWS CDK Command Lin...

コメント

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

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

続きを読む

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