Rumah > pembangunan bahagian belakang > Golang > Menyelesaikan Isu Laluan Kosong dalam Fungsi Go Lambda dengan API HTTP Gateway API

Menyelesaikan Isu Laluan Kosong dalam Fungsi Go Lambda dengan API HTTP Gateway API

Patricia Arquette
Lepaskan: 2024-12-26 08:49:09
asal
944 orang telah melayarinya

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

Apabila menggunakan API HTTP berasaskan Golang/Docker ke AWS Lambda, anda mungkin menghadapi isu di mana sifat laluan dalam APIGatewayProxyRequest kosong. Ini berlaku kerana fungsi Lambda menerima peristiwa daripada API Gateway API HTTP (v2), yang menggunakan struktur peristiwa berbeza berbanding API REST (v1).

Masalahnya

APIGatewayProxyRequest direka untuk API REST yang lebih lama dan akan menghasilkan medan laluan kosong apabila digunakan dengan API HTTP. Penyelesaiannya adalah dengan menggunakan struktur acara yang betul: APIGatewayV2HTTPRequest.

Penyelesaian

Tukar kepada menggunakan struct APIGatewayV2HTTPRequest, yang termasuk medan RawPath untuk mengendalikan penghalaan dengan betul.

Kod asal daripada dokumentasi mereka (yang tidak berfungsi):

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)
}
Salin selepas log masuk

Berikut ialah contoh fungsi Lambda yang dikemas kini:

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)
}
Salin selepas log masuk

Menggunakan Lambda Anda

  1. Gunakan fungsi Lambda ke AWS.
  2. Buat API HTTP dalam Gateway API dan sepadukannya dengan fungsi Lambda anda.
  3. Uji titik akhir: Menghantar permintaan kepada /health harus mengembalikan mesej kejayaan, manakala mana-mana laluan lain mengembalikan 404.

Kesimpulan

Bertukar kepada APIGatewayV2HTTPRequest menyelesaikan isu laluan kosong dalam fungsi Lambda anda apabila menggunakan API HTTP Gateway API (v2). Pastikan anda menguji titik akhir anda untuk memastikan penghalaan laluan berfungsi seperti yang diharapkan.

Sumber daripada isu github:

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

Atas ialah kandungan terperinci Menyelesaikan Isu Laluan Kosong dalam Fungsi Go Lambda dengan API HTTP Gateway API. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan