簡體   English   中英

SQS 在 AWS lambda 使用@aws-sdk node.js 發送消息錯誤

[英]SQS send message error using @aws-sdk node js at AWS lambda

我正在嘗試將消息從我的 AWS Lambda 發送到 AWS SQS,但它工作不安靜並向我拋出錯誤。

2022-12-26T14:58:31.651Z    282ada00-ea4a-45b6-afe4-e3a7f16e8c5a    INFO    MissingParameter: The request must contain the parameter Label.
    at throwDefaultError (/var/task/node_modules/@aws-sdk/smithy-client/dist-cjs/default-error-handler.js:8:22)
    at deserializeAws_queryAddPermissionCommandError (/var/task/node_modules/@aws-sdk/client-sqs/dist-cjs/protocols/Aws_query.js:292:51)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async /var/task/node_modules/@aws-sdk/middleware-serde/dist-cjs/deserializerMiddleware.js:7:24
    at async /var/task/node_modules/@aws-sdk/middleware-signing/dist-cjs/middleware.js:14:20
    at async /var/task/node_modules/@aws-sdk/middleware-retry/dist-cjs/retryMiddleware.js:27:46
    at async /var/task/node_modules/@aws-sdk/middleware-logger/dist-cjs/loggerMiddleware.js:5:22
    at async sendToSQS (/var/task/sendToSqs.js:28:20)
    at async exports.handler (/var/task/index.js:19:22) {
  '$fault': 'client',
  '$metadata': {
    httpStatusCode: 400,
    requestId: 'bf137e9a-24bc-52bd-9416-22b99c6b82f5',
    extendedRequestId: undefined,
    cfId: undefined,
    attempts: 1,
    totalRetryDelay: 0
  },
  Type: 'Sender',
  Code: 'MissingParameter',
  Detail: ''
}

我不確定我需要包含哪些參數以及以何種方式使其工作。 這是我發送消息的代碼,我從我的主模塊發送一個簡單的數據值作為我要發送到 SQS 的消息的一部分。

const { SQSClient, AddPermissionCommand } = require("@aws-sdk/client-sqs");


 const sendToSQS=async(data)=>{
    const client = new SQSClient({ region: "eu-west-1" });


    var params = {
      DelaySeconds: 0,
      MessageAttributes: {
        "Author": {
          DataType: "String",
          StringValue: "event params"
        },
      },
      MessageGroupId:`${data}`,
      MessageBody:JSON.stringify(data),
      QueueUrl:"https://sqs.eu-west-1.amazonaws.com/336070547288/Salesforce-cqd-orders-delayer-retry"
    };
    
    
    try{
        
    const command = new AddPermissionCommand(params);
        
    let queueRes = await client.send(command);
    
    console.info("[LAMBDA/@sqs] retry mechanism has succeeded. Data sent to SQS successfully")
    console.log(queueRes)
   
         const response = {
            statusCode: 200,
            body: "Data sent from lambda to sqs successfully.",
        }; 
    return response
            
        
        
    }catch(error){
        
        console.error("[LAMBDA/@s] retry mechanism has failed. Data wasn't sent to SQS")
        console.log(error)
        
            
        const response = {
            statusCode: 200,
            body: "Lambda to SQS error",
        };
    
        return response;
        
}


 }


 module.exports={sendToSQS}

您的消息具有不需要的delaySeconds和僅 FIFO 隊列需要的MessageGroupId

您可以從此處查看 sendMessage 代碼參考AWS Wiki

此外,檢查此 API 參考以獲取發送消息

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM