AWS SAM で EventBridge スケジューラを使用して時間ベースのイベントを管理する - AWS Serverless Application Model

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS SAM で EventBridge スケジューラを使用して時間ベースのイベントを管理する

このトピックのコンテンツでは、Amazon EventBridge スケジューラについて、AWS SAM が提供するサポート内容、スケジューライベントの作成方法、およびスケジューライベントの作成時に参照できる例について詳細を説明します。

Amazon EventBridge スケジューラとは

EventBridge スケジューラを使用して、AWS SAM テンプレート内でイベントをスケジュールします。Amazon EventBridge スケジューラは、すべての AWS サービスで数千万に及ぶイベントやタスクを作成、開始、管理できるスケジューリングサービスです。このサービスは、時間関連のイベントに特に役立ちます。これは、イベントや定期的な時間ベースの呼び出しをスケジュールするために使用します。またこれは、1 回限りのイベントだけでなく、開始時刻と終了時刻を指定したレート式とChron 式もサポートしています。

Amazon EventBridge スケジューラの詳細については、「EventBridge スケジューラユーザーガイド」の「What is Amazon EventBridge Scheduler?」(Amazon EventBridge スケジューラとは) を参照してください。

AWS SAM での EventBridge スケジューラのサポート

AWS Serverless Application Model (AWS SAM) テンプレートの仕様には、EventBridge スケジューラを使用して AWS Lambda や AWS Step Functions のイベントをスケジュールできる、シンプルで簡潔な構文が用意されています。

AWS SAM での EventBridge スケジューライベントの作成

ScheduleV2 プロパティを AWS SAM テンプレートのイベントタイプとして設定して、EventBridge スケジューライベントを定義します。このプロパティは、AWS::Serverless::Function および AWS::Serverless::StateMachine リソースタイプをサポートします。

MyFunction: Type: AWS::Serverless::Function Properties: Events: CWSchedule: Type: ScheduleV2 Properties: ScheduleExpression: 'rate(1 minute)' Name: TestScheduleV2Function Description: Test schedule event MyStateMachine: Type: AWS::Serverless::StateMachine Properties: Events: CWSchedule: Type: ScheduleV2 Properties: ScheduleExpression: 'rate(1 minute)' Name: TestScheduleV2StateMachine Description: Test schedule event

EventBridge スケジューラのイベントスケジューリングでは、未処理のイベントのデッドレターキュー (DLQ) もサポートされています。デッドレターキューの詳細については、「EventBridge スケジューラユーザーガイド」の「Configuring a dead-letter queue for EventBridge Scheduler」(EventBridge スケジューラのデッドレターキューの設定) を参照してください。

DLQ ARN を指定すると、AWS SAM はスケジューラのスケジュールのアクセス許可を設定して DLQ にメッセージを送信します。DLQ ARN が指定されていない場合、AWS SAM は DLQ リソースを作成します。

AWS SAM を使用して EventBridge スケジューライベントを定義する基本的な例

Transform: AWS::Serverless-2016-10-31 Resources: MyLambdaFunction: Type: AWS::Serverless::Function Properties: Handler: index.handler Runtime: python3.8 InlineCode: | def handler(event, context): print(event) return {'body': 'Hello World!', 'statusCode': 200} MemorySize: 128 Events: Schedule: Type: ScheduleV2 Properties: ScheduleExpression: rate(1 minute) Input: '{"hello": "simple"}' MySFNFunction: Type: AWS::Serverless::Function Properties: Handler: index.handler Runtime: python3.8 InlineCode: | def handler(event, context): print(event) return {'body': 'Hello World!', 'statusCode': 200} MemorySize: 128 StateMachine: Type: AWS::Serverless::StateMachine Properties: Type: STANDARD Definition: StartAt: MyLambdaState States: MyLambdaState: Type: Task Resource: !GetAtt MySFNFunction.Arn End: true Policies: - LambdaInvokePolicy: FunctionName: !Ref MySFNFunction Events: Events: Schedule: Type: ScheduleV2 Properties: ScheduleExpression: rate(1 minute) Input: '{"hello": "simple"}'

詳細はこちら

ScheduleV2 EventBridge スケジューラプロパティの定義の詳細については、以下を参照してください。