繁体   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