ホームページ > バックエンド開発 > Golang > API Gateway HTTP API を使用した Go Lambda 関数の空のパスの問題を解決する

API Gateway HTTP API を使用した Go Lambda 関数の空のパスの問題を解決する

Patricia Arquette
リリース: 2024-12-26 08:49:09
オリジナル
948 人が閲覧しました

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. Lambda 関数を AWS にデプロイします。
  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 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート