Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.
Menu Docs

Tutorial: Chamar uma API de terceiros a partir de um trigger

Neste tutorial, você cria um gatilho de banco de dados (trigger). O trigger chama uma API de terceiros quando um documento é inserido em uma coleção. A função do trigger adiciona o AWS Software Development Kit (SDK) oficial como uma dependência externa. Em seguida, a função usa o SDK para gravar o documento inserido em um bucket S3 como um objeto JSON estendido.

O exemplo do AWS S3 neste tutorial ilustra um padrão que se aplica a qualquer serviço de terceiros que tenha uma biblioteca Node.js :

  • Adicione o pacote npm do serviço como dependência externa.

  • Armazene quaisquer credenciais necessárias como segredos e referencie-as a partir de valores em sua função.

  • Importe o pacote com require() para dentro da sua função e chame-o usando as credenciais que armazenou.

Para concluir este tutorial, você deve ter:

Crie os seguintes Valores e Segredos para armazenar suas credenciais da AWS:

  • AwsAccessKeyId: Valor que contém seu ID de chave de acesso AWS.

  • AwsSecretAccessKeySecret: Segredo que contém sua chave de acesso secreto AWS.

  • AwsSecretAccessKey: valor vinculado ao segredo. Isso permite que você acesse a chave de acesso secreta em sua função, mantendo-a armazenada com segurança como um segredo.

1

No Atlas, acesse a página Triggers.

  1. Se ainda não tiver sido exibido, selecione a organização que contém seu projeto no menu Organizations na barra de navegação.

  2. Se ainda não estiver exibido, selecione seu projeto no menu Projects na barra de navegação.

  3. Na barra lateral, clique em Triggers sob o título Streaming Data.

A página Acionadores é exibida.

  1. Clique no botão View All Apps.

  2. Clique na aplicação em que você deseja criar o Trigger.

  3. Na barra lateral, clique em Values sob o título Build.

2
  1. Clique em Create a Value.

  2. Insira AwsAccessKeyId como Value Name.

  3. Selecione o tipo Value.

  4. Selecione a opção Custom Content e insira seu ID de chave de acesso AWS.

    Observação

    Você deve inserir o ID da chave de acesso como um valor de string com aspas ("<accessKeyId>").

  5. Clique em Save Draft.

3

Observação

Os valores secretos não podem ser acessados diretamente, então você deve criar um segundo valor que se vincule ao segredo.

  1. Clique em Create a Value.

  2. Insira AwsSecretAccessKey como Value Name.

  3. Selecione o tipo Value.

  4. Selecione a opção Link to Secret.

  5. Insira AwsSecretAccessKeySecret e clique em Create "AwsSecretAccessKeySecret" para nomear o segredo.

    Cole sua chave de acesso secreto AWS no campo que aparece abaixo do nome secreto.

  6. Clique em Save Draft para criar o segredo e o valor.

Crie um gatilho de banco de dados que chame uma nova função quando um documento for inserido. Você adiciona a dependência aws-sdk e define o código de função no mesmo formulário.

1

No Atlas, acesse a página Triggers.

  1. Se ainda não tiver sido exibido, selecione a organização que contém seu projeto no menu Organizations na barra de navegação.

  2. Se ainda não estiver exibido, selecione seu projeto no menu Projects na barra de navegação.

  3. Na barra lateral, clique em Triggers sob o título Streaming Data.

A página Acionadores é exibida.

2
  1. Clique em Add Trigger para abrir a página de configuração do trigger.

  2. Selecione o tipo de trigger Database e, em seguida, configure o trigger usando os seguintes valores:

    Contexto
    Valor
    Trigger Name

    WriteDocumentToS3Trigger

    Watch Against

    Collection

    Cluster Name

    Nome do cluster de teste

    Database Name

    Nome do seu banco de dados de teste

    Collection Name

    Nome da sua collection de teste

    Operation Type

    Selecione apenas Insert.

    Event Type

    Function

  3. Na seção Function, selecione + New Function.

3
  1. Na seção Function, clique em Add Dependency.

  2. Na janela Add Dependency, insira aws-sdk como Define a Package Name e deixe Package Version em branco para usar a versão mais recente.

  3. Clique em Add para adicionar o pacote.

4

Substitua YOUR_AWS_REGION e YOUR_S3_BUCKET_NAME pela sua região da AWS e pelo nome completo do bucket do Console de gerenciamento da AWS.

1/*
2 * Write a newly-inserted document to an S3 bucket as an Extended JSON object.
3 */
4exports = async function writeDocumentToS3(changeEvent) {
5 const { fullDocument } = changeEvent;
6
7 // require calls must be in the exports function
8 const S3 = require("aws-sdk/clients/s3");
9 const s3 = new S3({
10 accessKeyId: context.values.get("AwsAccessKeyId"),
11 secretAccessKey: context.values.get("AwsSecretAccessKey"),
12 region: "YOUR_AWS_REGION",
13 });
14
15 const key = `inserted-documents/${fullDocument._id.toString()}.json`;
16
17 // https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#putObject-property
18 await s3.putObject({
19 Bucket: "YOUR_S3_BUCKET_NAME",
20 Key: key,
21 Body: EJSON.stringify(fullDocument),
22 ContentType: "application/json",
23 }).promise();
24
25 return `Wrote document ${fullDocument._id} to ${key}`;
26};

Cada vez que um documento é inserido, a função faz o seguinte:

  • Lê o documento inserido do campofullDocument do evento de alteração.

  • Cria um cliente S3 que se autentica com as credenciais da AWS armazenadas em seus Valores.

  • Grava o documento no prefixo inserted-documents/ do seu bucket como <_id>.json.

Observação

A função usa o _id do documento como parte da chave do objeto S3. Se seus documentos usarem um tipo _id diferente de ObjectId, a chave poderá não ser o que você espera.

5

Importante

Se os rascunhos de implantação estiverem habilitados para seu aplicativo, clique em Review & Deploy para implantar os Valores, Segredos, dependência, Função e Trigger. Até que você os implemente, o Trigger não será executado e a próxima etapa falhará.

Insira um documento de teste na coleção que o Trigger observa. Confirme que um objeto JSON estendido correspondente aparece no seu bucket S3 sob o prefixo inserted-documents/.

1

Para saber como, consulte Conectar-se a um cluster via mongosh.

2

O exemplo a seguir insere um documento na collection de teste. Substitua YOUR_DATABASE_NAME e YOUR_COLLECTION_NAME pelo banco de dados e pela coleção que você inseriu quando criou o Trigger.

// Replace YOUR_DATABASE_NAME and YOUR_COLLECTION_NAME with the
// database and collection that the Trigger watches.
use YOUR_DATABASE_NAME
db.YOUR_COLLECTION_NAME.insertOne({
tutorialTest: "atlas-trigger-s3",
createdAt: new Date()
})

Observe o valor insertedId da sua saída. A função usa esse valor como nome do objeto S3 .

3

No Console de gerenciamento da AWS, abra seu bucket S3 e navegue até o prefixo inserted-documents/. Um objeto chamado <insertedId>.json é exibido, onde <insertedId> é o valor insertedId da etapa anterior.

Observação

Se o objeto não aparecer, revise os registros de execução do gatilho. Para saber como, consulte Trigger logs.