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
Visão geral
O MongoDB oferece uma fonte de evento de parceiro do AWS Eventbridge que permite enviar eventos do Atlas Triggers para um barramento de evento 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.
Procedimento
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.
Configurar a origem do evento do parceiro MongoDB
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.
Configurar o gatilho
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.
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 trigger no diretório /triggers
. Otimize o campo function_name
e defina um processador de evento 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, defina o campo extended_json_enabled
como 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 se assemelhar 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 o guia de Recebimento de eventos de um parceiro Saas da Amazon.
Associar a origem de eventos de gatilho a um barramento de eventos
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 .
Tratamento personalizado de erros
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.
Crie um novo manipulador de erros personalizado
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.
Escrever o código da função
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.
Testar a função
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.
Para atualizar a configuração do trigger com um manipulador de erros, siga estas etapas para atualizar um aplicativo. Ao atualizar seus arquivos de configuração na Etapa 3, faça o seguinte:
Grave o manipulador de erros
Siga as etapas em Definir uma função para escrever o código-fonte do manipulador de erros e o arquivo de configuração.
Para obter o código-fonte do manipulador de erros, consulte o seguinte modelo de manipulador de erros:
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}`); };
Adicione um manipulador de erro à configuração do Trigger
Adicione um atributo error_handler
ao seu arquivo de configuração do trigger na pasta Triggers
. O arquivo de configuração do trigger deve se assemelhar ao seguinte:
{ "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 de trigger, consulte Arquivos de configuração de trigger
Autenticar um usuário do MongoDB Atlas
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 do portador no cabeçalho Authorization
para todas as solicitações de API Admin.
(Opcional) Criar um esquema de implantação
Um rascunho representa um grupo de alterações para aplicação 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 Create a Deployment Draft (criar um rascunho de implantação):
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>'
Crie a função do manipulador de erros
Crie a função para lidar com erros para um trigger do AWS EventBridge com falha por meio de uma solicitação POST
para o endpoint Create a new Function (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 }'
Crie o trigger do AWS EventBridge
Crie o trigger do AWS EventBridge com o tratamento de erros habilitado por meio de uma solicitação POST
para o endpoint Create a Trigger (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" } }'
Implantar o esquema
Se você criou um rascunho, poderá implantar todas as alterações no rascunho enviando uma solicitação POST
sem corpo para o endpoint Implantar um rascunho de implantação . Se você não criou um rascunho como primeira etapa, a função individual e as solicitações de trigger foram 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>' \
Parâmetros do manipulador de erros
O manipulador de erros padrão tem dois parâmetros: error
e changeEvent
.
error
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.
changeEvent
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.
Códigos de erro
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
.
DOCUMENT_TOO_LARGE
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á:
código de status: 400 e
total size of the entries in the request is over the limit
.código de status: 413, o que indica uma carga útil muito grande.
Para obter mais informações sobre como reduzir o tamanho da entrada de venda, consulte a seção Otimização de desempenho abaixo.
OTHER
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
.
Registros do manipulador de erros
Você pode visualizar os registros do manipulador de erros do trigger para seu manipulador de erros do trigger do EventBridge nos registros do aplicativo.
Clique em
Logs
na navegação à esquerda da IU do Atlas App Services.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 logs do manipulador de erros do aplicativo.
appservices logs list --type=trigger_error_handler
Recupere logs do tipo TRIGGER_ERROR_HANDLER
por meio de uma solicitação GET
para o ponto de extremidade 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.
Exemplo de evento
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" } }
Otimização de desempenho
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.