Golang で AWS Lambda 関数を開発する場合、複数のトリガーをサポートする必要がある場合があります、S3 や SQS など。ただし、質問に記載されている最初の試みは意図しない動作につながることが多いため、これを実装するのは困難な場合があります。
複数のトリガーを効果的にサポートするには、AWS ハンドラー インターフェイスを実装することをお勧めします。これは、次のシグネチャを持つ Invoke メソッドを定義します:
Invoke(ctx context.Context, payload []byte) ([]byte, error)
Handler インターフェイスを実装することにより、関数はさまざまな AWS ソースから生のイベント データを受信して処理できます。マルチイベント ハンドラーの例を次に示します。
<code class="go">type Handler struct { // Add global variables or context information here } func (h Handler) Invoke(ctx context.Context, payload []byte) ([]byte, error) { // Parse the data as different event types for demonstration purposes apiGatewayEvent := new(events.APIGatewayProxyRequest) if err := json.Unmarshal(payload, apiGatewayEvent); err != nil { log.Println("Not a API Gateway event") } snsEvent := new(events.SNSEvent) if err := json.Unmarshal(payload, snsEvent); err != nil { log.Println("Not an SNS event") } // Handle the events as needed return nil, nil } func main() { lambda.StartHandler(Handler{}) }</code>
このアプローチにより、Lambda は複数の AWS サービスからイベントを受信して処理できます。ただし、Lambda 関数は通常、特定の種類のイベントを処理するように設計されているため、マルチイベント ハンドラーがアプリケーションのアーキテクチャに適合するかどうかを慎重に検討することが重要です。
以上がGolang を使用して AWS Lambda 関数で複数のトリガーを効果的にサポートするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。