主にプログラミング関連のメモ帳 ♪(✿╹ヮ╹)ノ
書いてあるコードは自己責任でご自由にどうぞ。記事本文の無断転載は禁止です。
2019/01/27
定期実行は Azure Functions が楽に使えて良いのですが、ストレージで料金発生していたので、
おとなしく AWS でやることにしたので、そのときのメモです。
CDK でいろいろやるときは、まずは実際どう組むかを知っておく必要があるので、
AWS Lambda を定期実行する方法を探してみました。
AWS の Lambda で cron みたいな感じで定期実行する
CloudWatch からやれば良いらしいということで
+-------------------+ +-----------------+
| CloudWatch Events +-->+ Lambda Function |
+-------------------+ +-----------------+
な Stack を書きます。
前提:
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 の記事でした