使用 Golang 在 AWS Lambda 中支持多个触发器
在 AWS Lambda 中,您可以创建响应各种事件的函数,例如 S3 触发器和 SQS 消息。然而,在单个函数中支持多个触发器可能具有挑战性。本文将指导您完成在 Golang 中完成此任务所需的步骤。
您最初尝试为 S3 事件和 SQS 消息注册两个不同的处理程序。但是,这种方法会导致每次调用第一个处理程序或 Lambda 无法检测事件类型。
要克服此限制,我们建议使用 AWS Handler 接口。此接口定义了一个方法 Invoke,它接受事件的原始字节作为其参数。
下面是多事件处理程序的示例实现:
<code class="go">type Handler struct { // Add global variables or context information as needed } func (h Handler) Invoke(ctx context.Context, data []byte) ([]byte, error) { // Unmarshall the event data into different supported event types apiGatewayEvent := new(events.APIGatewayProxyRequest) if err := json.Unmarshal(data, apiGatewayEvent); err != nil { log.Println("Not an API Gateway event") } snsEvent := new(events.SNSEvent) if err := json.Unmarshal(data, snsEvent); err != nil { log.Println("Not an SNS event") } // Perform appropriate actions based on the event type return nil, nil } func main() { lambda.StartHandler(Handler{}) }</code>
此处理程序允许您使用相同的 Lambda 函数处理任何 AWS 事件。然而,值得注意的是,lambda 通常最适合处理单一类型的事件。使用多事件处理程序可能会导致测试和调试变得复杂。
以上是如何使用 Golang 支持 AWS Lambda 中的多个触发器?的详细内容。更多信息请关注PHP中文网其他相关文章!