Aws Lambda 动态读取用户输入和 return 来自 Dynamo table 的数据

Aws Lambda to read the user input dynamically and return the data from Dynamo table

Lambda 仅在我手动传递值时提供预期结果 (Id = '011010')。

在步骤函数中,根据上一步的逻辑,值“ID”值将是随机的,因为 Id 值不是静态的如何处理这种情况“ExpressionAttributeValues”

我尝试了以下所有语法,但没有成功..

ExpressionAttributeValues: { ':value':  $.External.Id}   
ExpressionAttributeValues: { ':value':  External.Id.$}   
ExpressionAttributeValues: { ':value':  $.Id}   
ExpressionAttributeValues: { ':value':  Id.$}   
ExpressionAttributeValues: { ':value':  event.Id}

Lambda-代码

   'use strict'
const AWS = require('aws-sdk');
const docClient = new AWS.DynamoDB.DocumentClient();

 
var params = {
 TableName: 'temptable',
 IndexName: 'Id-CurrentStatus-index',
 KeyConditionExpression: '#Id= :value',
 ExpressionAttributeNames: { '#Id': 'Id'},
 ExpressionAttributeValues: { ':value': 'M1' }
       
};

async function queryItems(){
 try {
   const data = await docClient.query(params).promise()
   return data
 } catch (err) {
   return err
 }
}

exports.handler = async (event, context) => {
 try {
   const data = await queryItems()
   return { body: JSON.stringify(data) }
 } catch (err) {
   return { error: err }
 }
}

我可以从

   console.log("Memberid :" + JSON.stringify(event.Id, null, 2))

但是如何在

中传递相同的值
    ExpressionAttributeValues: { ':value': 'M1' } 

我尝试了以下语法。没有任何效果

    ExpressionAttributeValues: { ':value': JSON.stringify(event.Id, null, 2) }
    ExpressionAttributeValues: { ':value': event.Id}
    ExpressionAttributeValues: { ':value': event.Id}
    ExpressionAttributeValues: { ':value': Id} 

检查多线程后得到了需要的代码

'use strict'

var AWS = require('aws-sdk');
var mydocumentClient = new AWS.DynamoDB.DocumentClient();

exports.handler = function (event, context, callback) {

    var params = {
        TableName: 'temptable',
        KeyConditionExpression : 'Id= :Id',
        FilterExpression : 'Id in (:Id)',
            ExpressionAttributeValues: {
            ":Id": event.Id
        }

    };
    
      
      mydocumentClient.scan(params, function (err, data){
        if (err) {
            callback(err, null);
        }else{
          callback(null, data);
        }
    })

}