Tutorial: uso do AWS Lambda com o Amazon DocumentDB Streams
Neste tutorial, você criará uma função do Lambda que consome eventos de um stream de alterações do Amazon DocumentDB (compativel com MongoDB). Para concluir este tutorial, você passará pelos seguintes estágios:
-
Configure seu cluster Amazon DocumentDB, conecte-se a ele e ative streams de alterações nele.
-
Crie a função do Lambda e configure seu cluster do Amazon DocumentDB como uma origem de eventos para a sua função.
-
Teste a configuração inserindo itens no banco de dados Amazon DocumentDB.
Criar o cluster do Amazon DocumentDB
-
Abra o console do Amazon DocumentDB
. Em Clusters, escolha Criar. -
Crie um cluster com a seguinte configuração:
-
Em Tipo de cluster, escolha Cluster baseado em instância. Esta é a opção padrão.
-
Em Configuração do cluster, confira se a opção Engine versão 5.0.0 está selecionada. Esta é a opção padrão.
-
Em Configuração de instância:
-
Em Classe de instância de banco de dados, selecione Classes otimizadas para memória. Esta é a opção padrão.
-
Em Número de instâncias de réplicas regulares, escolha 1.
-
Em Classe de instância, use a seleção padrão.
-
-
Em Autenticação, insira um nome de usuário para o usuário principal e escolha Autogerenciado. Insira uma senha e confirme-a.
-
Mantenha todas as outras configurações como o padrão.
-
-
Selecione Criar cluster.
Criar o segredo no Secrets Manager
Enquanto o Amazon DocumentDB estiver criando o cluster, crie um segredo do AWS Secrets Manager para armazenar suas credenciais de banco de dados. Você fornecerá esse segredo ao criar o mapeamento da origem do evento do Lambda em uma etapa posterior.
Para criar o segredo no Secrets Manager
-
Abra o console do Secrets Manager
e escolha Armazenar um novo segredo. -
Em Escolha o tipo de segredo, selecione as seguintes opções:
-
Em Detalhes básicos:
-
Tipo de segredo: credenciais para o banco de dados do Amazon DocumentDB
-
Em Credenciais, insira o nome de usuário e a senha que você usou para acessar o cluster do Amazon DocumentDB.
-
Banco de dados: escolha seu cluster do Amazon DocumentDB.
-
Escolha Próximo.
-
-
-
Em Configurar segredo, escolha as seguintes opções:
-
Nome de segredo:
DocumentDBSecret
-
Escolha Próximo.
-
-
Escolha Próximo.
-
Escolha Armazenar.
-
Atualize o console para verificar se você armazenou o segredo
DocumentDBSecret
com êxito.
Anote o ARN do segredo. Você precisará dele em uma etapa posterior.
Conectar-se ao cluster
Conectar-se ao cluster do Amazon DocumentDB usando o AWS CloudShell
-
No console de gerenciamento do Amazon DocumentDB, em Clusters, localize o cluster que você criou. Escolha o cluster clicando na caixa de seleção ao lado dele.
-
Escolha Conectar-se ao cluster. A tela Executar comando do CloudShell é exibida.
-
No campo Nome do novo ambiente, insira um nome exclusivo, como "teste" e escolha Criar e executar.
-
Insira sua senha quando for solicitado. Quando o prompt se torna
rs0 [direct: primary] <env-name>>
, sua conexão com o cluster do Amazon DocumentDB foi estabelecida com sucesso.
Ativar os streams de alteração
Neste tutorial, você acompanhará as alterações na coleção de products
do banco de dados docdbdemo
em seu cluster do Amazon DocumentDB. Você faz isso com a ativação de streams de alterações.
Para criar um novo banco de dados em seu cluster
-
Execute o seguinte comando para criar um novo banco de dados denominado
docdbdemo
:use docdbdemo
-
Na janela do terminal, use o seguinte comando para inserir um registro no
docdbdemo
:db.products.insertOne({"hello":"world"})
Você deve ver uma saída como esta:
{ acknowledged: true, insertedId: ObjectId('67f85066ca526410fd531d59') }
-
Em seguida, ative os streams de alterações na coleção de
products
do banco de dadosdocdbdemo
usando o seguinte comando:db.adminCommand({modifyChangeStreams: 1, database: "docdbdemo", collection: "products", enable: true});
Você deve ver uma saída semelhante a:
{ "ok" : 1, "operationTime" : Timestamp(1680126165, 1) }
Criar endpoints da VPC de interface
Em seguida, crie endpoints da VPC de interface para garantir que o Lambda e o Secrets Manager (usados posteriormente para armazenar nossas credenciais de acesso ao cluster) possam se conectar à sua VPC padrão.
Para criar endpoints da VPC de interface
-
Abra o console da VPC
. No menu à esquerda, em Nuvem privada virtual, escolha Endpoints. -
Escolha Criar endpoint. Crie um endpoint com a seguinte configuração:
-
Em Nomear tag, insira
lambda-default-vpc
. -
Em Categoria do serviço, escolha serviços da AWS.
-
Em Serviços, insira
lambda
na caixa de pesquisa. Escolha o serviço com formatocom.amazonaws.<region>.lambda
. -
Em VPC, escolha a VPC em que está o cluster do Amazon DocumentDB. Normalmente, essa é a VPC padrão.
-
Em sub-redes, marque as caixas ao lado de cada zona de disponibilidade. Escolha O ID correto da sub-rede de cada zona de disponibilidade.
-
Em Tipo de endereço IP, selecione IPv4.
-
Em Grupos de segurança, escolha o grupo de segurança que o cluster do Amazon DocumentDB usa. Normalmente, esse é o grupo de segurança
default
. -
Mantenha todas as outras configurações como o padrão.
-
Escolha Criar endpoint.
-
-
Novamente, escolha Criar endpoint. Crie um endpoint com a seguinte configuração:
-
Em Nomear tag, insira
secretsmanager-default-vpc
. -
Em Categoria do serviço, escolha serviços da AWS.
-
Em Serviços, insira
secretsmanager
na caixa de pesquisa. Escolha o serviço com formatocom.amazonaws.<region>.secretsmanager
. -
Em VPC, escolha a VPC em que está o cluster do Amazon DocumentDB. Normalmente, essa é a VPC padrão.
-
Em sub-redes, marque as caixas ao lado de cada zona de disponibilidade. Escolha O ID correto da sub-rede de cada zona de disponibilidade.
-
Em Tipo de endereço IP, selecione IPv4.
-
Em Grupos de segurança, escolha o grupo de segurança que o cluster do Amazon DocumentDB usa. Normalmente, esse é o grupo de segurança
default
. -
Mantenha todas as outras configurações como o padrão.
-
Escolha Criar endpoint.
-
Isso conclui a parte de configuração de cluster deste tutorial.
Criar a função de execução
No próximo conjunto de etapas, você criará sua função do Lambda. Primeiro, é necessário criar o perfil de execução que concede à sua função permissão para acessar o seu cluster. Você criará uma política do IAM primeiro e, em seguida, anexará essa política a um perfil do IAM.
Para criar uma política do IAM
-
Abra a página Políticas
no console do IAM e escolha Criar política. -
Selecione a guia JSON. Na política a seguir, substitua o ARN do recurso Secrets Manager na linha final da declaração pelo ARN do seu segredo de antes, e copie a política no editor.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "LambdaESMNetworkingAccess", "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface", "ec2:DescribeNetworkInterfaces", "ec2:DescribeVpcs", "ec2:DeleteNetworkInterface", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups", "kms:Decrypt" ], "Resource": "*" }, { "Sid": "LambdaDocDBESMAccess", "Effect": "Allow", "Action": [ "rds:DescribeDBClusters", "rds:DescribeDBClusterParameters", "rds:DescribeDBSubnetGroups" ], "Resource": "*" }, { "Sid": "LambdaDocDBESMGetSecretValueAccess", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": "
arn:aws:secretsmanager:us-east-1:123456789012:secret:DocumentDBSecret
" } ] } -
Escolha Próximo: Tags, e, em seguida, escolha Próximo: Revisar.
-
Em Nome, insira
AWSDocumentDBLambdaPolicy
. -
Escolha Criar política.
Para criar perfil do IAM
-
Abra a página Perfis
no console do IAM e escolha Criar perfil. -
Em Selecionar entidade confiável, escolha as seguintes opções:
-
Tipo de entidade confiável: serviço da AWS
-
Serviço ou caso de uso: Lambda
-
Escolha Próximo.
-
-
Em Adicionar permissões, escolha a política
AWSDocumentDBLambdaPolicy
que você acabou de criar, bem comoAWSLambdaBasicExecutionRole
para conceder à sua função permissões para gravar no Amazon CloudWatch Logs. -
Escolha Próximo.
-
Em Nome do perfil, insira
AWSDocumentDBLambdaExecutionRole
. -
Escolha Create role (Criar função).
Criar a função do Lambda
Este tutorial usa o runtime do Python 3.13, mas também fornecemos exemplos de arquivos de código para outros runtimes. Você pode selecionar a guia na caixa a seguir para ver o código do runtime do seu interesse.
O exemplo de código a seguir recebe uma entrada de evento do Amazon DocumentDB e processa a mensagem ali contida.
Para criar a função do Lambda
-
Abra a página Funções
do console do Lambda. -
Escolha a opção Criar função.
-
Escolher Criar do zero
-
Em Basic information (Informações básicas), faça o seguinte:
-
Em Nome da função, inserir
ProcessDocumentDBRecords
-
Em Runtime, selecione Python 3.13.
-
Em Architecture (Arquitetura), escolha x86_64.
-
-
Na guia Alterar função de execução padrão, faça o seguinte:
-
Expanda a guia e escolha Usar uma função existente.
-
Selecione a
AWSDocumentDBLambdaExecutionRole
que você criou anteriormente.
-
-
Escolha Criar função.
Para implantar o código da função
-
Escolha a guia Python na caixa a seguir e copie o código.
-
No painel de Origem do código no console do Lambda, cole o código no editor de código, substituindo o código criado pelo Lambda.
-
Na seção DEPLOY, escolha Implantar para atualizar o código da função:
Crie o mapeamento da origem do evento do Lambda
Crie o mapeamento da origem do evento que associa o seu fluxo de alterações do Amazon DocumentDB à sua função do Lambda. Depois que você criar esse mapeamento da origem do evento, o AWS Lambda começará imediatamente a sondar o stream.
Para criar o mapeamento da origem do evento
-
Abra a página Funções
no console do Lambda. -
Escolha a função
ProcessDocumentDBRecords
criada anteriormente. -
Escolha a guia Configuração e depois escolha Acionadores no menu à esquerda.
-
Escolha Add trigger.
-
Em Configuração do acionador, para a origem, selecione Amazon DocumentDB.
-
Crie o mapeamento da origem do evento com a seguinte configuração:
-
Cluster do Amazon DocumentDB: escolha o cluster que você criou anteriormente.
-
Nome do banco de dados: docdbdemo
-
Nome da coleção: produtos
-
Tamanho do lote: 1
-
Posição inicial: a última
-
Autenticação: BASIC_AUTH
-
Chave do Secrets Manager: escolha o segredo do cluster do Amazon DocumentDB. O nome da chave será algo como
rds!cluster-12345678-a6f0-52c0-b290-db4aga89274f
. -
Janela de lote: 1
-
Configuração do documento total: UpdateLookup
-
-
Escolha Adicionar. A criação do mapeamento da origem do evento pode levar alguns minutos.
Testar a função
Espere o mapeamento da origem do evento atingir o estado de Habilitado. Isso pode demorar vários minutos. Depois, teste a configuração de ponta a ponta inserindo, atualizando e excluindo registros do banco de dados. Antes de começar
-
Reconecte-se ao cluster do Amazon DocumentDB no ambiente do CloudShell.
-
Execute o comando a seguir para garantir que esteja usando o banco de dados
docdbdemo
:use docdbdemo
Insira um registro na coleção products
do banco de dados docdbdemo
:
db.products.insertOne({"name":"Pencil", "price": 1.00})
Veja se a função processou o evento com êxito verificando o CloudWatch Logs. Você deve ver uma entrada de log como esta:

