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 deploy
デプロイします。
cdk deploy
これでstackとlambdaがデプロイされます。
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...
KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^
コメント