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

Susan Sarandon
リリース: 2024-11-04 11:55:29
オリジナル
640 人が閲覧しました

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!