Atualize o registro que você acabou de inserir com o seguinte comando:
db.products.updateOne( { "name": "Pencil" }, { $set: { "price": 0.50 }} )
Veja se a função processou o evento com êxito verificando o CloudWatch Logs. Você deve ver uma entrada de log como esta:

Exclua o registro que você acabou de atualizar com o seguinte comando:
db.products.deleteOne( { "name": "Pencil" } )
Veja se a função processou o evento com êxito verificando o CloudWatch Logs. Você deve ver uma entrada de log como esta:

Solução de problemas
Se você não vir nenhum evento de banco de dados nos logs do CloudWatch da sua função, verifique o seguinte:
-
Confira se o mapeamento da origem do evento do Lambda (também conhecido como acionador) está no estado Habilitado. A criação de mapeamentos de origens de eventos pode levar vários minutos.
-
Se o mapeamento da origem do evento estiver Habilitado, mas os eventos do banco de dados ainda não estiverem visíveis no CloudWatch:
-
Confira se o Nome do banco de dados no mapeamento da origem do evento está definido como
docdbdemo
. -
Verifique se o campo Último resultado de processamento do mapeamento da origem do evento mostra a seguinte mensagem "PROBLEMA: erro de conexão. A VPC deve conseguir se conectar ao Lambda e ao STS, e também ao Secrets Manager se for exigida autenticação". Se você vir esse erro, confira se criou os endpoints de interface da VPC do Lambda e do Secrets Manager, e se os endpoints usam a mesma VPC e as mesmas sub-redes que o cluster Amazon DocumentDB.
-
Limpe os recursos
Agora você pode excluir os recursos criados para este tutorial, a menos que queira mantê-los. Excluindo os recursos da AWS que você não está mais usando, você evita cobranças desnecessárias em sua Conta da AWS.
Como excluir a função do Lambda
-
Abra a página Functions
(Funções) no console do Lambda. -
Selecione a função que você criou.
-
Selecione Ações, Excluir.
-
Digite
confirm
no campo de entrada de texto e escolha Delete (Excluir).
Para excluir a função de execução
-
Abra a página Roles
(Funções) no console do IAM. -
Selecione a função de execução que você criou.
-
Escolha Excluir.
-
Insira o nome do perfil no campo de entrada de texto e escolha Delete (Excluir).
Para excluir os endpoints da VPC
-
Abra o console da VPC
. No menu à esquerda, em Nuvem privada virtual, escolha Endpoints. -
Selecione os endpoints que você criou.
-
Escolha Actions (Ações), Delete VPC endpoints (Excluir endpoints da VPC).
-
Digite
delete
no campo de entrada de texto. -
Escolha Excluir.
Para excluir o cluster do Amazon DocumentDB
-
Abra o console do Amazon DocumentDB
. -
Escolha o cluster do Amazon DocumentDB que você criou para este tutorial e desative a proteção contra exclusão.
-
Na página principal de Clusters, escolha seu cluster do Amazon DocumentDB novamente.
-
Selecione Ações, Excluir.
-
Em Criar snapshot final do cluster, selecione Não.
-
Digite
delete
no campo de entrada de texto. -
Escolha Excluir.
Para excluir o segredo no Secrets Manager
-
Abra o console do Secrets Manager
. -
Escolha o segredo que você criou para este tutorial.
-
Escolha Ações, Excluir segredo.
-
Escolha Schedule deletion.