AWS Lambda menyokong fungsi pencetus daripada pelbagai sumber, termasuk acara S3 dan mesej SQS. Walau bagaimanapun, apabila anda memerlukan fungsi Lambda anda untuk bertindak balas kepada pelbagai pencetus, dilema timbul.
Anda mencuba dua pendekatan:
Pendekatan Pertama:
<code class="go">func main() { lambda.Start(ProcessIncomingS3Events) lambda.Start(ProcessIncomingEvents) }</code>
Kaedah ini gagal kerana pencetus pertama (ProcessIncomingS3Events) akan sentiasa mengendalikan semua acara.
Pendekatan Kedua:
<code class="go">func main() { lambda.Start(ProcessIncomingEvents) }</code>
Dalam senario ini, Lambda tidak dapat mengenal pasti jenis acara, mengakibatkan ralat "Tidak dapat mencari jenis acara" untuk semua pencetus.
Untuk mengatasi batasan ini, anda boleh melaksanakan pengendali berbilang acara menggunakan antara muka Pengendali AWS. Berikut ialah contoh pelaksanaan:
<code class="go">type Handler struct { // Define global variables or context information } func (h Handler) Invoke(ctx context.Context, data []byte) ([]byte, error) { // Unmarshal the data based on different event types var apiGatewayEvent events.APIGatewayProxyRequest if err := json.Unmarshal(data, &apiGatewayEvent); err == nil { // Handle API Gateway event } var snsEvent events.SNSEvent if err := json.Unmarshal(data, &snsEvent); err == nil { // Handle SNS event } return nil, nil } func main() { lambda.StartHandler(Handler{}) }</code>
Dengan pendekatan ini, fungsi Lambda anda boleh mendengar pelbagai acara AWS dan mengendalikannya dengan sewajarnya.
Semasa menggunakan kaedah ini menyediakan fleksibiliti, ingat bahawa fungsi Lambda direka untuk mengendalikan satu jenis acara dengan berkesan. Mencampurkan pelbagai jenis acara mungkin memperkenalkan kerumitan dan isu prestasi.
Atas ialah kandungan terperinci Bagaimana untuk Mengendalikan Pelbagai Pencetus dalam AWS Lambda dengan Golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!