Apabila membangunkan fungsi AWS Lambda di Golang, mungkin perlu menyokong berbilang pencetus , seperti S3 dan SQS. Walau bagaimanapun, melaksanakan perkara ini boleh mencabar, kerana percubaan awal yang diterangkan dalam soalan selalunya membawa kepada tingkah laku yang tidak diingini.
Untuk menyokong berbilang pencetus secara berkesan, adalah disyorkan untuk melaksanakan antara muka Pengendali AWS, yang mentakrifkan kaedah Invoke dengan tandatangan berikut:
Invoke(ctx context.Context, payload []byte) ([]byte, error)
Dengan melaksanakan antara muka Pengendali, fungsi anda boleh menerima dan memproses data peristiwa mentah daripada pelbagai sumber AWS. Berikut ialah contoh pengendali pelbagai acara:
<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>
Pendekatan ini membolehkan Lambda anda menerima dan memproses acara daripada berbilang perkhidmatan AWS. Walau bagaimanapun, adalah penting untuk mempertimbangkan dengan teliti sama ada pengendali pelbagai acara sejajar dengan seni bina aplikasi anda, kerana fungsi Lambda biasanya direka untuk mengendalikan jenis acara tertentu.
Atas ialah kandungan terperinci Bagaimana Menyokong Berbilang Pencetus Secara Berkesan dalam Fungsi AWS Lambda Anda dengan Golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!