【问题标题】:Github webhook not posting to Amazon SQS queue due to UnknownOperationException由于 UnknownOperationException,Github webhook 未发布到 Amazon SQS 队列
【发布时间】:2014-09-26 21:14:17
【问题描述】:

我正在尝试配置一个 Github 存储库以通过 webhook不是预配置的 SQS Service)发布到 Amazon SQS 队列。该队列具有完全权限,因此任何人都可以向其发布消息 - 当我通过 curl 发布消息时,它工作正常。

curl -d "Action=SendMessage&MessageBody=curl_testing" https://sqs.us-east-1.amazonaws.com/123/my_queue

但是,当我在 webhook 中使用相同的队列 URL 并对其进行测试时,我得到了 404 和 UnknownOperationException

默认的curl 格式是 form-urlencoded,所以我将 webhook 默认格式 (application/json) 更改为该格式 - 这没有任何区别。 (有趣的是,我也将curl 切换为使用application/json,但失败并出现同样的错误。)

webhook 上没有很多选项,但我都尝试了(有/没有秘密令牌或 SSL 证书),但没有成功。

是否可能向 SQS 发布 webhook(带有预期的 repo 信息,例如提交等)?如果有,怎么做?

【问题讨论】:

    标签: github amazon-sqs webhooks


    【解决方案1】:

    在您的 curl 示例中,您可以看到 SQS 需要 Action 和 MessageBody 属性。您可以在 POST 请求的正文中或作为 URL 参数指定它们。这样可以向 SQS 队列发送通知,但您会丢失来自 webhook 的信息,这些信息格式为 JSON。

    您可以像这样在 webhook Payload URL 中设置操作和消息正文:

    https://sqs.us-east-1.amazonaws.com/123/my_queue?Action=SendMessage&MessageBody=Webhook_triggered
    

    这样,每当激活 webhook 时,您都会收到带有“Webhook_triggered”正文的 SQS 消息。

    【讨论】:

    • 有趣。谢谢,这确实有效,因为 Github 成功向 SQS 发布了一条消息。但由于我使用的是 repo 作为来源,因此有一个未说明的假设,即帖子将包含 repo 信息。我在 SQS 队列中收到的只是“webhook_triggered”消息——我不知道什么 repo 发送了消息。因此,+1 赞成一个有趣的解决方案,但我将修改问题以更明确地说明目标。 (我尝试了 没有 MessageBody,得到了 400)。
    • 另一种选择是在 MessageBody 中包含完整的 repo 名称。然后我可以查询 repo 以获取最新的提交等。这将非常难看,但 可能 是可行的。我希望有其他选择。 :)
    • 为什么不使用已经配置好的SqsQueue服务?
    • 我想知道什么时候有人会这样问。 :) @Lubo,它已经在使用中,正在向 Jenkins 服务器发送消息,该服务器会立即删除该消息。
    • @fiatjaf,与软件打交道的时间足够长,会对你这样做。 :) 在这种情况下,Github 提供了用于通知 Jenkins 等应用程序的预配置服务——但该服务只能通知 一个 URL,而不是两个不同的 URL。而且我无法控制位于第一个 URL 的 Jenkins 服务器的行为。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-12
    • 2016-01-18
    • 2019-04-11
    • 2013-10-17
    • 2014-06-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多