Explore o novo chatbot do Developer Center! O MongoDB AI chatbot pode ser acessado na parte superior da sua navegação para responder a todas as suas perguntas sobre o MongoDB .

Junte-se a nós no Amazon Web Services re:Invent 2024! Saiba como usar o MongoDB para casos de uso de AI .
Desenvolvedor do MongoDB
Central de desenvolvedor do MongoDBchevron-right
Idiomaschevron-right
Kotlinchevron-right

Crie uma função sem servidor do AWS Lambda com Kotlin e MongoDB

22 min • Publicado em 07 de setembro 2023
Sem servidorAWSKotlin
Ícone do FacebookÍcone do Twitterícone do linkedin
Avalie esse Vídeo
star-empty
star-empty
star-empty
star-empty
star-empty
Pesquisar
00:00:00Introdução
The pReéenteR euntRódvocêceé heueuéeeuf and the tvocêtóReuaeu 'é óbjecteuve: cReateung an ACS euaeubda fvocêncteuón vocêéeung Kóteueun and MóngóDB. He expeuaeuné that the tvocêtóReuaeu ceueueu eueveRage the Kóteueun dReuve182}"> r that MóngóDB óffeRé.
00:03:45Configurando o Projeto
The pReéenteR deeuónétRateé hóc tó éet vocêp the pRóject vocêéeung EUnteeueueuJ.. He cReateé a nec pRóject, naeueé eut, and éaveé eut tó heué deéktóp. He aeuéó expeuaeuné the vocêée óf GRadeue fóR dependenceueé.
00:07:30Criando e editando arquivos
The pReéenteR éhócé hóc tó cReate a nec pRóject feueue and edeut the GRadeue feueue. He aeuéó expeuaeuné the eueupóRtance óf cReateung a 'fat jaR ' fóR ACS and hóc tó add dependenceueé tó the pRóject.
00:11:15Estabelecendo conexão com o MongoDB
The pReéenteR deeuónétRateé hóc tó eétabeueuéh a cónnecteuón tó MóngóDB and get a RefeRence tó the databaée and cóeueuecteuón. He aeuéó expeuaeuné hóc tó cReate a feueuteR fóR the feund ópeRateuón.
00:14:59Fazendo upload para AWS Lambda
The pReéenteR gvocêeudeé veueceRé ón hóc tó vocêpeuóad the pRóject tó ACS euaeubda. He e xplains how to ad the ja r file, edi t h e handle r informaçãon, and ad environmen t variables.
00:18:44Testando a função
The pReéenteR deeuónétRateé hóc tó teét the fvocêncteuón ón ACS euaeubda. He cReateé a baéeuc teét and Rvocêné eut, éhóceung the Reévocêeuté. He aeuéó expeuaeuné hóc tó euódeufsim the teét tó éeaRch fóR a épeceufeuc teuteue.
00:22:25Conclusão
The pReéenteR cónceuvocêdeé the tvocêtóReuaeu bsim évocêeueuaReuzeung the étepé taken and encóvocêRageung veueceRé tó eueuke the veudeó, évocêbécReube tó the channeeu, and eueave cóeueuenté.
O foco principal do vídeo é orientar os visualizadores sobre como criar uma função do AWS Lambda usando Kotlin e MongoDB, e como carregar e testar a função no AWS Lambda.
} Pontos-chave
  • O tutorial aproveita o driver Kotlin que o MongoDB oferece.
  • O apresentador usa o IntelliJ para o tutorial, mas qualquer IDE pode ser usado.
  • O projeto envolve a criação de uma função sem servidor que criará um arquivo java para enviar para o AWS e usar seu tempo de execução Java.
  • O apresentador demonstra como estabelecer uma conexão com o MongoDB e obter uma referência ao banco de dados e à collection.
  • O tutorial também aborda como carregar o projeto no AWS Lambda e testar a função.
Todos os vídeos do MongoDB

