将SendGrid Webhook连接到Redshift:2种简单方法

317 阅读16分钟

将SendGrid Webhook连接到Redshift:2种简单方法

Harshitha BalasankulaonAmazon Redshift,AWS,Data Integration,Data Warehouses,Sendgrid,Webhook- June 14th, 2022 -Write for Hevo

SendGrid 是一个基于云的电子邮件交付服务,帮助企业,发货通知,朋友请求,注册确认,和电子邮件通讯只是它管理的几个电子邮件类型。

AWS Redshift 是一个亚马逊网络服务的数据仓库服务。它通常用于大规模数据存储和分析,以及大型数据库迁移。

这篇文章谈到了从SendGrid Webhook即时加载数据到Redshift的方法**。**它还简要介绍了Redshift和SendGrid Webhook。

目录

什么是SendGrid Webhook?

sendgrid webhook to redshift: sendgrid logo

图片来源

SendGrid Event Webhook将在SendGrid处理你的电子邮件时发送有关事件的信息,通过 HTTP POST发送到你选择的 URL 你可以使用这些信息来删除退订,回应垃圾邮件报告,识别未参与的收件人,识别被退回的电子邮件地址,以及执行高级电子邮件分析。你可以使用Unique Arguments和Category Parameters插入动态数据**,以**帮助建立你的电子邮件程序的清晰图像。

类别唯一参数将被存储为一个**"非PII "** 字段, SendGrid 可以用它来进行计数和其他操作。这些字段在大多数情况下不能被编辑或删除。你应该避免把任何PII放在这个字段中。SendGrid不会将这些信息视为个人身份信息(PII),其数值可能会被SendGrid员工看到,并被无限期地存储,甚至在你离开SendGrid平台之后也是如此。

如果你想跟踪更多为你保存的事件数据,你应该设置事件网络钩子。由于你发送的电子邮件数量庞大,你只能存储这么多信息。在你的 电子邮件活动提要中,最多可以保存 30天的事件。在这段时间过后,电子邮件事件数据就会丢失。

什么是亚马逊Redshift?

sendgrid webhook to redshift: redshift logo

图片来源

AWS Redshift 是亚马逊网络服务的数据仓库解决方案。该服务与AWS提供的许多其他服务一样,可以在几分钟内完成设置,并提供各种导入选项。Redshift的数据也是加密的,以提供额外的保护。

你可以使用Redshift从大量的数据中提取有用的信息。AWS提供了一个简单的界面来自动创建集群,消除了对基础设施管理的需求。

你加载到Redshift的所有数据默认都是压缩的,并且在查询执行过程中进行解压。压缩通过减少从存储中读取的数据大小来节省存储空间,减少磁盘I/O的数量,从而提高查询性能。

对于存储和分析大型数据集,亚马逊Redshift是一个完全管理的PB级云数据仓库。亚马逊Redshift的主要优势之一是其处理大量数据的能力--它可以处理高达exabytes的非结构化和结构化数据。该服务也可用于执行大规模的数据迁移。Redshift和其他数据仓库一样,用于在线分析处理(OLAP)工作流程。

要了解更多关于AWS Redshift的信息,请 关注这里的官方文档

亚马逊Redshift的主要特点

  • 亚马逊Redshift的 **高级查询加速器(AQUA)**的查询速度比其他云数据仓库快10倍。
  • 对于ETL、批量作业处理和仪表盘,Amazon Redshift的Materialistic视图可以让你实现更快的查询性能。
  • 亚马逊Redshift的架构可扩展到PB级,并可根据需要快速扩展。
  • Amazon Redshift允许在Amazon Redshift集群之间安全地共享数据。
  • 亚马逊Redshift始终如一地提供快速的结果,即使有成千上万的查询在同时运行。
  • ANSI SQL的帮助下,Amazon Redshift可以直接查询 CSV、Avro、Parquet、JSONORC等文件。
  • 亚马逊Redshift拥有出色的机器学习支持,开发人员可以使用SQL来创建、训练和部署亚马逊Sagemaker 模型。
  • 亚马逊Redshift允许用户编写查询并将数据导出到数据湖。

