Hoje vamos criar o chamado. Função Yandex (nome oficial
Também sou adversário (mas sem fanatismo) dos servidores tradicionais, e defensor dos chamados. sem servidor soluções (sem servidor), porque não gosto (e não sei muito bem) administrar servidores e, mais ainda, pagar pelo tempo em que eles não estão carregados. Outra coisa são as funções. Alguém os atende sem mim e eu só pago pelas ligações. No início de outubro de 2019, Yandex apresentou seu Funções da Nuvem Yandex - parece ser o primeiro na Federação Russa sem servidor. E o que é especialmente interessante é que, para as habilidades de Alice, elas geralmente são gratuitas, então estão na minha visão periférica desde então. Mas vamos começar já.
Vamos imaginar esse cenário. Sua aplicação (por exemplo, a habilidade de Alice
Sobre como de Funções Yandex fazer entradas no banco de dados Cloud Fire Store já vimos isso no tutorial
1. Crie uma conta no SendGrid
NotaSendGrid é apenas minha escolha, que fiz por vários motivos, sendo o principal deles o fato de eles terem um SDK pronto para Node.js. Você pode escolher qualquer outro serviço de correio.
Seguir em frente
Na próxima etapa selecionamos Node.js:
Em seguida, criamos para o nosso API-key name (será exibido apenas no console na lista de chaves e não tem nada a ver com nosso código futuro; acabei de criar um imperecível chave demo-api) e pressione o botão Criar chave:
A chave será gerada, iremos copiá-la e mantê-la em total sigilo. E teremos uma tela com um botão Verifique a integração, como na imagem abaixo, mas não vamos clicar ainda, mas vamos escrever o código:
2. Escrevendo código
Mas o código em si, como você pode ver, é ridiculamente pequeno – 22 linhas!
Em linha #8 Meu e-mail está codificado (e, portanto, timidamente oculto) - indique o seu. Na vida real, receberemos todos os dados (incluindo email) do objeto evento. Por exemplo, se o método POST um objeto é enviado para nossa função usuário com campo (propriedade) email, o valor deste campo pode ser obtido assim:
const { user } = event;
const email = user.email;
E se o endereço de email for passado para a função usando o método ENTRE, Por exemplo: https://functions.yandexcloud.net/123abc?[email protected]
valor do parâmetro email você pode conseguir assim:
const email = event.queryStringParameters.email;
Para dar uma olhada no que exatamente está contido em um objeto evento, você pode criar o mais simples Função Yandex e distorça-o com consultas:
module.exports.handler = async function (event) {
return {
'statusCode': 200,
'body': JSON.stringify(event)
};
};
Isto é discutido com mais detalhes (mas menos claramente) na documentação oficial
Então, crie um diretório de projeto (por exemplo, mala direta), vá até ele, inicialize o projeto, instale as dependências:
mkdir mailer
cd mailer
npm init -y
npm i @sendgrid/mail email-validator dotenv
Aqui apenas o pacote é necessário @sendgrid/mail. Saco de plástico validador de e-mail verifica a validade do endereço de e-mail (como não adivinhei imediatamente?), mas se tivermos certeza (já foi verificado há muito tempo sem nós), não precisamos instalá-lo (e, claro claro, não precisamos verificar isso no código). Saco de plástico dotenv projetado para ler registros de um arquivo .env como variáveis de tempo de execução. Mas em Funções Yandex É possível colocar essas variáveis diretamente no ambiente de execução. Como? - Vou mostrar abaixo. Portanto o pacote dotenv você também não pode instalá-lo, e o arquivo .env - não crie, e ao mesmo tempo o código está no arquivo index.js não mude. Mas aqui instalamos este pacote, então criamos arquivos index.js и .env:
touch index.js
touch .env
No arquivo index.js escreva 22 linhas de código mostradas na imagem acima (apenas na linha #8 altere seu e-mail) e no arquivo .env - (sem aspas ou pontuação) especifique o par - nome/valor da chave APIque recebemos recentemente no console SendGrid:
SENDGRID_API_KEY=sua-chave-de-api-muito-secreta
E se quiser menos trabalho, clone o repositório e instale os pacotes:
git clone https://github.com/stmike/ycf-sendgrid-mailer-tutorial.git
cd ycf-sendgrid-mailer-tutorial
npm i
No arquivo index.js, em linha #8 Mude o e-mail; crie um arquivo no diretório raiz .env, e nele indique o nome/valor da chave API, conforme mostrado logo acima.
3. Implantar
Mais ou menos claramente e detalhadamente sobre Yandex.Cloud e como colocá-lo lá Funções do Yandex descrito no meu artigo
Nós criamos zip-archive (vamos chamá-lo, por exemplo, mailer.zip), no qual incluímos o diretório node_modules e arquivos .env, index.js - tudo do nosso catálogo de projetos:
Criamos uma função com o nome... corretamente - mala direta, no menu de navegação esquerdo entramos editor, preencha os campos obrigatórios e mude para a guia arquivo ZIP baixe nosso arquivo mailer.zip:
E aqui está a opção de download mencionada anteriormente Chave API diretamente aqui, em vez de criar um arquivo no projeto .enve não instale o pacote dotenv. Mas já fizemos tudo isso, então estou mostrando apenas para informação. Ou seja, não há necessidade de duplicar!
Agora no canto superior direito clique no botão Criar versãoe aguarde alguns segundos. Quando tudo estiver pronto, iremos automaticamente para a seção visão global. Lá vamos habilitar a opção função públicapara que você possa interagir com ele do mundo exterior.
Você vê o link azul oposto à inscrição Link para ligar? Clique. Uma janela vazia do navegador será aberta... Mas espere - recebi um email:
Agora você pode retornar ao console SendGrid, e pressione o botão Verifique a integração. O sistema irá verificar tudo através de seus canais, e como resultado deverá retornar uma tela como esta:
É isso, rapazes (e meninas, claro) - tudo é realmente muito simples e elegante! Haverá mais artigos. Se alguém estiver interessado em ler algo assim, inscreva-se para não perder.
4. Doações
Fonte: habr.com