Uso de destinos basados en plantillas en el Programador de EventBridge
Los destinos basados en plantillas son un conjunto de operaciones de API comunes en un grupo de servicios de AWS principales, como Amazon SQS, Lambda y Step Functions. Por ejemplo, puede segmentar la operación Invoke de Lambda proporcionando la función ARN o la operación SendMessage de Amazon SQS mediante el ARN de cola. Para configurar un destino basado en plantilla, también debe conceder permisos a la función de ejecución del programa para que realice la operación de API de destino.
Para configurar un destino basado en plantilla mediante programación mediante AWS CLI o uno de los SDK del Programador de EventBridge, debe especificar el ARN de la función de ejecución, el ARN del recurso de destino, una entrada opcional que desea que el Programador de EventBridge entregue al destino y para algunos destinos basados en plantillas, un conjunto único de parámetros con opciones de configuración adicionales para ese destino. Cuando especifica el ARN de un recurso de destino basado en plantilla, el Programador de EventBridge asume automáticamente que quiere llamar a la operación de API compatible para ese servicio. Si quiere que el Programador de EventBridge se dirija a una operación de API diferente para el servicio, debe configurar el destino como un destino universal.
La siguiente es una lista completa de todos los destinos basados en plantillas compatibles con el Programador de EventBridge y, si corresponde, del conjunto único de parámetros asociados a cada destino. Elija el enlace de cada conjunto de parámetros para ver los campos obligatorios y opcionales en la referencia de la API del Programador de 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 -
IA de SageMaker:
StartPipelineExecutionParámetros:
SageMakerPipelineParameters
-
Amazon SNS –
Publish -
Amazon SQS –
SendMessageParámetros:
SqsParameters
-
Step Functions –
StartExecution
Use los siguientes ejemplos para aprender a configurar diferentes destinos basados en plantillas y los permisos de IAM necesarios para cada destino descrito.
Amazon SQS SendMessage
ejemplo Política de permisos para el rol de ejecución
ejemplo 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"}'
ejemplo SDK de Python
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)
ejemplo SDK de 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
ejemplo Política de permisos para el rol de ejecución
ejemplo 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"}'
ejemplo SDK de Python
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)
ejemplo SDK de 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"); } }
Step Functions StartExecution
ejemplo Política de permisos para el rol de ejecución
ejemplo 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"}'
ejemplo SDK de Python
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)
ejemplo SDK de 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"); } }