Golang を使用した AWS Lambda での複数のイベント トリガーのサポート
AWS Lambda では、複数のイベント トリガーを処理することで、関数がさまざまなソースに応答できるようになります。 S3 バケットの変更と SQS キューからのメッセージとして。 Golang で複数のトリガーを実装する方法は次のとおりです。
AWS ハンドラー インターフェイスの使用
複数のイベントをサポートするには、Invoke メソッドを定義する AWS ハンドラー インターフェイスを実装します。
<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>
Main 関数
main 関数で、マルチイベント ハンドラーを登録します。
<code class="go">func main() { lambda.StartHandler(Handler{}) }</code>
複数のトリガーの例
S3 と SQS イベントの両方をリッスンするには、次の関数を追加します。
<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>
考慮事項
このアプローチにより、次のような処理が可能になります。単一のラムダで複数のトリガーを使用する場合は、パフォーマンスと保守性を最適化するために、イベント タイプごとに個別のラムダを使用することを一般的に推奨します。
以上がGolang を使用して AWS Lambda に複数のイベントトリガーを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。