#AWSACLを使ってCloudWatch EventsにRuleを設定します
今回は_毎朝10時に関数を実行する_ルールです。
##まずルールを作成 *put-ruleコマンド
下のようにルールを作成する。
aws events put-rule --name "ルール名" --schedule-expression "cron(0 1 ? * * *)"
####cron式の説明
cron式は公式に書いてありますが下の通りです。
cron(Minutes Hours Day-of-month Month Day-of-week Year)
「?」は直前の指定に対して使われるワイルドカードです。今回の場合は「時間を01:00を指定したが、日付はいつでもいい」という意味です。
##関数に アクセス権限の管理設定add-permission
aws lambda add-permission \
--function-name Lambda関数名 \
--statement-id ステートメント識別子 \
--action 'lambda:InvokeFunction' \ //許可したいLambdaアクション
--principal events.amazonaws.com \
--source-arn arn:aws:events:ap-east-1:アカウント番号:role:関数名
##ルールと関数の結びつけ put-targets
aws events put-targets --rule ルール名 --targets "Id"="0","Arn"="arn:aws:lambda:us-east-1:hoge:function:Lambda関数名"
こんな感じでルールができました。
あとはコンソールでCloudWatch Events をLambda式のトリガーに指定すればいいです。
参考にした記事
AWS Lambdaを1分間隔でスケジュール実行する #reinvent
AWS公式
チュートリアル:CloudWatchイベントを使用したAWS Lambda関数のスケジュール設定
put rule
Rate または Cron を使用したスケジュール式
add-permission
put-targets
日本時間について
WS Lambda を毎月1日 0:00 (JST)に実行する方法