0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SAMの`Type: Schedule`1行が裏で何をしているかコンソールで確認する

0
Posted at

背景

EventBridge + Lambdaの定期バッチ構成を、SAMではなくAWSコンソールだけで手動構築してみました。SAMのテンプレート1行が実際には何をしているのかが見えてきます。

1. EventBridge Scheduler と EventBridge ルールは別物

コンソールには「スケジュール」と「ルール」という2種類のUIがあります。

  • スケジュール(EventBridge Scheduler): 新しいサービス。タイムゾーン設定・フレックスタイムウィンドウあり
  • ルール(EventBridge Events): 旧サービス。SAMのType: Scheduleはこちらを内部で使用

どちらも「定期実行」機能は同じですが、UIも設定項目も異なります。今回はコンソールの新しい「スケジュール」機能を使いました。

2. rateベースとcronベースの使い分け

rateベース: 「X分ごと」のようなシンプルな繰り返し → 「1 分」と入力するだけ
cronベース: 「毎日9時」のような複雑な指定 → 分・時・日・月・曜日・年を全入力

1分ごとの単純な繰り返しなら、cronで頑張るよりrateベースの方が圧倒的に楽です。

3. Lambda呼び出しのペイロードで実行元を識別する

EventBridgeからLambdaに渡すペイロードを設定しておくと、手動実行と自動実行を区別できます。

{"source": "eventbridge-scheduler"}

Lambda側でこの値を受け取り、ログに"triggeredBy": "eventbridge-scheduler"のように出力すれば、テスト実行と本番トリガーの切り分けが簡単になります。

4. IAMロールは2箇所で自動作成される

SAMでは意識しない部分ですが、コンソールで手動構築すると以下2つの別々のIAMロールが自動作成されることが分かります。

  • Lambda関数作成時: BatchFunction-role-XXXX(CloudWatch Logs書き込み権限)
  • EventBridge Scheduler作成時: Amazon_EventBridge_Scheduler_LAMBDA_XXXX(Lambda呼び出し権限)

SAMのType: Scheduleはこの2つを裏側でまとめて作成・削除してくれています。

5. SAMとの対比

SAMの記述 コンソールでの実体
Type: Schedule / Schedule: rate(1 minute) EventBridge Scheduler → スケジュール作成
Enabled: true スケジュールの状態を「有効」に設定
AWSLambdaBasicExecutionRole(自動付与) Lambda作成時「基本的なアクセス権限で新しいロールを作成」を選択
EventBridgeのターゲット設定(自動) ターゲット選択画面でLambda関数とペイロードを指定
sam delete スケジュール・Lambda・IAMロール×2・ロググループを個別に削除

まとめ

コンソールで手動構築すると、SAMが1行でまとめている「IAMロール2つ・ターゲット設定・ペイロード」の存在が見えてきます。SAM版との時間比較(5〜10分 vs 15〜30分)や全手順はこちらにまとめています。

AWSコンソールだけでEventBridge + Lambda定期バッチを構築する手順(ブログ)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?