Golang에서 AWS Lambda 함수를 개발할 때 다중 트리거를 지원해야 할 수 있습니다. , S3 및 SQS와 같은. 그러나 질문에 설명된 초기 시도는 의도하지 않은 동작으로 이어지는 경우가 많기 때문에 이를 구현하는 것이 어려울 수 있습니다.
여러 트리거를 효과적으로 지원하려면 AWS 핸들러 인터페이스를 구현하는 것이 좋습니다. 이는 다음 서명으로 Invoke 메서드를 정의합니다.
Invoke(ctx context.Context, payload []byte) ([]byte, error)
Handler 인터페이스를 구현하면 함수가 다양한 AWS 소스로부터 원시 이벤트 데이터를 수신하고 처리할 수 있습니다. 다음은 다중 이벤트 핸들러의 예입니다.
<code class="go">type Handler struct { // Add global variables or context information here } func (h Handler) Invoke(ctx context.Context, payload []byte) ([]byte, error) { // Parse the data as different event types for demonstration purposes apiGatewayEvent := new(events.APIGatewayProxyRequest) if err := json.Unmarshal(payload, apiGatewayEvent); err != nil { log.Println("Not a API Gateway event") } snsEvent := new(events.SNSEvent) if err := json.Unmarshal(payload, snsEvent); err != nil { log.Println("Not an SNS event") } // Handle the events as needed return nil, nil } func main() { lambda.StartHandler(Handler{}) }</code>
이 접근 방식을 사용하면 Lambda가 여러 AWS 서비스에서 이벤트를 수신하고 처리할 수 있습니다. 그러나 Lambda 함수는 일반적으로 특정 유형의 이벤트를 처리하도록 설계되므로 다중 이벤트 핸들러가 애플리케이션의 아키텍처와 일치하는지 여부를 신중하게 고려하는 것이 중요합니다.
위 내용은 Golang을 사용하여 AWS Lambda 함수에서 여러 트리거를 효과적으로 지원하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!