Menu Docs
Página inicial do Docs
/ /
Serviços Atlas App
/

Enviar eventos de gatilho para o AWS EventBridge

Nesta página

  • Visão geral
  • Procedimento
  • Configurar a origem do evento do parceiro MongoDB
  • Configurar o gatilho
  • Associar a origem de eventos de gatilho a um barramento de eventos
  • Tratamento personalizado de erros
  • Crie um novo manipulador de erros personalizado
  • Parâmetros do manipulador de erros
  • Códigos de erro
  • Registros do manipulador de erros
  • Exemplo de evento
  • Otimização de desempenho

O MongoDB oferece um AWS Eventbridge fonte de eventos de um parceiro que permite enviar eventos do Atlas Triggers para um barramento de eventos em vez de chamar uma função do Atlas. Você pode configurar qualquer tipo de Trigger para enviar eventos para o EventBridge. Os gatilhos de banco de dados também oferecem suporte ao tratamento personalizado de erros, para reduzir as suspensões de gatilhos devido a erros não críticos.

Tudo que você precisa para enviar evento trigger para o EventBridge é um ID de conta Amazon Web Services. Este guia mostra como encontrar o ID da sua conta, configurar o trigger, associar a origem do evento trigger a um barramento de eventos e configurar o tratamento personalizado de erros.

Observação

Guia oficial de origem de eventos de parceiros da AWS

Este guia é baseado em Receber eventos da Amazon de um parceiro SaaS documentação.

Observação

A entrada do AWS para um evento de trigger do EventBridge deve ser menor que 256 KB.

Saiba como reduzir o tamanho da entrada PutEvents na seção Otimização de desempenho .

1

Para enviar eventos de trigger para o AWS Eventbridge, você precisa do AWS account ID da conta que deve receber os eventos. Abra o Console do Amazon EventBridge e clique Partner event sources em no menu de navegação. Atlas Search a origem do evento de parceiro MongoDB e clique em Set up.

Na página de origem do evento de parceiro do MongoDB, clique em Copy para copiar seu ID de conta AWS para a área de transferência.

2

Depois de ter o AWS account ID, você pode configurar um trigger para enviar eventos para o EventBridge.

Na UI do App Services, crie e configure um novo trigger de banco de dados, trigger de autenticação ou scheduled trigger e selecione o tipo de evento EventBridge.

Cole o AWS Account ID que você copiou do EventBridge e selecione um AWS Region para o qual enviar os eventos trigger.

Opcionalmente, você pode configurar uma função para lidar com erros de trigger. O tratamento de erros personalizado só é válido para trigger de banco de dados. Para obter mais detalhes, consulte a seção Tratamento de erros personalizado nesta página.

As caixas de entrada EventBridge na configuração do trigger.

Por padrão, triggers convertem os tipos BSON em objetos de evento em tipos JSON padrão. Para preservar informações sobre o tipo BSON, você pode serializar objetos de evento no formato JSON estendido . O JSON estendido preserva informações de tipo às custas de legibilidade e interoperabilidade.

Para habilitar o JSON estendido, clique no botão Enable Extended JSON na seção Advanced (Optional).

Crie um arquivo de configuração de gatilho no diretório /triggers . Omita o campo function_name e defina um processador de eventos AWS_EVENTBRIDGE .

Defina o campo account_id como o AWS Account ID que você copiou do EventBridge e defina o campo region como uma região da AWS.

Por padrão, triggers convertem os tipos BSON em objetos de evento em tipos JSON padrão. Para preservar informações sobre o tipo BSON, você pode serializar objetos de evento no formato JSON estendido . O JSON estendido preserva informações de tipo às custas de legibilidade e interoperabilidade.

Para habilitar o JSON estendido, configure o campo extended_json_enabled para true.

Opcionalmente, você pode configurar uma função para lidar com erros de trigger. O tratamento de erros personalizado só é válido para trigger de banco de dados. Para obter mais detalhes, consulte a seção Tratamento de erros personalizado nesta página.

O arquivo de configuração do trigger deve ser semelhante ao seguinte:

{
"name": "...",
"type": "...",
"event_processors": {
"AWS_EVENTBRIDGE": {
"config": {
"account_id": "<AWS Account ID>",
"region": "<AWS Region>",
"extended_json_enabled": <boolean>
}
}
}
}

Observação

Regiões AWS suportadas

Para obter uma lista completa das regiões da AWS compatíveis, consulte Recebimento de eventos de um parceiro Saas da Amazon guia.

3

Volte ao console do EventBridge e selecione Fontes de eventos de parceiros no painel de navegação. Na tabela Partner event sources, localize e selecione a fonte de acionamento Pending e, em seguida, clique em Associate with event bus.

Na tela Associate with event bus, defina quaisquer permissões de acesso necessárias para outras contas e organizações e clique em Associate.

Depois de confirmado, o status da origem do evento de gatilho muda de Pending para Active e o nome do barramento do evento é atualizado para corresponder ao nome da origem do evento. Agora você pode começar a criar regras que acionam eventos a partir dessa origem de evento de parceiro. Para obter mais informações,consulte Criação de uma regra que é acionada em um evento de parceiro SaaS .

