AWS AppSync objetivos para Amazon EventBridge - Amazon EventBridge

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

AWS AppSync objetivos para Amazon EventBridge

AWS AppSync permite a los desarrolladores conectar sus aplicaciones y servicios a datos y eventos con API GraphQL y Pub/Sub seguras, sin servidor y de alto rendimiento. Con AWS AppSync, puede publicar actualizaciones de datos en tiempo real en sus aplicaciones con mutaciones de GraphQL. EventBridge admite la llamada a una operación de mutación de GraphQL válida para eventos coincidentes. Cuando especificas una mutación de AWS AppSync API como objetivo, AWS AppSync procesa el evento mediante una operación de mutación, que luego puede activar suscripciones vinculadas a la mutación.

nota

EventBridge admite las API AWS AppSync públicas de GraphQL. EventBridge actualmente no es compatible con las API AWS AppSync privadas.

Puedes usar un objetivo de la API de AWS AppSync GraphQL para los siguientes casos de uso:

  • Para insertar, transformar y almacenar datos de eventos en los orígenes de datos configurados.

  • Para enviar notificaciones en tiempo real a los clientes de aplicaciones conectados.

nota

AWS AppSync los objetivos solo admiten la llamada a las API de AWS AppSync GraphQL mediante el tipo de AWS_IAMautorización.

Para obtener más información sobre las API de AWS AppSync GraphQL, consulte GraphQL y su AWS AppSync arquitectura en la Guía para desarrolladores.AWS AppSync

Para especificar un AWS AppSync objetivo para una EventBridge regla mediante la consola
  1. Cree o edite la regla.

  2. En Destino, especifique el objetivo eligiendo servicio de AWS y, a continuación, AWS AppSync.

  3. Especifique la operación de mutación que se analizará y ejecutará, junto con el conjunto de selección.

    • Elija la AWS AppSync API y, a continuación, la mutación de la API de GraphQL que desee invocar.

    • En Configurar parámetros y conjunto de selecciones, elija crear un conjunto de selección mediante una asignación de clave-valor o un transformador de entrada.

      Key-value mapping

      Para usar la asignación de clave-valor para crear el conjunto de selección:

      • Especifique las variables para los parámetros de la API. Cada variable puede ser un valor estático o una expresión de ruta JSON dinámica para la carga útil del evento.

      • En Conjunto de selección, elige las variables que desea incluir en la respuesta.

      Input transformer

      Si desea usar un transformador de entrada para crear el conjunto de selección:

      • Especifique una ruta de entrada que defina las variables que se usarán.

      • Especifique una plantilla de entrada para definir y dar formato a la información que desea que se pase al destino.

      Para obtener más información, consulte Configuración de un transformador de entrada como parte de la creación de una regla.

  4. Para Rol de ejecución, elija si desea crear un nuevo rol o use un rol existente.

  5. Complete la creación o edición de la regla.

Ejemplo: AWS AppSync objetivos para Amazon EventBridge

En el siguiente ejemplo, veremos cómo especificar un AWS AppSync objetivo para una EventBridge regla, incluida la definición de una transformación de entrada para formatear los eventos para su entrega.

Supongamos que tiene una API de AWS AppSync GraphQLEc2EventAPI, definida por el siguiente esquema:

type Event { id: ID! statusCode: String instanceId: String } type Mutation { pushEvent(id: ID!, statusCode: String!, instanceId: String): Event } type Query { listEvents: [Event] } type Subscription { subscribeToEvent(id: ID, statusCode: String, instanceId: String): Event @aws_subscribe(mutations: ["pushEvent"]) }

Los clientes de aplicaciones que utilizan esta API pueden suscribirse a la suscripción de subscribeToEvent, que se desencadena por la mutación de pushEvent.

Puedes crear una EventBridge regla con un objetivo que envíe eventos a la AppSync API a través de la pushEvent mutación. Cuando se invoque la mutación, cualquier cliente que esté suscrito recibirá el evento.

Para especificar esta API como el destino de una EventBridge regla, debes hacer lo siguiente:

  1. Establezca el nombre de recurso de Amazon (ARN) del destino de la regla en el ARN de punto de conexión de GraphQL de la API de Ec2EventAPI.

  2. Especifique la operación de GraphQL de mutación como parámetro de destino:

    mutation CreatePushEvent($id: ID!, $statusCode: String, $instanceId: String) { pushEvent(id: $input, statusCode: $statusCode, instanceId: $instanceId) { id statusCode instanceId } }

    Su conjunto de selección de mutaciones debe incluir todos los campos a los que desee suscribirse en su suscripción a GraphQL.

  3. Configure un transformador de entrada para especificar cómo se utilizan los datos de los eventos coincidentes en su operación.

    Supongamos que ha seleccionado el evento de ejemplo “EC2 Instance Launch Successful”:

    { "version": "0", "id": "3e3c153a-8339-4e30-8c35-687ebef853fe", "detail-type": "EC2 Instance Launch Successful", "source": "aws.autoscaling", "account": "123456789012", "time": "2015-11-11T21:31:47Z", "region": "us-east-1", "resources": ["arn:aws:autoscaling:us-east-1:123456789012:autoScalingGroup:eb56d16b-bbf0-401d-b893-d5978ed4a025:autoScalingGroupName/sampleLuanchSucASG", "arn:aws:ec2:us-east-1:123456789012:instance/i-b188560f"], "detail": { "StatusCode": "InProgress", "AutoScalingGroupName": "sampleLuanchSucASG", "ActivityId": "9cabb81f-42de-417d-8aa7-ce16bf026590", "Details": { "Availability Zone": "us-east-1b", "Subnet ID": "subnet-95bfcebe" }, "RequestId": "9cabb81f-42de-417d-8aa7-ce16bf026590", "EndTime": "2015-11-11T21:31:47.208Z", "EC2InstanceId": "i-b188560f", "StartTime": "2015-11-11T21:31:13.671Z", "Cause": "At 2015-11-11T21:31:10Z a user request created an AutoScalingGroup changing the desired capacity from 0 to 1. At 2015-11-11T21:31:11Z an instance was started in response to a difference between desired and actual capacity, increasing the capacity from 0 to 1." } }

    Puede definir las siguientes variables para usarlas en su plantilla, usando la ruta de entrada del transformador de entrada de destino:

    { "id": "$.id", "statusCode": "$.detail.StatusCode", "EC2InstanceId": "$.detail.EC2InstanceId" }

    Componga la plantilla del transformador de entrada para definir las variables que se EventBridge transferirán a la operación de AWS AppSync mutación. La plantilla debe evaluarse en JSON. Dada nuestra ruta de entrada, puede crear la siguiente plantilla:

    { "id": <id>, "statusCode": <statusCode>, "instanceId": <EC2InstanceId> }