AWS Lambda 支持来自各种来源的触发函数,包括 S3 事件和 SQS 消息。但是,当您需要 Lambda 函数响应多个触发器时,就会出现困境。
您尝试了两种方法:
第一种方法:
<code class="go">func main() { lambda.Start(ProcessIncomingS3Events) lambda.Start(ProcessIncomingEvents) }</code>
此方法失败,因为第一个触发器 (ProcessIncomingS3Events) 始终会处理所有事件。
第二种方法:
<code class="go">func main() { lambda.Start(ProcessIncomingEvents) }</code>
在这种情况下,Lambda 无法识别事件类型,导致所有触发器出现“无法找到事件类型”错误。
要克服这些限制,您可以使用 AWS Handler 接口实现多事件处理程序。这是一个示例实现:
<code class="go">type Handler struct { // Define global variables or context information } func (h Handler) Invoke(ctx context.Context, data []byte) ([]byte, error) { // Unmarshal the data based on different event types var apiGatewayEvent events.APIGatewayProxyRequest if err := json.Unmarshal(data, &apiGatewayEvent); err == nil { // Handle API Gateway event } var snsEvent events.SNSEvent if err := json.Unmarshal(data, &snsEvent); err == nil { // Handle SNS event } return nil, nil } func main() { lambda.StartHandler(Handler{}) }</code>
通过这种方法,您的 Lambda 函数可以侦听各种 AWS 事件并相应地处理它们。
使用此方法时提供灵活性,请记住 Lambda 函数旨在有效处理单一类型的事件。混合多种事件类型可能会带来复杂性和性能问题。
以上是如何使用 Golang 处理 AWS Lambda 中的多个触发器?的详细内容。更多信息请关注PHP中文网其他相关文章!