0

我有一个 AWS Lambda 函数,当提供域名作为输入/有效负载时,它会创建一些 route53 记录。它在大约 6 分钟内完成,并且只需要一个输入,即“域名”。

我尝试使用 AWS ChatOps 在 slack 中运行此功能,但看起来 ChatOps 无法运行需要超过 15 秒的功能。我正在尝试创建某种 slack 机器人,它会要求输入/域名,然后运行所需的 lambda 函数。在此之后,它应该提供功能是否成功完成的输出。

例如,假设此任务的 slack bot 名称是“Lambda Runner”,下面是与该任务的示例对话

@Lambda-Runner

-Please type the domain that you want to create route53 records for
* xyz.com (Input from user)
- Processing
- Route53 records has been created for the provided domain

有没有人做过这种类型的任务或有什么建议我应该在哪里寻找这些?谢谢

4

1 回答 1

0

首先,从 AWS Chatbot 运行 AWS CLI 命令的最大超时为15 秒

如果您有更长的运行时间,您应该异步调用它们。对于 lambda,可以将标志调用类型设置为“事件”:

aws lambda invoke --invocation-type Event --function-name my_function_name --region us-east-1 --payload "{}" --cli-binary-format raw-in-base64-out response.json

当你异步调用一个函数时,你不需要等待函数代码的响应。您将事件交给 Lambda,然后 Lambda 处理其余的事情。

因此,与其等待响应,不如在 lambda 结束执行时通知用户。您可以在您的 lambda 函数中添加将消息(指示 route53 记录是否已成功创建)发布到您订阅 Slack 频道的 SNS 主题的逻辑。这样,在将消息发布到 SNS 后,它就会以 Slack 消息的形式呈现给用户。

另一种选择是为异步调用配置目标。这样,您无需在代码中添加 SNS:Publish 操作。它是通过 lambda 配置完成的,并且将核心逻辑与配置分离。

于 2022-01-04T17:07:10.307 回答