简介
probot-webhook-to-sns 是一个 npm 包,它将 GitHub Webhook 转换成 Amazon SNS 消息,以便进一步处理和分发。此包主要用于将 GitHub 事件发送到 SNS 主题,这个主题可以将事件路由到 SNS 订阅,以便执行进一步的处理样式,如启动 AWS Lambda 函数。
安装
使用 npm 进行安装:
npm install probot-webhook-to-sns
使用
要使用 probot-webhook-to-sns,你需要在你的 Probot 应用程序中创建一个新的 webhook:
const { createSnsWebhook } = require('probot-webhook-to-sns') module.exports = app => { const webhook = createSnsWebhook({ topicArn: process.env.SNS_TOPIC_ARN, compress: true // Optional, default is false }) app.route('/github').post(webhook) }
在上述代码中,我们使用 createSnsWebhook 方法创建了一个新的 webhook,该方法接受一个包含以下参数的对象:
topicArn
(string, required): 要发布消息到的 SNS 主题的 ARN。compress
(boolean, optional): 是否启用压缩消息。默认为false
。
接下来,您可以在应用程序中使用正常的 Probot 事件处理程序,而 probot-webhook-to-sns 将负责将事件发送到 SNS 主题中。
下面是一个将 pull_request 事件发送到 SNS 主题的示例:
module.exports = app => { app.on('pull_request', async context => { await context.github.paginate( context.github.pullRequests.getReviews(context.repo({ number: context.payload.pull_request.number })), async review => { await context.github.repos.createStatus(context.repo({ sha: review.commit_id, state: 'pending', context: 'Code review' })) } ) // Send the event to SNS await context.webhookClient.send({ type: 'pull_request', payload: context.payload }, { /* Optional message attributes */ }) }) }
附加说明
createSnsWebhook
函数返回一个 Express webhook 处理程序,因此您可以像在 Express 应用程序中一样使用它。应用程序必须将 body-parser 添加为导入其 webhooks 的 Express 中间件,否则 probot-webhook-to-sns 将指定请求正文为未解析的原始 buffer。
probot-webhook-to-sns 还提供了一些其他功能,如
createSnsClient
方法,用于创建 SNS 客户端,以便在事件处理程序中发送进一步的 SNS 请求。
结论
probot-webhook-to-sns 在将 GitHub Webhook 消息发送到 SNS 中心时提供了一种方便的方式。我们希望本教程能够帮助你轻松地开始使用这个 npm 包,并为你介绍了如何在自己的应用程序中使用它。如果你有更多的问题,请查阅官方文档寻找更多帮助。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/600673defb81d47349e53ba7