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

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

Susan Sarandon
Susan Sarandonオリジナル
2024-11-04 11:55:29692ブラウズ

How can I implement multiple event triggers in AWS Lambda using Golang?

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

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