Observação

Somente Database Tools suportam manipuladores de erros personalizados

Atualmente, apenas Database Tools oferecem suporte ao tratamento personalizado de erros. Os trigger de autenticação e os trigger agendado não permitem o tratamento de erros personalizado no momento.

Você pode criar um manipulador de erros para ser executado em uma falha de trigger, quando a nova tentativa não for bem-sucedida. O tratamento personalizado de erros permite que você determine se um erro do Amazon Web Services Eventbridge é crítico o suficiente para interromper o trigger ou se é aceitável ignorar o erro e continuar processando outros evento. Para obter mais informações sobre Database Tools, consulte Atlas Triggers.

Você pode criar a nova função diretamente na página Crie um trigger, conforme abaixo, ou na aba Funções. Para obter mais informações sobre como definir funções no App Services, consulte Defina uma função.

A configuração personalizada de tratamento de erros do EventBridge na interface do usuário.
1

Na seção Configure Error Function, selecione + New Function.

Você também pode selecionar uma função existente, se já estiver definida, no menu suspenso.

2

Insira um nome de identificação exclusivo para a função no campo Name. Esse nome deve ser distinto de todas as outras funções do aplicativo.

3

Na seção Function, escreva o código JavaScript diretamente no editor de funções. O editor de funções contém uma função padrão que você pode editar conforme o necessário. Para obter mais informações sobre a criação de funções, consulte a documentação Funções.

4

Na aba Testing Console abaixo do editor de funções, você pode testar a função passando valores de exemplo para os parâmetros error e changeEvent , conforme mostrado nos comentários do console de teste.

Para obter mais informações sobre esses parâmetros, consulte a seção Parâmetros do manipulador de erros nesta página.

Clique em Run para executar o teste.

5

Quando estiver satisfeito com o manipulador de erros personalizado, clique em Save.

Para atualizar a configuração do trigger com um manipulador de erro, siga estas etapas para Atualizar um aplicativo. Ao atualizar seus arquivos de configuração na etapa 3, faça o seguinte:

1

Siga as etapas em Definir uma função para escrever o código-fonte e o arquivo de configuração do manipulador de erros.

Para o código-fonte do manipulador de erros, consulte o seguinte manipulador de erros de modelo:

<functionName>.js
exports = async function(error, changeEvent) {
// This sample function will log additional details if the error is not
// a DOCUMENT_TOO_LARGE error
if (error.code === 'DOCUMENT_TOO_LARGE') {
console.log('Document too large error');
// Comment out the line below in order to skip this event and not suspend the Trigger
throw new Error(`Encountered error: ${error.code}`);
}
console.log('Error sending event to EventBridge');
console.log(`DB: ${changeEvent.ns.db}`);
console.log(`Collection: ${changeEvent.ns.coll}`);
console.log(`Operation type: ${changeEvent.operationType}`);
// Throw an error in your function to suspend the trigger and stop processing additional events
throw new Error(`Encountered error: ${error.message}`);
};
2

Adicione um atributo error_handler ao seu arquivo de configuração de trigger na pasta Triggers . O arquivo de configuração do trigger deve ser semelhante ao seguinte:

<triggerName>.json
{
"name": "...",
"type": "DATABASE",
"event_processors": {
"AWS_EVENTBRIDGE": {
"config": {
"account_id": "<AWS Account ID>",
"region": "<AWS Region>",
"extended_json_enabled": <boolean>
}
}
},
"error_handler": {
"config": {
"enabled": <boolean>,
"function_name": "<Error Handler Function Name>"
}
}
}

Para obter mais informações sobre arquivos de configuração do trigger, consulte Arquivos de configuração do trigger.

1

Chame o endpoint de autenticação do usuário administrador com seu par de chaves da API do MongoDB Atlas:

curl -X POST \
https://services.cloud.mongodb.com/api/admin/v3.0/auth/providers/mongodb-cloud/login \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-d '{
"username": "<Public API Key>",
"apiKey": "<Private API Key>"
}'

Se a autenticação for bem-sucedida, o corpo da resposta conterá um objeto JSON com um valor access_token :

{
"access_token": "<access_token>",
"refresh_token": "<refresh_token>",
"user_id": "<user_id>",
"device_id": "<device_id>"
}

O access_token concede acesso à App Services Admin API. Você deve incluí-lo como um token de portador no cabeçalho Authorization para todas as solicitações da App Services Admin API.

Dica

Veja também:

2

Um rascunho representa um grupo de alterações para aplicativos que você pode distribuir ou descartar como uma única unidade. Se você não criar um rascunho, as atualizações serão implementadas automaticamente de forma individual.

Para criar um rascunho, envie uma solicitação POST sem corpo para o endpoint Criar um rascunho de sistema:

curl -X POST 'https://services.cloud.mongodb.com/api/admin/v3.0/groups/{groupId}/apps/{appId}/drafts' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'
3

