Che*_*ter 7 amazon-web-services amazon-dynamodb aws-lambda
我已经使用VS Code(节点js)成功测试了dynamodb.transactWriteItems,但是当我将代码移至Lambda时,它始终会引发类型错误:dynamodb.transactWriteItems不是函数。请注意,我没有使用documentClient,所以声明dynamodb = new AWS.DynamoDB()
不是解决方案。
如何检查Lambda使用的AWS-SDK(我的npm aws-sdk是v2.372.0),如果这是问题的根本原因,我如何在Lambda上使用正确的AWS-SDK版本?
data = await dynamodb.transactWriteItems({
ReturnConsumedCapacity: "INDEXES",
ReturnItemCollectionMetrics: "SIZE",
TransactItems: [
{
Put: {
TableName: envVarPOTableName,
Item: {
"poNumber": {S: poNumber},
"supplierName": {S: event.supplierName},
"poStatus" : {S: "Created"},
"rmItemsArr": {L: [
{ M:{
"type": {S:event.rmItemObj.type},
"description": {S:event.rmItemObj.description}
},
}
]}
}
}
},
{
Update: {
TableName: envVarRMTableName,
Key:{
"type": {S: event.rmItemObj.type},
"description": {S: event.rmItemObj.description}
},
UpdateExpression: "set #pnA = list_append(#pnA, :vals)",
ExpressionAttributeNames: {
"#pnA" : "poNumbersArr"
},
ExpressionAttributeValues:{
":vals" : {L:[{S:poNumber}]}
},
ReturnValuesOnConditionCheckFailure: "ALL_OLD"
}
}
]
}).promise();
Run Code Online (Sandbox Code Playgroud)
我最初设法使自己在这一点上加倍混淆,所以我想我会分享以防其他人做同样的事情......
我的问题是我正在使用:
const dynamoDB = new AWS.DynamoDB.DocumentClient()
并试图拨打.transactWriteItems
无效的电话。如果您使用的是 DocumentClient,则需要.transactWrite
改用。
要使用.transactWriteItems
您的 dynamodb 必须设置为const dynamoDB = new AWS.DynamoDB()
正如@schof 上面所说,最新的 lambda aws sdks 将支持这个 f() https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html (在撰写本文时最高为 2.488.0适用于 10.x 和 8.10)
归档时间: |
|
查看次数: |
1209 次 |
最近记录: |