小编Was*_*ily的帖子

Lambda 函数中的 DynamoDB BatchGetItem 动态 TableName

我正在使用 dynamoDb 作为我的数据库为我当前的应用程序构建一个无服务器后端。我使用 aws sam 将我的 lambda 函数上传到 aws。此外,我将所有表名作为全局变量传递给 lambda(nodejs8.10 运行时),以便process.env在我的 lambda 函数内的对象上访问它们。我面临的问题如下:每当我batchGetItem在 dynamoDB 上运行该方法时,我必须传递一个字符串作为我的表名,我无法根据全局变量动态更改表名:

const AWS = require('aws-sdk');
const dynamodb = new AWS.DynamoDB({region: 'ap-south-1'}, {apiVersion:'2012-08-10'});

const params = {
    RequestItems: {
        //needs to be a string, cannot be a variable containing a string
        'tableName': {
            Keys: [] //array of keys
         }
    }
}
dynamodb.batchGetItem(params, (err, result) => {
// some logic
})
Run Code Online (Sandbox Code Playgroud)

我需要将表名作为字符串传递,本质上是将表名硬编码到我的函数中。其他 DynamoDB 操作(例如getItem方法)接受参数对象中表名的键值对:

const tableName = process.env.TableName;
const getItemParams = { …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services amazon-dynamodb aws-lambda serverless

2
推荐指数
1
解决办法
2214
查看次数