【问题标题】:AWS Sdk response not showing in Lambda FunctionAWS SDK 响应未显示在 Lambda 函数中
【发布时间】:2021-02-19 05:36:19
【问题描述】:

我正在研究 lambda 函数并使用节点、js 创建 AWS-SDK 历史指标报告的方法。该方法运行成功,但没有显示任何响应。看看回复。

这是我的代码

function getKeyByValue(object, value) {
    return Object.keys(object).find(key =>  
            object[key] === value); 
} 
exports.handler = async (event) => {
    const AWS = require('aws-sdk');
    var connect = new AWS.Connect({ apiVersion: '2017-08-08' });
    let queueARN = event.queueARN || null;
    const connectInstanceId = process.env.instanceID;
    let flag =0, nextToken = null;
    let queueARNsObject = {}, queueARNsArray=[], queueTypeObject={},listQueuesResult;
    console.log('At line 12 entring do while loop....')
    do{
        console.log('How many times do I stay here???')
        let listQueuesParams = {
            InstanceId: connectInstanceId, /* required */
            QueueTypes: [
                "STANDARD",
            ],
            NextToken: nextToken,
        };
        let listQueuesPromise = connect.listQueues(listQueuesParams).promise();
        listQueuesResult = await listQueuesPromise;
        // console.log(listQueuesResult);
        listQueuesResult.QueueSummaryList.forEach(queue => {
            if(queueARN != null){
                if (queue.Arn == queueARN){
                    queueARNsArray = [queue.Arn];  
                    queueARNsObject[queue.Name]= queue.Arn;
                    queueTypeObject[queue.QueueType]= queue.Arn;
                    flag = 1;
                    return;
                }
            }else{
                queueARNsObject[queue.Name]= queue.Arn;
                queueTypeObject[queue.QueueType]= queue.Arn;
                queueARNsArray.push(queue.Arn);
                nextToken = listQueuesResult.NextToken;
            }
        });
    }while (flag=0 && nextToken != null);
    const HistoricalMetrics = [
        {
            Name : "CONTACTS_HANDLED",
            Unit : "COUNT",
            Statistic : "SUM"
        },
        {
            Name : "CONTACTS_ABANDONED",
            Unit : "COUNT",
            Statistic : "SUM"
        },
      ];
    // Metrics params
    var getHistoricalMetricsParams = {
        InstanceId: connectInstanceId,
        StartTime: 1593099900,
        EndTime: 1593129300,
        Filters: {
            Channels: ["VOICE"],
            Queues: queueARNsArray
        },
        HistoricalMetrics: HistoricalMetrics,
        Groupings: ["QUEUE"]
    };
    // console.log(getHistoricalMetricsParams);
    // get current metrics by queues
    var getHistoricalMetricsPromise = connect 
        .getMetricData(getHistoricalMetricsParams)
        .promise();
    var getHistoricalMetricsResult = await getHistoricalMetricsPromise;
    console.log("historical metrics",getHistoricalMetricsResult);
    // console.log("current |||||||| 1 metrics:", JSON.stringify(getCurrentMetricsResult));
    let queueMetricsArray = [];
    if(getHistoricalMetricsResult.MetricResults.length){
        getHistoricalMetricsResult.MetricResults.forEach(queue => {
            let queueMetrics = {
                "Queue_Name" : getKeyByValue(queueARNsObject ,queue.Dimensions.Queue.Arn),
                "CallsHandled": queue.Collections[0].Value, 
                "CallsAbanoded": queue.Collections[1].Value, 
            }
            queueMetricsArray.push(queueMetrics);
            console.log("TYPE||||", getKeyByValue(queueTypeObject ,queue.Dimensions.Queue.Arn))
        });
    }

    const response = {
        responseCode: 200,
        metricResults: queueMetricsArray
    };
    return response;

};

我不知道为什么它没有显示任何内容。如果你们中的任何人知道请帮我解决它谢谢。我不知道缺少什么我几乎检查了所有内容,但我什么也没得到。

【问题讨论】:

  • 在您的代码中 queueMetricsArray 仅在此填充 if(getHistoricalMetricsResult.MetricResults.length),检查 getHistoricalMetricsResult 是否有 MetricResults

标签: node.js aws-lambda aws-sdk


【解决方案1】:

您可以查看几个常规领域:

  1. 指定区域。 AWS.Connect({ apiVersion: '2017-08-08', region:'xxxxx' });

  2. 直接使用 Await 和 listQueues 方法

let listQueuesPromise = await connect.listQueues(listQueuesParams).promise();

  1. 检查权限 - 确保有足够的权限

  2. Lambda 配置 - 增加超时和内存大小

PS:控制台日志listQueuesPromise返回了什么?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-24
    • 1970-01-01
    • 2020-04-15
    • 2021-02-17
    • 2021-05-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多