Golang を使用した AWS Lambda での複数のトリガーのサポート
AWS Lambda では、S3 トリガーなどのさまざまなイベントに応答する関数を作成できますおよび SQS メッセージ。ただし、1 つの関数で複数のトリガーをサポートするのは困難な場合があります。この記事では、Golang でこのタスクを実行するために必要な手順を説明します。
最初に、S3 イベントと SQS メッセージに対して 2 つの異なるハンドラーを登録しようとしました。ただし、このアプローチでは、最初のハンドラーが毎回呼び出されるか、Lambda がイベント タイプを検出できませんでした。
この制限を克服するには、AWS ハンドラー インターフェイスを使用することをお勧めします。このインターフェイスは、イベントの生のバイトを引数として受け入れる単一のメソッド Invoke を定義します。
以下は、マルチイベント ハンドラーの実装例です。
<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>
このハンドラーを使用すると、同じ Lambda 関数を使用してあらゆる AWS イベントを処理できます。ただし、ラムダは通常、単一タイプのイベントの処理に最適であることに注意することが重要です。マルチイベント ハンドラーを使用すると、テストとデバッグが複雑になる可能性があります。
以上がGolang を使用して AWS Lambda で複数のトリガーをサポートするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。