Destinos do AWS AppSync para regras no Amazon EventBridge - Amazon EventBridge

Destinos do AWS AppSync para regras no Amazon EventBridge

O AWS AppSync permite que os desenvolvedores conectem suas aplicações e serviços a dados e eventos com APIs GraphQL e Pub/Sub seguras com tecnologia sem servidor e de alto desempenho. Com o AWS AppSync, é possível publicar atualizações de dados em tempo real nas aplicações com mutações do GraphQL. O EventBridge é compatível com a chamada de uma operação de mutação do GraphQL válida para eventos correspondentes. Ao especificar uma mutação da API do AWS AppSync como destino, o AWS AppSync processa o evento por meio de uma operação de mutação, que pode acionar assinaturas vinculadas à mutação.

nota

O EventBridge é compatível com as APIs públicas do GraphQL do AWS AppSync. No momento, o EventBridge não é compatível com APIs privadas do AWS AppSync.

É possível utilizar um destino da API GraphQL do AWS AppSync para os seguintes casos de uso:

  • Para enviar por push, transformar e armazenar dados de eventos em suas fontes de dados configuradas.

  • Para enviar notificações em tempo real para clientes de aplicações conectados.

nota

Os destinos do AWS AppSync só são compatíveis com a chamada de APIs do AWS AppSync GraphQL com o tipo de autorização do AWS_IAM.

Para obter mais informações sobre as APIs do AWS AppSync GraphQL, consulte Arquitetura do GraphQL e do AWS AppSync no Guia do desenvolvedor do AWS AppSync.

Como especificar um destino do AWS AppSync para uma regra do EventBridge com o console
  1. Crie ou edite a regra.

  2. Em Destino, especifique o destino escolhendo o Serviço da AWS e AWS AppSync.

  3. Especifique a operação de mutação a ser analisada e executada, junto com o conjunto de seleção.

    • Escolha a API do AWS AppSync e a mutação da API GraphQL a ser invocada.

    • Em Configurar parâmetros e conjunto de seleção, escolha criar um conjunto de seleção utilizando o mapeamento de chave-valor ou um transformador de entrada.

      Key-value mapping

      Para utilizar o mapeamento de chave-valor para criar o conjunto de seleção:

      • Especifique as variáveis para os parâmetros da API. Cada variável pode ter um valor estático ou uma expressão dinâmica de caminho JSON para a carga útil do evento.

      • Em Conjunto de seleção, escolha as variáveis que deseja incluir na resposta.

      Input transformer

      Para utilizar um transformador de entrada para criar o conjunto de seleção:

      • Especifique um caminho de entrada que defina as variáveis a serem utilizadas.

      • Especifique um modelo de entrada para definir e formatar as informações que deseja passar para o destino.

      Para ter mais informações, consulte Configurar um transformador de entrada ao criar uma regra no EventBridge.

  4. Em Perfil de execução, escolha se deseja criar um perfil ou utilizar um perfil existente.

  5. Conclua a criação ou a edição da regra.

Exemplo: destinos do AWS AppSync para o Amazon EventBridge

No exemplo a seguir, explicaremos como especificar um destino do AWS AppSync para uma regra do EventBridge, incluindo a definição de uma transformação de entrada para formatar eventos para entrega.

Suponha que você tem uma API GraphQL do AWS AppSync, Ec2EventAPI, definida pelo seguinte 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"]) }

Clientes de aplicações que utilizam essa API podem assinar o subscribeToEvent, cuja assinatura é acionada pela mutação pushEvent.

É possível criar uma regra do EventBridge com um destino que envia eventos à API do AppSync por meio da mutação pushEvent. Quando a mutação é invocada, qualquer cliente assinante recebe o evento.

Para especificar essa API como o destino de uma regra do EventBridge, faça o seguinte:

  1. Defina o nome do recurso da Amazon (ARN) do destino da regra como o ARN do endpoint de GraphQL da API Ec2EventAPI.

  2. Especifique a operação de mutação de GraphQL como um parâmetro de destino:

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

    O conjunto de seleção de mutações deve incluir todos os campos que você deseja assinar em sua assinatura de GraphQL.

  3. Configure um transformador de entrada para especificar como os dados dos eventos correspondentes são utilizados na operação.

    Suponha que você tenha selecionado o evento de entrada “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." } }

    É possível definir as seguintes variáveis para uso no modelo, utilizando caminho de entrada do transformador de entrada do destino:

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

    Componha o modelo do transformador de entrada para definir as variáveis que o EventBridge passa para a operação de mutação do AWS AppSync. O modelo deve ser avaliado como JSON. Determinado o nosso caminho de entrada, é possível compor o seguinte modelo:

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