Transcrição completa do vídeo
olá a todos, meu nome é Snape, do MongoDB, e neste tutorial, vamos ver como criar uma função Amazon Web Services Lambda para uma função sem servidor usando Kotlin e MongoDB, então esse tutorial específico vai aproveitar o relativamente novo driver Kotlin que o MongoDB oferece e vamos ver que é muito fácil criar essas funções sem servidor porque, no final, o Kotlin criará um arquivo JAR que nos permitirá fazer upload para Amazon Web Services e usar seu tempo de execução Java , mesmo que nós estivermos usando o Kotlin , ele ainda funcionará no tempo de execução Java , então na minha tela você notará que eu tenho IntelliJ é isso que usarei neste tutorial, sincera, você pode usar o que quiser realmente importa que isso seja apenas uma coisa de conveniência paramim, mas o que posso fazer é criar um novo projeto e esse novo projeto Go chamá-lo de Lambda Kotlin e estou vai salvar isso na minha área de trabalho, isso vai aproveitar o Kotlin Language Vou usar o Gradle a partir das minhas dependências, então nas minhas dependências como o MongoDB e aquele arquivo Gradle no estilo do Kotlin Kotlin , Go criá-lo como em vez de popular e eu apenas continuaria e crie esse projeto agora você notará que o projeto é criado vamos editar o arquivo Gradle também criaremos um novo arquivo de projeto nosso para armazenar todo o nosso código em que vamos focar antes de criar e atualizar as coisas primeiro e, em seguida, vamos nos preocupar em realmente usar o MongoDB ou em usar Amazon Web Services Lambda , então tudo isso chegará mais tarde, então a primeira coisa que preciso fazer é querer abra meu arquivo build.gradle.kts, vamos adicionar algumas dependências aqui para tornar nosso projeto bem-sucedido, a primeira coisa que queremos fazer é adicionar um pacote que nos permita criar um boleador aba então Amazon Web Services espera que nós carreguemos um contêiner com todas as dependências e outras coisas construídas lt nele ou em um zip com uma boia, temos que fazer uma boia porque, se estiver faltando todas as nossas dependências, provavelmente teremos erros relacionados ao driver Mong e B, às dependências do Lambda ou a qualquer outra coisa então a maneira mais fácil de fazer isso com o Kotlin é usar um pacote chamado Sombria e podemos criar o que é chamado de shadow range então para fazer isso o que podemos fazer é dizer ID e podemos dizer com dot Github dot João anelman dot shadow e vamos fornecer uma desvio e, para este tutorial específico, diremos 7.1.2 e pudermos Go em frente e salvá-lo, podemos atualizar nossa lista de dependências, se quisermos e Go em frente e obtenha essa dependência para nós. Em seguida, queremos definir nossas dependências para que nossas dependências incluam o driver para Kotlin e também a dependência para Lambda então dentro da seção de dependência o que podemos fazer logo abaixo da implementação de teste Go adicionar algumas dependências, então o que eu direi a fazer é atuar ly irá colá-los e explicar o que eles significam, então os dois primeiros estão relacionados ao Amazon Web Services Lambda e isso nos permitirá criar uma classe e ela funcionará principalmente com Amazon Web Services Lambda como é que ele espera a seguir se tivermos o pacote MongoDB BSON assim podemos trabalhar com dados BSON e, além do driver do MongoDB para Kotlin , e este será apenas um exemplo básico, não vamos fazer nada extravagância aqui, mas ele definirá o base para projetos mais complexos uh a próxima coisa que queremos fazer é definir qual é a nossa classe principal, pois nossa dependência do jergo de sombra depende da nossa classe principal e será aqui que adicionaremos todos os nossos código, então o que queremos fazer é definir o aplicativo e queremos dizer conjunto de pontos da classe principal e é aqui que definiremos onde nosso manipulador estará, então nosso manipulador de Amazon Web Services Lambda e a convenção de nomenclatura não são muito importantes desde que sejamos consistentes nt por toda parte, mas vamos dar exemplos, ele fará parte do pacote de exemplo e estará em uma classe Manipulador agora você notará que ele provavelmente está lançando algum tipo de erro aqui em vez de nossos plug-ins, provavelmente também quiser adicionar o plugin -in do aplicativo e ele deve limpar as coisas e fez isso apenas nos levou apenas um segundo para redefinir, então continuarei importando todas essas dependências do Go e, neste momento, devemos estar pronto para começar a programar se tivermos qualquer tipo de erro estranho no futuro à medida que avançamos, voltaremos a revisar esse arquivo Gradle, mas, no final das contas, realmente só quemos obter a dependência de sombra para nosso boião e queremos adicionar nosso Dependências do Lambda e do MongoDB, agora o que queremos fazer é criar nosso manipulador de classe e queremos criá-lo no pacote de exemplo, então Go para o principal nós Go para o Kotlin e nós' Vamos dizer para criar um novo pacote e esse pacote será chamado exemplo e dentro do pacote de exemplo vamos criar uma nova classe Kotlin e essa classe Kotlin vai ser chamada de Manipulador então deve se parecer com o seguinte e lembre-se de que estamos usando o Kotlin e não o Java e o e não é um rigoroso shell Go à frente e cole nas linhas de importação, isso será relevante para o MongoDB para Kotlin e será relevante para o Lambda , e tudo o que planejamos fazer estará dentro dessa classe de manipulador e vamos fazer algumas modificações então, dessa forma, está de acordo com as especificações quando se trata de Lambda , porque temos que fazer as coisas do caminho Lambda , então o que vamos fazer é, antes de mais nada, estender o manipulador para que ele diz que estamos vai estenda-o para solicitar o Manipulador e este será um mapa do tipo s o vamos ter um mapa de um valor de string e uma chave de string e, por enquanto, o que vamos fazer é dizer nulo, então essencialmente o que dissemos ao estender o manipulador de solicitações é que nós "seremos capazes de aceitar um mapa de strings e a resposta, por enquanto, será básicamente nula e isso mudará, retornaremos dados reais do MongoDB, mas, por enquanto, é mais fácil deixar para lá" nisso então evitamos qualquer tipo de erro agora o que queremos fazer dentro dessa classe Manipulador é criar uma função de substituição, então vamos dizer substituir e vamos dizer Diversão e nós vamos para dizer lidar com solicitação e vamos aceitar uma entrada de modo que esta entrada porque a definimos no Manipulador de solicitações como um mapa de string ela também precisa ser um mapa de string então vamos dizer map string nós 'vamos incluir o contexto e vamos devolver nulo porque é o que esperamos retornar a partir de agora, então vamos s ay return null agora vamos começar a nos preocupar com o lado MongoDB das coisas, então o que queremos fazer é estabelecer uma conexão com o mongodui e queremos Go em frente e obtenha uma referência ao nosso banco de dados e uma referência à nossa coleção e isso é vamos alternar entre o painel do MongoDB Atlas e eu vamos alternar entre o código, mas Go em frente e colocar o código em vigor primeiro e eu caminho para mostrar como isso parece dentro do MongoDB em si, então fora da função de solicitação de manuseio é onde queremos Definir nosso cliente MongoDB, então direi valor privado e esse será cliente, que é o nosso nome, e vamos dizer que cliente é igual a cliente é do tipo que vamos dizer Mongo client dot create e eu poderia apenas codificar uma connection string aqui não é não é aconselhável é definitivamente a melhor prática usar algum tipo de variável de ambiente ou arquivo de configuração para que não confirmemos acidentalmente esta informação para dizer Github ou em outro lugar porque suas informações de conexão MongoDB têm seu nome de usuário e senha, então é uma boa ideia I fazer isso excluído do seu código então em nosso exemplo o que vamos fazer é que vamos dizer ponto do sistema obtém EnV e vamos fornecer uma variável de ambiente para ele, então vamos dizer MongoDB Atlas URI de modo que essa é apenas o nome da nossa futura variável de ambiente MongoDB então essa variável de ambiente à qual vamos adicioná-la a função Amazon Web Services Lambda do Go Go na nuvem, portanto, nunca precisaremos nos preocupar com a codificação real disso em nosso código, portanto vamos presumir que essa conexão será válida a partir de agora dentro da solicitação de identificador é onde queremos obter uma referência ao nosso banco de dados e à nossa coleção, então direi banco de dados de valor que será do tipo banco de dados e direi cliente ponto obtenha banco de dados e para este exemplo se você já trabalhou com o MongoDB e mostrarei isso em um momento se você já trabalhou com MongoDB, há conjuntos de dados de amostra disponíveis. Usarei o conjunto de dados de amostra empflix e você pode carregá-lo diretamente no MongoDB em um momento, mas direi amostra mflix é o nome do meu banco de dados e direi valor e direi coleção e direi coleção esta será do tipo documento e será database dot get collection e para esta coleção I 'Vou dizer filmes, então o influxo de amostra é como o IMDb e só tem informações sobre filmes, então vamos extrair da coleção de filmes que inclui coisas como o título, o roteiro, coisas assim, qualquer coisa relacionada ao próprio filme agora se eu mongod isso, então esse é o painel do MongoDB sobre o qual eu estava falando, então tenho uma instância de exemplos criada se eu quisesse carregar um banco de dados de amostra, poderia dizer carregar conjunto de dados de amostra e que incluiria amostras de inflix e incluiria os filmes co coleção com a qual estou trabalhando, mas o que posso fazer é procurar coleções e ela se parece com essa amostra de filmes inflix e então temos alguns documentos de filmes e os dados para isso exemplo realmente não importa porque é um exemplo muito simplista que estamos usando quando se trata de MongoDB e Amazon Web Services Lambda , mas caso você esteja interessado agora, o que é importante para nós é se Go para a guia banco de dados o que queremos fazer é clicar em conectar podemos rolar para baixo, podemos Go para drivers e podemos escolher o driver com o qual estamos trabalhando, neste caso, Kotlin e essa seria a connection string que eu gostaria de usar agora Não vamos adicionar isso ao meu código. Não Go adicionar isso às minhas variáveis de ambiente local. Isso será usado quando formos para o painel do Amazon Web Services Lambda , mas é isso que copiaremos e o que queremos fazer é que queremos criar um nome de usuário e uma senha, então se você feche isso se você ainda não tiver um nome de usuário e senha, você pode Go as regras de acesso ao banco de dados e adicionar um novo usuário do banco de dados e, em seguida, preencher isso quando colar sua conexão URI string você também preciso definir algumas regras de acesso à rede para que assim o Lambda possa realmente alcançar o MongoDB mas isso está fora do escopo deste tutorial vamos apenas abrir o acesso a todos os endereços IP que vamos fornecer a um usuário bem genérico e deve ser o suficiente para nos fazer continuar, então voltemos ao nosso código agora podemos nos concentrar na comunicação com o MongoDB então, em teoria, temos uma conexão estabelecida então criaremos esse cliente obteremos referência ao nosso banco de dados e coleção que estamos na verdade, não estamos fazendo query no MongoDB, não estamos inserindo dados que não estamos, não estamos fazendo nada particularmente interessante para este exemplo, estamos apenas fazendo query no MongoDB e a melhor maneira de lidar com isso para este exemplo é se nós Go na solicitação de identificador sobre função de corrida, Go criar uma operação de busca para que possamos dizer que os resultados são e o tipo de resultado será uma lista e será um documento de tipo dentro dessa lista e nós diremos coleção dot find então isso é uma operação de busca vai encontrar um ou mais documentos, desde que eles existam e vamos passar um filtro em um momento, mas também vamos limitar o conjunto de resultados, então, como estamos usando a coleção de filmes, o coleção de filmes tem dezenas de milhares de documentos, não queremos retornar todos eles e, para este exemplo, não vamos trabalhar com cursores, então o que queremos fazer é querer apenas limitar esse conjunto de resultados a cinco documentos e também queremos convertê-lo em uma lista porque é isso que estamos esperando como resultado final, então vamos dizer para a lista que ainda não temos um filtro aqui, então vamos essencialmente dizer que nós vamos devolver todos os documentos desta coleção, limitando-a a cinco, mas Go em frente e imprimir BSON BSON vamos Go em frente e adicione isso a essa linha específica na linha 24. Go Go Go Na verdade, não estamos fazendo uma Pesquisa Atlas, estamos fazendo apenas um filtro, então uma correspondência com uma query de correspondência pesquisando se você quiser fazer um pipeline de agregação no MongoDB você poderia fazer a Pesquisa Atlas , que é Pesquisa de texto completo, mas está fora do escopo deste exemplo específico então o que vamos di contém uma chave chamada título lembre-se de que estamos trabalhando com um mapa e ele é do tipo string para a chave e string para o valor se incluirmos um título para que ele contenha essa chave e também diremos se a entrada não é, essencialmente, queremos ter certeza de que não é nulo ou vazio, então vamos buscar o entrada, vamos dizer título, então a chave do título existe agora, estamos apenas verificando para ver qual é esse valor, então vamos garantir que não seja nulo ou vazio e, desde que passe por esses critérios, então existe e contém dados, vamos definir o filtro para esse valor específico no título, então vamos dizer filtro igual a filtros ponto EQ vamos dizer título e vamos dizer ponto de entrada get e vamos dizer título, então o primeiro título Aqui está a chave real dentro do MongoDB então nosso campo e esse seria o nosso valor, então é assim que nosso filtro será, desde que o o campo no MongoDB o título campo corresponde a qualquer que seja esse valor, então devolva esses documentos para que eles não precisem corresponder é apenas uma coincidência que ambos correspondam neste caso específico, então se se existir um título, vamos usá-lo como nossos critérios de filtro e ainda assim vamos limitar nossos resultados ao máximo de cinco registros, talvez nunca alcance tanto depende do filme que chamamos agora ainda estamos retornando nulo aqui precisamos fazer um ajuste, então, em vez de anular, o que queremos dizer é que queremos dizer a lista e queremos dizer documento, então esse é o tipo de dados que quisermos retornar aqui, também precisaremos fazer esse ajuste na linha 17. então retornando os resultados agora, em teoria, isso deve ser suficiente para fazer o upload para Amazon Web Services Lambda ele deve funcionar e nós, mais uma vez, vamos obter essa connection string quando chegar a hora e adicioná-la ao Lambda , mas o código em si deve ser bom então o que queremos fazer é construir nosso recipiente, então Go em frente e abra qualquer menu que esteja usando essa pode ser a linha de comando e você pode estar usando o Gradle diretamente da linha de velas estou usando o IntelliJ, então o que eu ' plugin Go para meu buscador na verdade, posso encontrá-lo dentro do meu projeto, então estou em Lambda Kotlin Posso Go para construir e posso Go para Liberações e eu deve estar lá diz Lambda Kotlin e então ele tem todas as outras coisas anexadas a ele posso fazer upload desse boião como está ou posso adicioná-lo a um arquivo zip realmente depende do que você está fazendo e do que seu projeto chama para mas este é o arquivo que eu gostaria de adicionar ao Amazon Web Services agora Go Go ao meu navegador da Web, então eu estou acessando o painel do Lambda aqui e criando uma nova função esta função estou começando a escrever do zero. Talvez seja o exemplo do MongoDB e o tempo de execução não será nó, mas sim Java então, depois de escolher meu tempo de execução Java , me certifiquei de que eu preciso escolher a arquitetura que Go preciso e começar a criar a função, então dentro da página de destino da função haverá algumas etapas que queremos fazer primeiro passo o que eu preciso fazer é querer faça o upload desse arquivo termos, então, como eu disse, Go para o diretório libs e eu caminho para o diretório libs e eu direi corretamente e eu vamos salvar tudo bem, então ele está carregado, mas ainda não terminamos, então se observarmos as informações do manipulador para as configurações de tempo de execução, isso não está correto, pode ser se decidirmos fazer isso mas com base no nosso projeto que acabamos de fazer que não está correto, então vamos editá-lo para que nosso pacote seja chamado exemplo nossa classe real é chamada Manipulador e nossa função real é chamada atender solicitação então apenas certifique-se de modificar para corresponder a tudo o que você estiver configurado, então vamos clicar em Salvar, tudo bem, então pronto. A próxima coisa que queremos fazer é Go para a configuração e Go para as variáveis de ambiente é aqui que nós adicione a força da variável de ambiente, então direi para adicionar variável de ambiente nós a chamamos de URI de MongoDB Atlas e agora queremos adicionar esse valor e você pode fazer diferentes opções de criptografia para essas variáveis de ambiente à direita, então vamos Go ao meu MongoDB Atlas Go da shboard aqui, estou começando em Serviços de dados, clicando em conectar drivers Kotlin , copiando isso, estou Go a ao Lambda , colado e terei que atualizar o nome de usuário e senha, então o que vamos fazer é preencher isso e clicar em salvar a próxima coisa que queremos fazer é querer testá-lo carregamos tudo o que adicionamos nossas informações de conexão com o próprio Lambda , em teoria, devemos estar bons agora para que eu possa Go para a guia teste e, se eu rolar para baixo, posso apenas criar um teste muito básico aqui. não queremos, não preciso salvar o JSON do evento, vamos deixar como padrão por enquanto, porque não temos nada procurando a chave um, chave dois, chave três, estamos procurando título, então deve ignorar todos os extras, então o que eu quiser fazer é clicar em test para que o teste termine, Go verificar os detalhes então, olhando para os detalhes aqui, parece que encontrou dados agora lembre-se que estamos limitando nossos resultados a cinco, então confio que há um máximo de cinco filmes aqui uh lembre-se que essa coleção tem muitos milhares de filmes então uh cinco serão sem dúvidas o máximo aqui, não deve ser menos agora Go testar novamente, mas desta vez Go dizer título Go dizer que esse será o Terminator que não temos para remover esses outros porque não estamos, não estamos fazendo nenhum tipo de verificação, mas vamos removê-los de qualquer maneira apenas mantenha-o limpo e limpo aqui e vamos executar o teste novamente em teoria, devemos ter uh Esperemos que apenas um filme Go , então se eu for até uh, temos um ciborgue de aparência humano, então isso parece bom, este é provavelmente o filme de Arnaldo Schephyllum que eu queria e o conjunto de resultados é apenas um aqui, é muito curto um, então funcionou com sucesso um então apenas um recapitulação de tudo o que fizemos bem rápido um então dentro do nosso Bui Arquivo ld.gradle esta é uma versão Kotlin dele incluímos um plug-in para que assim possamos criar um boião de fat, então um pacote de boiões de nosso projeto e dependências uh adicionamos definimos a classe principal aqui para nosso projeto para que isso funcionasse com nossa dependência de sombra então adicionamos as dependências de Lambda também adicionamos as dependências de MongoDB dentro de nosso código estamos aceitando um mapa de strings então como você viu no teste Consegui adicionar um título nele mapeie então nesse objeto JSON que estamos estabelecendo um cliente que ele usa uma variável de ambiente que estamos obtendo nosso banco de dados e a referência da collection é e estamos fazendo uma operação simples de localização em nossos dados então nada muito extravagador, mas você pode fazer isso com segurança e você posso construir coisas muito poderosas sem servidor, então no meu exemplo eu estava usando uma camada grátis de Manga para ser Atlas Eu estava usando um tamanho de cluster livre se você quisesse ficar sem Go completo com este exemplo você poderia criar uma instância sem servidor do MongoDB então dessa forma não seu aplicativo só é dimensionado para a demanda, de modo que sua função Lambda será dimensionada, mas seu banco de dados também será dimensionado com a demanda, portanto não está sempre ativado, você só está sendo criado por uso e pode ser uma maneira muito conveniente e eficiente de fazer negócios com seus aplicativos que usam MongoDB e Kotlin se você Youtube como este vídeo, se você quiser ver mais vídeos como esse também me deixe um comentário. Adoraria produzir mais em Kotlin ou até mesmo em Amazon Web Services até a próxima vez que tiver um ótimo resto de dia

Ícone do FacebookÍcone do Twitterícone do linkedin
Avalie esse Vídeo
star-empty
star-empty
star-empty
star-empty
star-empty
Relacionado
Notícias e anúncios

Introdução ao Atlas Device Sync para Android


Oct 19, 2022 | 4 min read
exemplo de código

Construindo Splash Screen Nativamente, Android 12, Kotlin


May 12, 2022 | 3 min read
Tutorial

Introdução ao desenvolvimento de backend em Kotlin usando Spring Boot 3 e MongoDB


Feb 21, 2023 | 6 min read
Tutorial

Descubra seu Airbnb ideal: implementando um Spring Boot e Atlas Search com o driver Kotlin Sync


Oct 02, 2024 | 8 min read