質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
AWS Lambda

AWS Lambdaは、クラウド上でアプリを実行できるコンピューティングサービス。サーバーのプロビジョニングや管理を要せず複数のイベントに対してコードを実行します。カスタムロジック用いた他AWSサービスの拡張やAWSの規模やパフォーマンスを用いたバックエンドサービスを作成できます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Q&A

0回答

878閲覧

aws-sdk sqs.sendMessage関数でコールバックが2回実行される

kijitoraAyaya

総合スコア0

AWS Lambda

AWS Lambdaは、クラウド上でアプリを実行できるコンピューティングサービス。サーバーのプロビジョニングや管理を要せず複数のイベントに対してコードを実行します。カスタムロジック用いた他AWSサービスの拡張やAWSの規模やパフォーマンスを用いたバックエンドサービスを作成できます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

0グッド

0クリップ

投稿2021/01/08 06:22

前提・実現したいこと

AWSSQSから受信したメッセージを AWS Lambda で受信後、AWSSQSに対してメッセージを送信する処理をnode.jsを使用し作成しております。
LambdaからSQSへの疎通は確認できている状態なのですが、
メッセージが2重登録される不具合が発生しており、解消方法をご教授いただければと思います。

該当のソースコード

Lambdaのハンドラ関数(開始 async 宣言で非同期)
受信したメッセージ毎のループ(開始)
const 戻り値=本処理------★
受信したメッセージ毎のループ(狩猟)
Lambdaのハンドラ関数(終了)

★本処理 (開始 async宣言で非同期)
DB取得処理
DB取得結果を受けてのループ(開始)
取得結果を受けてSQSパラメータを構築する処理
AWS-SDKを使用してSQSへメッセージを送信する処理-------★★ 
DB取得結果を受けてのループ(終了)
本処理(終了)

★★sqsメッセージ送信処理 ▼
const AWS = require('aws-sdk');
const sqs = new AWS.SQS({apiVersion: '2012-11-05',<エンドポイントURL>});
module.exports.sqsSendMessage = async function(messageBody){
var params = {
QueueUrl: global.sqsReqestUrl,
// DelaySeconds:5,
MessageBody:JSON.stringify(messageBody)
}
console.log(1);
let res = await sqs.sendMessage(params,function(err,data){
console.trace();
if (err){
console.log(err,err.stack);
throw new Error();
//return false;
}else{
console.log(2);
console.log(data);
//return true;
}
}).promise();
console.log('res =' + res);
console.log(3);
}
★★sqsメッセージ送信処理 ▲

言語名
node.js 12系

コンソール出力より
aws-sdkのsendMessage関数のコールバックのみが2回呼び出されていることがわかりましたが、
sdkの中で行っていることなので、回避の手段がわかりません。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問