亚马逊Redshift的主要优势

  • 智能优化。如果你的数据集很大,有几种方法可以用相同的参数查询数据。不同的命令有不同的数据使用水平。亚马逊Redshift提供工具和信息来改善你的查询。这些都可以用于更快和更节省资源的操作。
  • **自动化重复性任务。**Amazon Redshift能够自动化必须重复完成的任务。创建每日、每周或每月的报告是管理任务的一个例子。这可能是对资源和成本的审查。清理你的数据也可以是一个定期维护任务。由于Amazon Redshift的行动,所有这些都可以自动化。
  • **速度:**随着MPP技术的使用,输出大量数据的速度是空前的。AWS的服务成本是其他云服务提供商无法比拟的。
  • 同步扩展。亚马逊Redshift自动扩展以支持并发工作负载的增长。
  • 查询量。MPP技术在这方面表现出色,你可以在任何时候向你的数据集发送成千上万的查询。而亚马逊Redshift则是不可阻挡的。为了应对不断增长的需求,动态地分配处理和内存资源。
  • 熟悉情况。 Amazon Redshift是基于PostgreSQL的。所有的SQL查询都可以用它。此外,你可以选择你熟悉的SQL、ETL(提取、转换、加载)和商业智能(BI) 工具。你没有义务使用亚马逊提供的工具。
  • AWS集成。亚马逊Redshift与其他AWS工具合作良好。您可以根据您的需求和最佳配置,在所有服务之间设置集成。
  • Redshift API。亚马逊Redshift的API有很好的记录,并且有很多功能。可以使用API工具来发送查询和接收结果。在Python程序中,可以使用API来使编码更容易。
  • 数据加密。 亚马逊为你的Amazon Redshift操作的所有部分提供数据加密。用户可以决定哪些流程需要加密,哪些不需要。数据加密提供了一个额外的安全层。
  • **安全性。**亚马逊负责云安全,但用户要对云中的应用安全负责。为了提供额外的安全层,亚马逊提供访问控制、数据加密和虚拟私有云。
  • 合作伙伴生态系统。 AWS是最早向市场推出云数据仓库的云服务提供商之一。许多客户将他们的基础设施委托给亚马逊。AWS也有一个庞大的合作伙伴网络,可以帮助建立第三方应用程序并提供实施服务。这个合作伙伴的生态系统也可以用来看看你是否能找到适合你公司的最佳实施方案。
  • AWS分析。A WS有大量的分析工具。亚马逊Redshift使所有的数据分析成为可能。其他分析工具可以在亚马逊的帮助下与亚马逊Redshift集成。因为亚马逊Redshift是一个AWS社区产品,它具有与AWS分析服务的原生集成能力。
  • 开放格式。Amazon Redshift可以支持并提供许多开放格式的数据输出。最常见的支持格式是Apache Parquet 和**优化行柱状(ORC)**文件格式。
  • 轻松部署。在 几分钟内,亚马逊Redshift集群可以从世界任何地方部署。您将在几分钟内拥有一个强大的数据仓库解决方案,而费用只是竞争对手收费的一小部分。
  • 稳定的备份。亚 马逊定期备份你的数据。在发生错误、故障或损坏的情况下,它可以用来恢复。备份被储存在不同的地方。这减少了你的网站出现混乱的可能性。
  • 机器学习。亚 马逊Redshift使用机器学习概念预测和分析查询。这使得Amazon Redshift的性能比市场上任何其他解决方案都要快,除了MPP之外。

为什么要将SendGrid Webhook连接到Redshift?

为了对你发送的邮件进行实时更新,比如退信、点击链接、回复、退订或垃圾邮件报告、查询、订单或肯定行动等,Sendgrid提供了Webhooks,它将通知你选择的URL并告知你发生的事件。因此,如果有人通过点击你的电子邮件中的链接下了订单,Sendgrid的Webhook将向你指定的URL发送一个消息。

