翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
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 スケジューラプロパティの定義の詳細については、以下を参照してください。
-
AWS::Serverless::Function
用の ScheduleV2。 -
AWS::Serverless::StateMachine
用の ScheduleV2。