php エディター Baicao が、今回は golang での AWS Lambda に関する質問をお届けします。 AWS SQS を使用して Lambda 関数をトリガーすると、型エラーが発生する場合があります。この問題により、Lambda 関数が SQS メッセージを正常に処理できなくなり、開発者に無用なトラブルが発生する可能性があります。この記事では、この問題の原因を調査し、開発者がこのタイプ エラーのジレンマをうまく解決するのに役立つ解決策を提供します。
APIゲートウェイとSQSをトリガーとするラムダを開発しています。
リーリーしかし、sqs または apigateway イベントを使用すると、私のスイッチ タイプは認識されません。これは常にデフォルトのステートメントに属します。たとえば、sqs の場合は次のイベントを使用します:
リーリーそして次のメッセージを受け取りました:
リーリー私が何を間違えたかわかりますか? golangを使うのが初めてなので、ここで迷ってしまいました。
さらに、イベントを regcode.handlersqs
に直接送信しようとしましたが、型変換エラーが発生しました。このような:###
リーリー
AWS ラムダ ハンドラーは、
func のパラメーターの型を反映し、署名に一致する
event 型を作成します。
func の 2 番目のパラメータを
event events.SQSEvent として宣言すると、AWS はそのタイプ
events.SQSEvent を取得し、これをオブジェクトとして作成し、それを渡してください。
func で
event events.APIGatewayProxyRequest を使用した場合、AWS は
event が
events.APIGatewayProxyRequest## であることを反映します。 #そしてそれを作成します。
言い換えれば、AWS は受信リクエストが SQS から来たのか API から来たのかをチェックしません。これはハンドラーの署名に基づいてのみ決定されます。したがって、
で event インターフェース{}
を使用すると、AWS は作成するように指定したものを正確に作成します。これは、任意のインターフェースではなく、インターフェース{}
です。他のタイプ。
これがスイッチが機能しない理由です。この問題を解決する最も簡単な方法は、SQS 用と API 用の 2 つのラムダ関数を使用することです。
以上がgolangのaws lambdaがタイプエラーのあるsqsによってトリガーされるの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。