Menyokong Pelbagai Pencetus Peristiwa dalam AWS Lambda dengan Golang
Dalam AWS Lambda, pengendalian berbilang pencetus peristiwa membolehkan fungsi bertindak balas kepada pelbagai sumber, seperti apabila baldi S3 berubah dan mesej daripada baris gilir SQS. Begini cara untuk melaksanakan berbilang pencetus dalam Golang:
Menggunakan Antara Muka Pengendali AWS
Untuk menyokong berbilang acara, laksanakan antara muka Pengendali AWS, yang mentakrifkan kaedah Invoke:
<code class="go">import ( "context" "github.com/aws/aws-lambda-go/events" ) type Handler struct { // Global variables or context information } func (h Handler) Invoke(ctx context.Context, data []byte) ([]byte, error) { // Handle events based on their types apiGatewayEvent := events.APIGatewayProxyRequest{} if err := json.Unmarshal(data, &apiGatewayEvent); err != nil { log.Println("Not an API Gateway event") } snsEvent := events.SNSEvent{} if err := json.Unmarshal(data, &snsEvent); err != nil { log.Println("Not an SNS event") } return nil, nil }</code>
Fungsi Utama
Dalam fungsi utama, daftarkan pengendali pelbagai acara:
<code class="go">func main() { lambda.StartHandler(Handler{}) }</code>
Contoh Pelbagai Pencetus
Untuk mendengar kedua-dua acara S3 dan SQS, tambahkan fungsi berikut:
<code class="go">func processS3Trigger(config *Config, event events.S3Event) error { ... log.Println("Got S3 Event") return nil } func processSQSMessage(config *Config) error { ... log.Println("Defaulting to SQS") return nil }</code>
Pertimbangan
Sementara pendekatan ini membolehkan anda mengendalikan berbilang pencetus dalam satu lambda, biasanya disyorkan untuk menggunakan lambda berasingan bagi setiap jenis acara untuk mengoptimumkan prestasi dan kebolehselenggaraan.
Atas ialah kandungan terperinci Bagaimanakah saya boleh melaksanakan pelbagai pencetus peristiwa dalam AWS Lambda menggunakan Golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!