Crie a função para lidar com erros de um trigger do AWS EventBridge com falha por meio de uma solicitação POST para o endpoint Criar uma nova função .

curl -X POST \
https://services.cloud.mongodb.com/api/admin/v3.0/groups/{groupId}/apps/{appId}/functions \
-H 'Authorization: Bearer <access_token>' \
-d '{
"name": "string",
"private": true,
"source": "string",
"run_as_system": true
}'
4

Crie o AWS EventBridge Trigger com o tratamento de erros habilitado por meio de uma solicitação POST para o endpoint Criar um Trigger .

curl -X POST \
https://services.cloud.mongodb.com/api/admin/v3.0/groups/{groupId}/apps/{appId}/triggers \
-H 'Authorization: Bearer <access_token>' \
-d '{
"name": "string",
"type": "DATABASE",
"config": {
"service_id": "string",
"database": "string",
"collection": "string",
"operation_types": {
"string"
},
"match": ,
"full_document": false,
"full_document_before_change": false,
"unordered": true
},
"event_processors": {
"AWS_EVENTBRIDGE": {
"account_id": "string",
"region": "string",
"extended_json_enabled": false
},
},
"error_handler": {
"enabled": true,
"function_id": "string"
}
}'
5

Se você criou um rascunho, poderá implantar todas as alterações no rascunho enviando uma solicitação de POST sem corpo para o endpoint Implantar um rascunho de implantação . Se você não criou um rascunho como uma primeira etapa, a função individual e as solicitações de gatilho são implantadas automaticamente.

curl -X POST \
'https://services.cloud.mongodb.com/api/admin/v3.0/groups/{groupId}/apps/{appId}/drafts/{draftId}/deployment' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <access_token>' \

O manipulador de erros padrão tem dois parâmetros: error e changeEvent.

Tem os dois atributos a seguir:

  • code: o código da solicitação de colocação do EventBridge com erro. Para obter uma lista de códigos de erro usados pelo manipulador de erros, consulte a seção abaixo.

  • message: a mensagem de erro não filtrada de uma solicitação de colocação do EventBridge com erro.

A alteração solicitada em seus dados feita pelo EventBridge. Para obter mais informações sobre os tipos de eventos de alteração e suas configurações, consulte Alterar tipos de eventos.

Se um erro foi recebido do EventBridge, o processador de eventos analisará o erro como DOCUMENT_TOO_LARGE ou OTHER. Esse erro analisado é passado para a função do manipulador de erros por meio do parâmetro error .

Se a entrada de colocação de um trigger evento do EventBridge for maior que 256 KB, o EventBridge gerará um erro. O erro conterá:

Para obter mais informações sobre como reduzir o tamanho da entrada de valor, consulte a seção Otimização de desempenho abaixo.

O bucket padrão para todos os outros erros.

Dica

Otimizar o tratamento de erros para erros com outro código

Você pode criar casos especiais de tratamento de erros para as mensagens de erro mais comuns, a fim de otimizar o tratamento de erros para erros com um código OTHER . Para determinar quais erros precisam de casos especiais, recomendamos acompanhar as mensagens de erro mais comuns que você recebe em error.message.

Você pode visualizar os registros do manipulador de erros do trigger para seu manipulador de erros do trigger do EventBridge nos registros do aplicativo.

  1. Clique em Logs na navegação à esquerda da IU do Atlas App Services.

  2. Clique no menu suspenso Filter by Type e selecione Triggers Error Handlers para visualizar todos os logs do manipulador de erros do aplicativo.

Passe o valor trigger_error_handler para o sinalizador --type para visualizar todos os registros do manipulador de erros do aplicativo.

appservices logs list --type=trigger_error_handler

Recupere registros do tipo TRIGGER_ERROR_HANDLER por meio de uma solicitação GET para o endpoint Retreive App Services Logs :

curl -X GET 'https://services.cloud.mongodb.com/api/admin/v3.0/groups/{groupId}/apps/{appId}/logs' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'
-d '{
"type": "TRIGGER_ERROR_HANDLER"
}'

Para saber mais sobre como visualizar registros de aplicativos, consulte Exibir registros de aplicativos.

O objeto a seguir configura um trigger para enviar eventos para o AWS Eventbridge e lidar com erros:

"event_processors": {
"AWS_EVENTBRIDGE": {
"config": {
"account_id": "012345678901",
"region": "us-east-1"
}
}
},
"error_handler": {
"config": {
"enabled": true,
"function_name": "myErrorHandler.js"
}
}

A entrada do AWS para um evento de trigger do EventBridge deve ser menor que 256 KB.

Para obter mais informações, consulte a Documentação AWS para calcular o tamanho da entrada do evento Amazon PutEvents.

Ao usar gatilhos de banco de dados, a expressão do projeto pode ser útil para reduzir o tamanho do documento antes de enviar mensagens para o EventBridge. Essa expressão permite incluir apenas os campos especificados, reduzindo o tamanho do documento.

Saiba mais na documentação sobre a expressão do projeto no gatilho de banco de dados.

Voltar

Desabilitar um gatilho

Próximo

Desenvolva e implemente aplicativos