ホームページ  >  記事  >  バックエンド開発  >  Golang を使用して AWS Lambda で複数のトリガーをサポートするにはどうすればよいですか?

Golang を使用して AWS Lambda で複数のトリガーをサポートするにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-04 01:57:291058ブラウズ

How to Support Multiple Triggers in AWS Lambda with Golang?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。