ホームページ  >  記事  >  バックエンド開発  >  golangのaws lambdaがタイプエラーのあるsqsによってトリガーされる

golangのaws lambdaがタイプエラーのあるsqsによってトリガーされる

PHPz
PHPz転載
2024-02-09 13:46:13780ブラウズ

golang中的aws lambda由sqs触发并出现类型错误

php エディター Baicao が、今回は golang での AWS Lambda に関する質問をお届けします。 AWS SQS を使用して Lambda 関数をトリガーすると、型エラーが発生する場合があります。この問題により、Lambda 関数が SQS メッセージを正常に処理できなくなり、開発者に無用なトラブルが発生する可能性があります。この記事では、この問題の原因を調査し、開発者がこのタイプ エラーのジレンマをうまく解決するのに役立つ解決策を提供します。

質問内容

APIゲートウェイとSQSをトリガーとするラムダを開発しています。

リーリー

しかし、sqs または apigateway イベントを使用すると、私のスイッチ タイプは認識されません。これは常にデフォルトのステートメントに属します。たとえば、sqs の場合は次のイベントを使用します:

リーリー

そして次のメッセージを受け取りました:

リーリー

私が何を間違えたかわかりますか? golangを使うのが初めてなので、ここで迷ってしまいました。

さらに、イベントを regcode.handlersqs に直接送信しようとしましたが、型変換エラーが発生しました。このような:### リーリー

sqsevent は空です。

解決策

私が何を間違っているのかわかりますか?

AWS ラムダ ハンドラーは、

func のパラメーターの型を反映し、署名に一致する event 型を作成します。

したがって、

func の 2 番目のパラメータを event events.SQSEvent として宣言すると、AWS はそのタイプ events.SQSEvent を取得し、これをオブジェクトとして作成し、それを渡してください。

同様に、

funcevent events.APIGatewayProxyRequest を使用した場合、AWS は eventevents.APIGatewayProxyRequest## であることを反映します。 #そしてそれを作成します。 言い換えれば、AWS は受信リクエストが SQS から来たのか API から来たのかをチェックしません。これはハンドラーの署名に基づいてのみ決定されます。したがって、

func

event インターフェース{} を使用すると、AWS は作成するように指定したものを正確に作成します。これは、任意のインターフェースではなく、インターフェース{}です。他のタイプ。 これがスイッチが機能しない理由です。この問題を解決する最も簡単な方法は、SQS 用と API 用の 2 つのラムダ関数を使用することです。

以上がgolangのaws lambdaがタイプエラーのあるsqsによってトリガーされるの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。