你可以选择你想被告知的事件,Webhook会在一次请求中向你发送一个正确格式化的JSON数组,包括你选择的事件。如果你的接收URL没有给出2xx响应,Sendgrid Webhook会多试几次发送POST请求。

将Sendgrid Webhook连接到Redshift或任何数据仓库解决方案,有助于更好地提供电子邮件交付服务,并有助于跟踪电子邮件活动馈送。

探索这些方法来连接SendGrid Webhook到Redshift

SendGrid是一个基于云的电子邮件交付平台,它解决了这个问题。SendGrid代表你管理和托管一个电子邮件服务器,确保你的客户通信被及时发送和交付。亚马逊Redshift提供快如闪电的性能和可扩展的数据处理解决方案。它还提供了一些数据分析工具,以及合规性功能,以及人工智能和机器学习应用。

整合后,将数据从SendGrid Webhook转移到Redshift可以解决企业的一些最大数据问题。在这篇文章中,将讨论实现这一目标的两种方法。

方法一:使用Hevo Data来设置SendGrid Webhook到Redshift的ETL

Hevo Data,一个自动数据管道,为你提供了一个无忧无虑的解决方案,在几分钟内通过一个易于使用的无代码界面将 SendGrid Webhook 连接到Redshift。Hevo是完全管理的,完全自动化了从SendGrid Webhook加载数据到Redshift的过程,并丰富了数据,将其转化为可分析的形式,而无需编写一行代码。

免费开始使用hevo

方法2:使用自定义代码将数据从SendGrid Webhook转移到Redshift

这种方法实施起来会很费时,而且有些繁琐。用户将不得不编写自定义代码来启用两个进程,将数据从SendGrid Webhook流向Redshift。这种方法适合于有技术背景的用户。

SendGrid Webhook到Redshift

方法1:使用Hevo数据来设置SendGrid Webhook到Redshift

sendgrid webhook to redshift: Hevo logo

图片来源

Hevo提供了一个自动化的无代码数据管道,帮助你将SendGrid Webhook转移到Redshift。Hevo是完全管理的,不仅可以从你的 100多个数据源(包括40多个免费数据源)加载数据,还可以丰富数据并将其转化为可分析的形式,而无需编写任何一行代码。它的容错架构确保了数据以安全、一致的方式处理,并且没有数据损失。

使用Hevo Data,你可以通过以下2个步骤将SendGrid Webhook连接到Redshift。

  • 第1步:Hevo可以将你的SendGrid账户的电子邮件活动数据导入你的Destination。Hevo使用WebhooksSendGrid沟通**。**

sendgrid webhook to redshift: set up webhook

图片来源

在你的SendGrid账户中添加Webhook URL

  • 步骤1.1:生成的 Webhook URL应该被复制。
  • 第1.2步:打开 SendGrid用户界面,在你的SendGrid 账户中进入设置>邮件设置
  • 1.3步:激活 事件通知功能。
  • 步骤1.4。将你在步骤1中复制的唯一URL粘贴到HTTP POST URL领域。
  • 1.5步:选择你要测试的事件通知
  • 第1.6步:要将这些变化保存到您的设置中,请勾选右上角的方框。

事件数据样本

