npm 包 probot-webhook-to-sns 使用教程

简介

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


纠错
反馈