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

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

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-03 02:26:02422ブラウズ

How to Support Multiple Triggers in AWS Lambda with Go?

Go を使用した AWS Lambda での複数のトリガーのサポート

複数のトリガーに応答できる AWS Lambda 関数の作成は、一般的なニーズです。この記事では、AWS SDK を使用して Go でこれを実現する方法について説明します。

失敗した試行

最初に、複数のトリガーを有効にするために 2 つの試行が行われました:

  • 個別のイベント ハンドラーの定義:

    • lambda.Start(ProcessIncomingS3Events)
    • lambda.Start(ProcessIncomingEvents)
    • ただし、すべてのトリガーは ProcessIncomingS3Events.
  • Switching Event Types:

    • lambda.Start(ProcessIncomingEvents)
    • ProcessIncomingEvents(イベント インターフェース{})
    • このアプローチでは、すべてのトリガーに対して「イベント タイプが見つかりませんでした」というエラーが返されました。

解決策: AWS ハンドラー インターフェイスを実装する

AWS ハンドラー インターフェイスは、単一の Lambda 関数で複数のイベントを処理する方法を提供します。これは、生のイベント データを受信して​​応答を返す Invoke メソッドを定義します。

さまざまなイベントを処理する実装例を以下に示します。

<code class="go">import (
    "context"
    "encoding/json"
    "github.com/aws/aws-lambda-go/events"
    "log"
)

type Handler struct {}

func (h Handler) Invoke(ctx context.Context, data []byte) ([]byte, error) {
    // Create and unmarshal event objects
    apiGatewayEvent := new(events.APIGatewayProxyRequest)
    json.Unmarshal(data, apiGatewayEvent)

    snsEvent := new(events.SNSEvent)
    json.Unmarshal(data, snsEvent)

    // Handle events as needed

    return nil, nil
}

func main() {
    lambda.StartHandler(Handler{})
}</code>

考慮事項

Lambda で複数のトリガーをサポートすることは可能ですが、慎重に使用することが重要です。 Lambda は、特定の種類のイベントを効率的に処理するように設計されています。複数のイベント タイプを混在させる場合は慎重に検討する必要があり、パフォーマンスと信頼性に影響を与える可能性があります。

以上がGo を使用して AWS Lambda で複数のトリガーをサポートするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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