定期実行は Azure Functions が楽に使えて良いのですが、ストレージで料金発生していたので、
おとなしく AWS でやることにしたので、そのときのメモです。
CDK でいろいろやるときは、まずは実際どう組むかを知っておく必要があるので、
AWS Lambda を定期実行する方法を探してみました。
AWS の Lambda で cron みたいな感じで定期実行する
CloudWatch からやれば良いらしいということで
+-------------------+ +-----------------+ | CloudWatch Events +-->+ Lambda Function | +-------------------+ +-----------------+
な Stack を書きます。
前提:
- AWS CDK 0.22.0
- TypeScript
CloudWatch Event の Rule を使うには @aws-cdk/aws-events
が必要なのでインストールしておきます。
また、 Lambda Function を呼び出すので、 @aws-cdk/aws-lambda
も入れておきます。
最終的には、下のような形になりました。
import * as cdk from "@aws-cdk/cdk"; import * as events from "@aws-cdk/aws-events"; import * as lambda from "@aws-cdk/aws-lambda"; export class PixitterStack extends cdk.Stack { constructor(parent: cdk.App, name: string, props?: cdk.StackProps) { super(parent, name, props); const event = new events.EventRule(this, `PixitterEvent`, { ruleName: "cloudwatch-event-rule-name", description: "Cron Scheduled Event for Lambda", scheduleExpression: "cron(10 15 * * ? *)", // run on 00:10:00 JST }); const task = new lambda.Function(this, `PixitterTask`, { code: lambda.Code.asset("./dist"), handler: "index.handler", memorySize: 256, timeout: 30, runtime: lambda.Runtime.NodeJS810, }); event.addTarget(task); } }
生成されるイベントはこんな感じ
ということで AWS CDK の記事でした