> 백엔드 개발 > Golang > API Gateway HTTP API를 사용하여 Go Lambda 함수의 빈 경로 문제 해결

API Gateway HTTP API를 사용하여 Go Lambda 함수의 빈 경로 문제 해결

Patricia Arquette
풀어 주다: 2024-12-26 08:49:09
원래의
945명이 탐색했습니다.

Solving the Empty Path Issue in Go Lambda Functions with API Gateway HTTP API

Golang/Docker 기반 HTTP API를 AWS Lambda에 배포할 때 APIGatewayProxyRequest의 경로 속성이 비어 있는 문제가 발생할 수 있습니다. 이는 Lambda 함수가 REST API(v1)와 다른 이벤트 구조를 사용하는 API Gateway HTTP API(v2)에서 이벤트를 수신하기 때문에 발생합니다.

문제

APIGatewayProxyRequest는 이전 REST API용으로 설계되었으며 HTTP API와 함께 사용하면 빈 경로 필드가 생성됩니다. 해결책은 올바른 이벤트 구조(APIGatewayV2HTTPRequest.

)를 사용하는 것입니다.

솔루션

라우팅을 올바르게 처리하려면 RawPath 필드가 포함된 APIGatewayV2HTTPRequest 구조체를 사용하도록 전환하세요.

문서의 원본 코드(작동하지 않음):

package main

import (
    "context"
    "github.com/aws/aws-lambda-go/events"
    "github.com/aws/aws-lambda-go/lambda"
)

func handler(ctx context.Context, event events.APIGatewayProxyRequest) (events.APIGatewayProxyResponse, error) {
    response := events.APIGatewayProxyResponse{
        StatusCode: 200,
        Body:       "\"Hello from Lambda!\"",
    }
    return response, nil
}

func main() {
    lambda.Start(handler)
}
로그인 후 복사

업데이트된 Lambda 함수 예는 다음과 같습니다.

package main

import (
    "github.com/aws/aws-lambda-go/events"
    "github.com/aws/aws-lambda-go/lambda"
)

func handler(request events.APIGatewayV2HTTPRequest) (*events.APIGatewayV2HTTPResponse, error) {
    if request.RawPath == "/health" {
        return &events.APIGatewayV2HTTPResponse{
            StatusCode: 200,
            Body:       "Health check passed",
        }, nil
    }
    return &events.APIGatewayV2HTTPResponse{
        StatusCode: 404,
        Body:       "Not Found",
    }, nil
}

func main() {
    lambda.Start(handler)
}
로그인 후 복사

Lambda 배포

  1. AWS에 Lambda 함수를 배포합니다.
  2. API Gateway에서 HTTP API를 생성하고 이를 Lambda 함수와 통합하세요.
  3. 엔드포인트 테스트: /health에 요청을 보내면 성공 메시지가 반환되어야 하지만 다른 경로에서는 404가 반환됩니다.

결론

APIGatewayV2HTTPRequest로 전환하면 API Gateway HTTP API(v2)를 사용할 때 Lambda 함수에서 빈 경로 문제가 해결됩니다. 경로 라우팅이 예상대로 작동하는지 확인하려면 엔드포인트를 테스트하세요.

github 문제에서 출처:

https://github.com/aws/aws-lambda-go/issues/60

위 내용은 API Gateway HTTP API를 사용하여 Go Lambda 함수의 빈 경로 문제 해결의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