Usar destinos modelados no Agendador do EventBridge
Os destinos modelados são um conjunto de operações de API comuns em um grupo de serviços principais da AWS, como Amazon SQS, Lambda e Step Functions. Por exemplo, você pode direcionar a operação do Lambda de Invoke fornecendo o ARN da função ou a operação do Amazon SQS de SendMessage usando o ARN da fila. Para configurar um destino modelado, você também deve conceder permissões à função de execução do agendamento para realizar a operação de API direcionada.
Para configurar um destino modelado de forma programática usando a AWS CLI ou um dos SDKs do Agendador do EventBridge, você precisa especificar o ARN da função de execução, o ARN do recurso de destino, uma entrada opcional que você deseja que o Agendador do EventBridge entregue ao destino e, para alguns destinos modelados, um conjunto exclusivo de parâmetros com opções de configuração adicionais para esse destino. Quando você especifica o ARN para um recurso de destino modelado, o Agendador do EventBridge assume automaticamente que você deseja chamar a operação de API compatível para esse serviço. Se você quiser que o Agendador do EventBridge tenha como destino uma operação de API diferente para o serviço, você deve configurar o destino como um destino universal.
A seguir está uma lista completa de todos os destinos modelados que o Agendador do EventBridge aceita e, se aplicável, o conjunto exclusivo de parâmetros associados de cada destino. Escolha o link para cada conjunto de parâmetros para ver os campos obrigatórios e opcionais na Referência da API do Agendador do EventBridge.
-
CodeBuild –
StartBuild -
CodePipeline –
StartPipelineExecution -
Amazon ECS –
RunTaskParâmetros:
EcsParameters
-
EventBridge –
PutEventsParâmetros:
EventBridgeParameters
-
Amazon Inspector –
StartAssessmentRun -
Kinesis –
PutRecordParâmetros:
KinesisParameters
-
Firehose –
PutRecord -
Lambda –
Invoke -
SageMaker AI –
StartPipelineExecutionParâmetros:
SageMakerPipelineParameters
-
Amazon SNS –
Publish -
Amazon SQS –
SendMessageParâmetros:
SqsParameters
-
Step Functions –
StartExecution
Use os exemplos a seguir para aprender a configurar diferentes destinos modelados e as permissões necessárias do IAM para cada destino descrito.
Amazon SQS SendMessage
exemplo Política de permissão para função de execução
exemplo AWS CLI
$aws scheduler create-schedule --name sqs-templated --schedule-expression 'rate(5 minutes)' \ --target '{"RoleArn": "ROLE_ARN", "Arn":"QUEUE_ARN", "Input": "Message for scheduleArn: '<aws.scheduler.schedule-arn>', scheduledTime: '<aws.scheduler.scheduled-time>'" }' \ --flexible-time-window '{ "Mode": "OFF"}'
exemplo Python SDK
import boto3 scheduler = boto3.client('scheduler') flex_window = { "Mode": "OFF" } sqs_templated = { "RoleArn": "<ROLE_ARN>", "Arn": "<QUEUE_ARN>", "Input": "Message for scheduleArn: '<aws.scheduler.schedule-arn>', scheduledTime: '<aws.scheduler.scheduled-time>'" } scheduler.create_schedule( Name="sqs-python-templated", ScheduleExpression="rate(5 minutes)", Target=sqs_templated, FlexibleTimeWindow=flex_window)
exemplo SDK do Java
package com.example; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.scheduler.SchedulerClient; import software.amazon.awssdk.services.scheduler.model.*; public class MySchedulerApp { public static void main(String[] args) { final SchedulerClient client = SchedulerClient.builder() .region(Region.US_WEST_2) .build(); Target sqsTarget = Target.builder() .roleArn("<ROLE_ARN>") .arn("<QUEUE_ARN>") .input("Message for scheduleArn: '<aws.scheduler.schedule-arn>', scheduledTime: '<aws.scheduler.scheduled-time>'") .build(); CreateScheduleRequest createScheduleRequest = CreateScheduleRequest.builder() .name("<SCHEDULE NAME>") .scheduleExpression("rate(10 minutes)") .target(sqsTarget) .flexibleTimeWindow(FlexibleTimeWindow.builder() .mode(FlexibleTimeWindowMode.OFF) .build()) .build(); client.createSchedule(createScheduleRequest); System.out.println("Created schedule with rate expression and an Amazon SQS templated target"); } }
Lambda Invoke
exemplo Política de permissão para função de execução
exemplo AWS CLI
$aws scheduler create-schedule --name lambda-templated-schedule --schedule-expression 'rate(5 minutes)' \ --target '{"RoleArn": "ROLE_ARN", "Arn":"FUNCTION_ARN", "Input": "{ \"Payload\": \"TEST_PAYLOAD\" }" }' \ --flexible-time-window '{ "Mode": "OFF"}'
exemplo Python SDK
import boto3 scheduler = boto3.client('scheduler') flex_window = { "Mode": "OFF" } lambda_templated = { "RoleArn": "<ROLE_ARN>", "Arn": "<LAMBDA_ARN>", "Input": "{ 'Payload': 'TEST_PAYLOAD' }"} } scheduler.create_schedule( Name="lambda-python-templated", ScheduleExpression="rate(5 minutes)", Target=lambda_templated, FlexibleTimeWindow=flex_window)
exemplo SDK do Java
package com.example; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.scheduler.SchedulerClient; import software.amazon.awssdk.services.scheduler.model.*; public class MySchedulerApp { public static void main(String[] args) { final SchedulerClient client = SchedulerClient.builder() .region(Region.US_WEST_2) .build(); Target lambdaTarget = Target.builder() .roleArn("<ROLE_ARN>") .arn("<Lambda ARN>") .input("{ 'Payload': 'TEST_PAYLOAD' }") .build(); CreateScheduleRequest createScheduleRequest = CreateScheduleRequest.builder() .name("<SCHEDULE_NAME>") .scheduleExpression("rate(10 minutes)") .target(lambdaTarget) .flexibleTimeWindow(FlexibleTimeWindow.builder() .mode(FlexibleTimeWindowMode.OFF) .build()) .clientToken("<Token GUID>") .build(); client.createSchedule(createScheduleRequest); System.out.println("Created schedule with rate expression and Lambda templated target"); } }
Funções de Etapa StartExecution
exemplo Política de permissão para função de execução
exemplo AWS CLI
$aws scheduler create-schedule --name sfn-templated-schedule --schedule-expression 'rate(5 minutes)' \ --target '{"RoleArn": "ROLE_ARN", "Arn":"STATE_MACHINE_ARN", "Input": "{ \"Payload\": \"TEST_PAYLOAD\" }" }' \ --flexible-time-window '{ "Mode": "OFF"}'
exemplo Python SDK
import boto3 scheduler = boto3.client('scheduler') flex_window = { "Mode": "OFF" } sfn_templated= { "RoleArn": "<ROLE_ARN>", "Arn": "<STATE_MACHINE_ARN>", "Input": "{ 'Payload': 'TEST_PAYLOAD' }" } scheduler.create_schedule(Name="sfn-python-templated", ScheduleExpression="rate(5 minutes)", Target=sfn_templated, FlexibleTimeWindow=flex_window)
exemplo SDK do Java
package com.example; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.scheduler.SchedulerClient; import software.amazon.awssdk.services.scheduler.model.*; public class MySchedulerApp { public static void main(String[] args) { final SchedulerClient client = SchedulerClient.builder() .region(Region.US_WEST_2) .build(); Target stepFunctionsTarget = Target.builder() .roleArn("<ROLE_ARN>") .arn("<STATE_MACHINE_ARN>") .input("{ 'Payload': 'TEST_PAYLOAD' }") .build(); CreateScheduleRequest createScheduleRequest = CreateScheduleRequest.builder() .name("<SCHEDULE_NAME>") .scheduleExpression("rate(10 minutes)") .target(stepFunctionsTarget) .flexibleTimeWindow(FlexibleTimeWindow.builder() .mode(FlexibleTimeWindowMode.OFF) .build()) .clientToken("<Token GUID>") .build(); client.createSchedule(createScheduleRequest); System.out.println("Created schedule with rate expression and Step Function templated target"); } }