在 Azure App Service 中触发 Snowflake IFTTT 流程





0/5 (0投票)
本文介绍了如何使用 Logic Apps 中的标准向导自动化 IFTTT(如果 this - then - that)工作流。
通过 OData 和 Swagger 等基于标准的接口,CData API Server 在 Logic Apps 和 Microsoft Flow 中为 Snowflake 提供了原生体验。OData 实现了数据实时连接;Swagger 实现了 Logic Apps 和 Microsoft Flow 中向导的脚手架(或代码生成),以及 PowerApps 的脚手架。本文将介绍如何将 Snowflake 添加到 Logic App 的 IFTTT(if-this-then-that)工作流中。
设置 API 服务器
请按照以下步骤开始生成安全且支持 Swagger 的 Snowflake API
部署
API 服务器运行在您自己的服务器上。在 Windows 上,您可以使用独立服务器或 IIS 进行部署。在 Java Servlet 容器中,可以放入 API 服务器 WAR 文件。有关更多信息和操作方法,请参阅帮助文档。
API 服务器还可以轻松部署在 Microsoft Azure、Amazon EC2 和 Heroku 上。
连接到 Snowflake
部署 API 服务器后,通过单击“设置”->“连接”并在 API 服务器管理控制台中添加新连接来提供身份验证值和其他连接属性。然后,您可以通过单击“设置”->“资源”来选择 API 服务器允许访问的实体。
连接到 Snowflake
- 将 用户 和 密码 设置为您的 Snowflake 凭据,并将 AuthScheme 属性设置为 PASSWORD 或 OKTA。
- 将 URL 设置为 Snowflake 实例的 URL(例如:https://myaccount.snowflakecomputing.com)。
- 将 Warehouse 设置为 Snowflake 数据仓库。
- (可选)如果您的 URL 不符合上述格式,请将 Account 设置为您的 Snowflake 账户。
- (可选)将 Database 和 Schema 设置为限制公开的表和视图。
有关更多信息,请参阅 CData 驱动程序文档中的“入门”指南。
您还需要在“设置”->“服务器”页面上启用 CORS 并定义以下部分。或者,您可以选择“允许所有域”(*)的选项。
- Access-Control-Allow-Origin:将其设置为“*”。要在 Logic Apps Designer 中使用 API 服务器,需要 Access-Control-Allow-Origin 标头值为“*”。
- Access-Control-Allow-Methods:将其设置为“GET,PUT,POST,OPTIONS”。
- Access-Control-Allow-Headers:将其设置为“x-ms-client-request-id, authorization, content-type”。
授权 API 服务器用户
确定要生成的 OData 服务后,通过单击“设置”->“用户”来授权用户。API 服务器使用基于 authtoken 的身份验证,并支持主要的身份验证方案。您可以加密连接和进行身份验证(使用 SSL)。还可以通过 IP 地址限制访问;默认情况下,访问仅限于本地计算机。
为简单起见,我们将允许在 URL 中传递 API 用户的 authtoken。您需要在 settings.cfg 文件的 Application 部分添加一个设置,该文件位于 data 目录中。在 Windows 上,它是应用程序根目录下的 app_data 子文件夹。在 Java 版本中,data 目录的位置取决于您的操作系统。
- Windows:C:\ProgramData\CData
- Unix 或 Mac OS X:~/cdata
[Application] AllowAuthtokenInURL = true
在 Logic App 中访问 Snowflake
您可以在 Logic App 中使用 API 服务器来创建围绕 Snowflake 数据的流程。HTTP + Swagger 操作提供了一个向导,用于定义您想要对 Snowflake 执行的操作。以下步骤演示了如何在 Logic App 中检索 Snowflake 数据。
如果您的表包含记录创建日期的列,您可以按照以下步骤编写一个函数来检查该列值是否有任何新记录。否则,请跳至“创建 Logic App”部分,向符合条件的实体发送电子邮件。
检查新的 Snowflake 实体
要查找自某个时间点以来的新 Snowflake 实体,您可以编写一个函数来检索时间间隔开始的日期时间值。
- 在 Azure 门户中,单击“新建”->“函数应用”->“创建”。
- 输入名称,并选择订阅、资源组、应用服务计划和存储帐户。
- 选择您的函数应用,然后选择“Webhook + API”场景。
- 选择语言。本文使用 JavaScript。
- 添加以下代码以在 JSON 对象中返回上一小时
module.exports = function (context, data) { var d = new Date(); d.setHours(d.getHours()-1); // Response of the function to be used later. context.res = { body: { start: d } }; context.done(); };
将 Snowflake 添加到触发器
请按照以下步骤创建搜索 Snowflake 中符合条件的记录的触发器。如果您创建了上述函数,则可以搜索在间隔开始时间之后创建的对象。
- 在 Azure 门户中,单击“新建”,然后在“Web + 移动”部分选择“Logic App”,并选择资源组和应用服务计划。
- 然后,您可以使用 Logic App Designer 中提供的向导,可以从 Logic App 的设置窗格访问该向导。选择“空白 Logic App”模板。
- 添加一个“循环”操作,该操作将轮询 Snowflake 对象。本文档每小时轮询一次。选择时区 - 默认为 UTC。
- 添加一个函数操作:展开“添加操作”对话框中的菜单,然后选择显示同一区域的 Azure 函数的选项。选择您之前创建的函数应用,然后选择返回间隔开始时间的函数。
- 输入一对空的括号“
{}
”,将空的有效负载对象传递给函数。 - 添加 HTTP + Swagger 操作,并输入 API 服务器的 swagger URL。
http://MySite:MyPort/api.rsc/@MyAuthtoken/$swagger
- 选择“Return Accounts”操作。
- 使用每个属性的描述来指定其他参数,例如要检索的列、筛选器等。例如:
Id eq '1'
。
API 服务器会在 swagger 文档中返回描述和其他文档。您可以在 API 服务器帮助文档中找到有关使用 OData API 和支持的 OData 的更多信息。 - 要使用从
getInterval
函数返回的日期时间值,请在 Accounts 表中使用“ge”运算符和一个日期时间列,并在对话框中选择“Body”参数。请注意,必须用引号括起日期时间值。
- 切换到代码视图,修改 $filter 表达式以提取包含间隔开始时间的属性。使用语法
'@{body('MyFunc')['MyProp']}'
。
"getAllAccounts": { "inputs": { "method": "get", "queries": { "$filter": "CreatedDate ge '@{body('getInterval')['start']}'" }, "uri": "https://MySite:MyPort/api.rsc/@MyAuthtoken/Account" }
现在,您可以在工作流中将 Snowflake 作为数据源和目标。
发送新记录的电子邮件
请按照以下步骤发送包含新 Account 实体的报告。
- 在 Logic Apps Designer 中,添加一个 SMTP - Send Email 操作。
- 配置 SMTP 服务器的必要信息。
- 配置发件人、收件人、主题和正文。您可以添加来自 Snowflake 返回的列的参数。
单击“保存”,然后单击“运行”,即可在过去一小时内创建的任何 Snowflake 记录上发送电子邮件通知。
此时,您已在 Logic Apps 中配置了一个 IFTTT 工作流,用于报告在 Snowflake 数据仓库中发现的新帐户。
除了使 Azure Logic Apps 能够访问您的 Snowflake 数据仓库之外,CData API Server 还可以用于连接 150 多个 SaaS、大数据和 NoSQL 源。立即在线下载 CData API Server 的免费试用版,并在 Logic Apps 中开始处理您的所有数据。