{
    "email": "example@test.com",
    "timestamp": 1580102529,
    "smtp-id": "<14c5d75ce93.dfd.64b469@ismtpd-555>",
    "event": "deferred",
    "category": "cat facts",
    "sg_event_id": "P0onudGCXGlIhfAoy831Nw==",
    "sg_message_id": "14c5d75ce93.dfd.64b469.filter0001.16648.5515E0B88.0",
    "response": "400 try again later",
    "attempt": "5"
}
  • 第二步:要在Hevo中设置Amazon Redshift作为目的地,请遵循以下步骤。
    • 第2.1步。在 资产调色板中,选择DESTINATIONS
    • 步骤2.2:在目的地列表 视图中,点击**+CREATE**。
    • 2.3步:在添加目的地页面中选择 Amazon Redshift
    • 第2.4步:在Configure your Amazon Redshift Destination页面上设置以下参数。
      • 目的地名称。为你的目的地取一个独特的名字。
      • 数据库集群标识符。Amazon Redshift主机的IP地址或DNS。
      • 数据库端口:您的Amazon Redshift服务器监听连接的端口。默认值:5439
      • 数据库用户:在Redshift数据库中具有非管理角色的用户。
      • 数据库密码:该用户的密码。
      • 数据库名称。将加载数据的目标数据库的名称。
      • 数据库模式。目的地数据库模式的名称。默认值:公共。

sendgrid webhook to redshift: configure amazon redshift as destination

图片来源

  • 步骤2.5:点击测试连接,测试与亚马逊Redshift仓库的连接。
  • 步骤2.6:一旦测试成功,点击SAVE DESTINATION

以下是尝试Hevo的更多理由。

  • 顺畅的模式管理。Hevo消除了繁琐的模式管理任务,自动检测传入数据的模式,并将其映射到所需数据仓库的模式中。
  • 卓越的数据转换。一流的本地支持,让复杂的数据转换触手可及。代码和无代码的灵活性是为所有人设计的。
  • 快速设置。Hevo具有自动化功能,可以在最短的时间内完成设置。此外,凭借其简单和互动的用户界面,它对新客户的工作和执行操作是非常容易的。
  • 可扩展性。随着数据源的数量和你的数据量的增长,Hevo可以横向扩展,每分钟处理数百万条记录,而且延迟非常小。
  • 实时支持。Hevo团队通过聊天,电子邮件和支持电话24小时为客户提供特殊支持。

今天就试试Hevo吧!

在此注册以获得14天的免费试用

方法2:使用自定义代码将数据从SendGrid Webhook转移到Redshift

在这个方法中,为了将SendGrid Webhook连接到Redshift,首先,你将把数据从SendGrid Webhook发送到CSV,然后再将数据从CSV迁移到Redshift。

SendGrid Webhook到CSV

请求一个 CSV
  • 你可以使用电子邮件活动 API 来查询你所有的存储邮件和个别邮件,并下载一个包含存储邮件数据的CSV文件。
  • 一旦你的邮件被检索出来,你可以检查与你的邮件相关的数据,以更好地了解你的邮件发送情况。例如,你可以检索所有被退回的邮件或具有相同主题的所有邮件并寻找模式。
POST /v3/messages/download
Base url: https://api.sendgrid.com
  • 一个后端程序将生成一个CSV 文件来响应这个请求。文件生成后,该工作者将向用户发送一封电子邮件,要求他们下载该文件。三天后,该链接将过期。
  • 最后的 100万条 信息包含在CSV文件中。这个端点将有一个速率限制,即每 12小时一个请求(速率限制可能会改变)。
  • 这个端点和GET单个消息端点的唯一区别是,增加了下载,以表明这是一个CSV 下载请求,但同样的查询被用来确定CSV 应该包含什么。
<?php // Uncomment next line if you're not using a dependency loader (such as Composer) // require_once '<PATH TO>/sendgrid-php.php'; $apiKey = getenv('SENDGRID_API_KEY'); $sg = new SendGrid($apiKey); try { $response = $sg->client->messages()->download()->post(); print $response->statusCode() . "n"; print_r($response->headers()); print $response->body() . "n"; } catch (Exception $ex) { echo 'Caught exception: '. $ex->getMessage(); }
下载一个CSV
GET /v3/messages/download/{download_uuid}
Base url: https://api.sendgrid.com
  • 请求一个CSV "端点将返回一个Presigned URL,可用于下载所请求的CSV
