今天我们将创造所谓的。 Yandex 函数 (官方名字
我也是传统服务器的反对者(但不是狂热),也是所谓的支持者。 无服务器 (无服务器)解决方案,因为我不喜欢(而且我真的不知道如何)管理服务器,更重要的是,为它们未加载的时间付费。 另一件事是功能。 有人在没有我的情况下为他们提供服务,我只支付电话费。 2019 年 XNUMX 月初,Yandex 推出了 Yandex 云功能 - 似乎是俄罗斯联邦的第一个 无服务器。 特别好的一点是,对于爱丽丝的技能来说,它们通常是免费的,所以从那时起它们就一直在我的余光中。 但让我们开始吧。
让我们想象一下这个场景。 您的应用程序(例如,Alice 的技能
关于如何从 Yandex 函数 在数据库中输入条目 云消防站 我们已经在教程中看过了
1. 在SendGrid中创建一个帐户
注意SendGrid 只是我的选择,我这样做有几个原因,最主要的一个是他们有一个现成的 Node.js SDK。 您可以选择任何其他邮寄服务。
继续前进
在下一步中我们选择 Node.js的:
接下来我们想出我们的 API-键名称(只会显示在控制台的键列表中,与我们以后的代码无关;我只是想出了一个不朽的 演示 API 密钥) 并按下按钮 创建密钥:
密钥将生成,我们将复制它并严格保密。 我们将有一个带有按钮的屏幕 验证集成,如下图所示,不过我们先不点击它,我们继续写代码:
2. 编写代码
但正如您所看到的,代码本身小得离谱 - 22 行!
排队 #8 我的电子邮件是硬编码的(因此害羞地隐藏) - 请注明您的电子邮件。 在现实生活中,我们会收到所有的数据(包括 邮箱地址) 来自对象 活动。 例如,如果该方法 解决方案&帖子 一个对象被发送到我们的函数 用户 带字段(属性) 邮箱地址,该字段的值可以这样获取:
const { user } = event;
const email = user.email;
如果使用该方法将电子邮件地址传递给函数 的GET例如: https://functions.yandexcloud.net/123abc?[email protected]
参数值 邮箱地址 你可以这样得到它:
const email = event.queryStringParameters.email;
查看对象中到底包含什么 活动,你可以创建最简单的 Yandex 函数 并用查询来扭转它:
module.exports.handler = async function (event) {
return {
'statusCode': 200,
'body': JSON.stringify(event)
};
};
官方文档对此进行了更详细的讨论(但不太清楚)
因此,创建一个项目目录(例如, 邮件),进入其中,初始化项目,安装依赖:
mkdir mailer
cd mailer
npm init -y
npm i @sendgrid/mail email-validator dotenv
这里只需要包 @sendgrid/邮件. 塑料袋 电子邮件验证器 检查电子邮件地址的有效性(我怎么没有立即猜到?),但如果我们确定它(它已经在没有我们的情况下检查了很长时间),我们就不必安装它(并且,当然,我们不必在代码中检查它)。 塑料袋 Dotenv 设计用于从文件中读取记录 .ENV 作为运行时变量。 但在 Yandex 函数 可以将这些变量直接放入运行时环境中。 如何? - 我将在下面展示它。 因此包 Dotenv 你也可以不安装它,并且该文件 .ENV - 不创建,同时代码在文件中 index.js 不要换。 但是这里我们已经安装了这个包,所以我们创建文件 index.js и .ENV:
touch index.js
touch .env
在文件中 index.js 编写 22 行代码,如上面的屏幕截图所示(仅在行 #8 更改您的电子邮件),并在文件中 .ENV - (不带任何引号或标点符号)指定键名/值对 API我们最近在控制台中收到的 SendGrid:
SENDGRID_API_KEY=您的秘密 sendgrid-api-key
如果您想要减少工作量,请克隆存储库并安装软件包:
git clone https://github.com/stmike/ycf-sendgrid-mailer-tutorial.git
cd ycf-sendgrid-mailer-tutorial
npm i
在文件中 index.js, 排队 #8 更改电子邮件; 在根目录下创建一个文件 .ENV,并在其中指示键的名称/值 API,如上所示。
3. 部署
或多或少清楚和详细地讲述了 Yandex.Cloud 以及如何将其放置在那里 Yandex 函数 我的文章中描述的
我们创造 拉链-archive(我们称之为,例如, 邮件程序.zip),其中我们包含目录 节点模块 和文件 .env、index.js - 我们项目目录中的所有内容:
我们正确地创建了一个名为...的函数 - 邮件,在左侧导航菜单中我们输入 编者,填写必填字段,然后切换到选项卡 压缩包 下载我们的档案 邮件程序.zip:
这是前面提到的下载选项 API密钥 直接在这里,而不是在项目中创建文件 .ENV,并且不安装该包 Dotenv。 但我们已经完成了所有这些,所以我展示它只是为了提供信息。 也就是说,不需要重复!
现在点击右上角的按钮 创建版本,然后等待几秒钟。 当一切准备就绪后,我们将自动进入该部分 查看。 在那里我们将启用该选项 公共职能以便您可以从外部世界与它进行交互。
您会看到铭文对面的蓝色链接 通话链接? 点击它。 将打开一个空的浏览器窗口...但是等等 - 我收到一封电子邮件:
现在您可以返回控制台 SendGrid, 并按下按钮 验证集成。 系统将通过其通道检查所有内容,因此它应该返回如下屏幕:
就是这样,伙计们(当然还有女孩)——一切都非常简单和优雅! 将会有更多文章。 如果有人有兴趣阅读此类内容,请订阅,这样您就不会错过。
4. 捐款
来源: habr.com