AWS CDK を使って、 AWS Lambda のコンテナイメージを使用した関数 をデプロイしたのでメモしておく。 まずはプロジェクト初期化:
$ pnpm install -g aws-cdk $ cdk init app --language typescript
初期化できたら、 lib/xxx-stack.ts
を編集。
以下のようにする:
import * as cdk from "aws-cdk-lib"; import * as lambda from "aws-cdk-lib/aws-lambda"; import { HttpMethod } from "aws-cdk-lib/aws-events"; import { Construct } from "constructs"; export class TestStack extends cdk.Stack { constructor(scope: Construct, id: string, props?: cdk.StackProps) { super(scope, id, props); // コンテナイメージ関数を使う const func = new lambda.DockerImageFunction(this, "TestFunction", { // Dockerfile があるディレクトリを指定 code: lambda.DockerImageCode.fromImageAsset(`${__dirname}/../..`), // タイムアウトなどはお好みで timeout: cdk.Duration.seconds(60), memorySize: 2048, }); // 戻り値に対して `addFunctionUrl` を呼び出し。 CORS 設定もお好きに const url = func.addFunctionUrl({ authType: lambda.FunctionUrlAuthType.NONE, cors: { allowedMethods: [HttpMethod.GET, HttpMethod.POST], allowedOrigins: ["*"], }, }); } }
この状態で cdk deploy
すると、関数 URL が生成されたかつ、コンテナイメージとしてデプロイされた Lambda が作られる。
ということでメモでした。