基本的なクライアントサーバーインフラストラクチャを使用してアプリケーションを構築しようとしています。サーバーインフラストラクチャはAWSでホストされており、クライアントがログオンすると、サーバーにメッセージを送信して、さまざまなインフラストラクチャの考慮事項を設定します。インフラストラクチャの1つは、クライアントがサーバーから更新を取得するためにポーリングできるSQSキューです(最終的にはプッシュサービスを構築したいのですが、現時点ではその方法がわかりません)。
Node AWS SDKを使用して、NodeJSでこのアプリケーションを構築しています。私が抱えている問題は、アプリケーションが使用するSNSトピックにSQSキューをサブスクライブするなど、さまざまなことを行うためにキューARNが必要なことですが、キュー作成APIはARNではなくキューURLを返します。そのため、getQueueAttributes APIを使用してURLからARNを取得できますが、機能していないようです。私がそれを呼ぶときはいつでも、私は応答として未定義になります。これが私のコードです、私が間違っていることを教えてください:
exports.handler = (event, context, callback) => {
new aws.SQS({apiVersion: '2012-11-05'}).createQueue({
QueueName: event.userId
}).promise()
)
.then(data => { /* This has the Queue URL */
new aws.SQS({apiVersion: '2012-11-05'}).getQueueAttributes({
QueueUrl: data.QueueUrl,
AttributeNames: ['QueueArn']
}).promise()
})
.then(data => {
console.log(JSON.stringify(data)); /* prints "undefined" */
})
/* Some more code down here that's irrelevant */
}
ありがとう!
Ersoyの助けを借りて、私はPromisesを書くために({}を使用して)ブロックフォーマットを使用していることに気付きましたが、それらのブロックから何も返さなかったのです。Promiseブロックの最後の値はデフォルトでは戻り値だと思っていましたが、そうではなかったようです。return
SQS APIコマンドの前に追加すると、(async / awaitを使用せずに)機能しました。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加