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

PHPz
リリース: 2024-02-09 13:46:13
転載
699 人が閲覧しました

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 までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!