【AWS】AWS Cloud Development Kit(AWS CDK)でAWS Lambdaのデプロイを設定する
AWS

【AWS】AWS Cloud Development Kit(AWS CDK)でAWS Lambdaのデプロイを設定する

作成日:2021年12月21日
更新日:2021年12月23日

前回は、AWS CDK で hello のデータを DynamoDB に接続しました。

aws-cdk-apigateway-dynamodb

【AWS】AWS Cloud Development Kit(AWS CDK)でDynamoDBに接続する

今回は、AWS Lambda のデプロイを設定します。

AWS Lambda をデプロイするには、依存関係を一つにまとめる必要があります。

また、AWS CDK では TypeScript で書いていますが、Node.js は JavaScript なので TypeScript をコンパイルする必要があります。

この問題を解決するために、aws_lambda_nodejs モジュールを使います。

ドキュメントによると、関数を実行するために必要なコードと依存関係を含む Lambda パッケージが作成されるとのことです。

また、このモジュールは、esbuildを使用します。

esbuild とは、webpack のように JavaScript を一つにまとめるバンドラーです。

まずは、ターミナルでプロジェクトのディレクトリに移動し、npm install --save-dev esbuild@0 を実行します。

インストールが完了後、lambda-node フォルダを作成します。

lambda-node フォルダ内に、hello.ts ファイルを作成します。

body に『Hello, Lambda Node!』を入れました。

ts
async function handler(event: any, content: any) {
console.log("request:", JSON.stringify(event, undefined, 2));
return {
statusCode: 200,
body: "Hello, Lambda Node!",
};
}

lib フォルダの cdk-stack.ts フォルダを開きます。

aws-cdk-lib から aws_lambda_nodejs をインポートします。

ts
import {
Stack,
StackProps,
aws_lambda,
aws_apigateway,
aws_lambda_nodejs,
} from "aws-cdk-lib";

hlello と同じように、CdkStack クラス内に helloLambdaNode を書いていきます。

aws_lambda_nodejs の NodejsFunction を使います。

また、entry にはパスを書きます

ts
const helloLambdaNode = new aws_lambda_nodejs.NodejsFunction(
this,
"helloLambdaNodeHandler",
{
entry: "lambda-node/hello.ts",
handler: "handler",
}
);

ターミナルで、 cdk synth を実行します。

正常に実行できたようです。

image2

ターミナルで、 cdk deployを実行します。

デプロイを実行していいか聞かれるので、『y』を入力し、エンターキーを押します。

image3

デプロイが完了しました。

AWS Lambdaにアクセスします。

helloLambdaNodeHandler が作成されていました。

image4

image5

自由に外部モジュールをインポートして利用することができるようになりました。

© 2024あずきぱんウェブスタジオ