定期実行は 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 の記事でした