Menyokong Pelbagai Pencetus dalam AWS Lambda dengan Golang
Dalam AWS Lambda, anda boleh mencipta fungsi yang bertindak balas kepada pelbagai acara, seperti pencetus S3 dan mesej SQS. Walau bagaimanapun, ia boleh mencabar untuk menyokong berbilang pencetus dalam satu fungsi. Artikel ini akan membimbing anda melalui langkah-langkah yang diperlukan untuk menyelesaikan tugas ini di Golang.
Anda pada mulanya cuba mendaftarkan dua pengendali berbeza untuk acara S3 dan mesej SQS. Walau bagaimanapun, pendekatan ini menyebabkan sama ada pengendali pertama digunakan setiap kali atau Lambda gagal mengesan jenis acara.
Untuk mengatasi pengehadan ini, kami mengesyorkan menggunakan antara muka Pengendali AWS. Antara muka ini mentakrifkan satu kaedah, Invoke, yang menerima bait mentah acara sebagai hujahnya.
Di bawah ialah contoh pelaksanaan pengendali berbilang acara:
<code class="go">type Handler struct { // Add global variables or context information as needed } func (h Handler) Invoke(ctx context.Context, data []byte) ([]byte, error) { // Unmarshall the event data into different supported event types apiGatewayEvent := new(events.APIGatewayProxyRequest) if err := json.Unmarshal(data, apiGatewayEvent); err != nil { log.Println("Not an API Gateway event") } snsEvent := new(events.SNSEvent) if err := json.Unmarshal(data, snsEvent); err != nil { log.Println("Not an SNS event") } // Perform appropriate actions based on the event type return nil, nil } func main() { lambda.StartHandler(Handler{}) }</code>
Pengendali ini membolehkan anda mengendalikan sebarang acara AWS dengan fungsi Lambda yang sama. Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa lambda biasanya paling sesuai untuk mengendalikan satu jenis acara. Menggunakan pengendali berbilang acara boleh memperkenalkan kerumitan dalam ujian dan penyahpepijatan.
Atas ialah kandungan terperinci Bagaimana untuk Menyokong Pelbagai Pencetus dalam AWS Lambda dengan Golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!