<?php // Uncomment next line if you're not using a dependency loader (such as Composer) // require_once '<PATH TO>/sendgrid-php.php'; $apiKey = getenv('SENDGRID_API_KEY'); $sg = new SendGrid($apiKey); $download_uuid = "6f240bf5-d42d-4e4c-b159-82c1a82c1e87"; try { $response = $sg->client->messages()->download()->_($download_uuid)->get(); print $response->statusCode() . "n"; print_r($response->headers()); print $response->body() . "n"; } catch (Exception $ex) { echo 'Caught exception: '. $ex->getMessage(); }

CSV到Redshift

使用 Amazon S3 Bucket
  • CSV文件加载到Amazon Redshift 的最简单方法之一是使用S3 Bucket。它涉及两个阶段--将CSV 文件加载到S3 ,然后将数据从S3 加载到Amazon Redshift。
    • 第1步:创建一个包含要加载的CSV数据的清单文件。把这个文件上传到S3,最好对文件进行压缩
    • 第2步:一旦加载到S3,运行 COPY命令,从S3中提取文件,并将其加载到所需的表。如果你使用了 gzip,你的代码将是以下结构。
COPY <schema-name>.<table-name> (<ordered-list-of-columns>) FROM '<manifest-file-s3-url>' 

CREDENTIALS'aws_access_key_id=<key>;aws_secret_access_key=<secret-key>' GZIP MANIFEST;
  • 这里,使用 CSV关键字的意义在于帮助Amazon Redshift 识别文件格式。你还需要指定任何要驳回的列安排或行标题,如下图所示。
COPY table_name (col1, col2, col3, col4)
FROM 's3://<your-bucket-name>/load/file_name.csv'
credentials 'aws_access_key_id=<Your-Access-Key-ID>;aws_secret_access_key=<Your-Secret-Access-Key>'
CSV;

-- Ignore the first line
COPY table_name (col1, col2, col3, col4)
FROM 's3://<your-bucket-name>/load/file_name.csv'
credentials 'aws_access_key_id=<Your-Access-Key-ID>;aws_secret_access_key=<Your-Secret-Access-Key>'
CSV
INGOREHEADER 1;
  • 这个过程将以一种相当直接的方式成功地把你所需要的CSV 数据集加载到 Amazon Redshift
使用AWS数据管道
  • 你也可以使用AWS数据管道来提取和加载你的 CSV文件。使用AWS数据管道进行加载的好处是不需要实现复杂的 ETL框架。在这里,你可以实施模板活动来有效地执行数据操作任务。
  • 使用 RedshiftCopyActivity 将你的CSV 数据从主机源复制到Redshift。这个模板从 Amazon RDS、Amazon EMRAmazon S3 复制数据

sendgrid webhook to redshift: AWS Data Pipeline

图片来源

  • 其局限性表现在与一些可能成为潜在主机源的数据仓库缺乏兼容性。这种方法基本上是手动的,因为复制活动是在数据加载的每一次迭代后实施的。对于一个更可靠的方法,特别是在处理动态数据集时,你可能想依靠自我管理的东西。

总结

在几个步骤中,本博客解释了从SendGrid Webhook向Redshift加载数据的不同方式。它还介绍了SendGrid Webhook和Redshift的概况。

访问我们的网站,探索Hevo

Hevo Data提供了一个无代码的数据管道,可以使你的数据传输过程自动化,从而使你能够专注于你业务的其他方面,如分析、营销、客户管理等。

这个平台允许你从100多个来源(包括40多个免费来源)传输数据,如 SendGrid Webhook 和 基于云的数据仓库,如Snowflake, Google BigQuery。 亚马逊Redshift**,**等等。它将为你提供无忧无虑的体验,使你的工作生活更加轻松。

想体验一下Hevo吗?

注册一个14天的免费试用,亲身体验功能丰富的Hevo套件。你也可以看看无可匹敌的 价格,这将有助于你选择适合你的业务需求的计划。

亚马逊Redshift的无代码数据管道

免费试用