我在表 (DynamoDB) 上有一個磁區鍵和一個排序鍵
磁區鍵:ClientID 排序鍵:CaseID
洗掉代碼(Lambda):
'use strict';
const AWS = require('aws-sdk');
exports.handler = async (event, context) => {
const documentClient = new AWS.DynamoDB.DocumentClient();
let responseBody = "";
let statusCode = 0;
const {ClientID} = event.pathParameters;
const {CaseID} = event.pathParameters;
const params = {
TableName: "Case",
Key: {
ClientID: ClientID,
CaseID: CaseID
}
};
try {
const data = await documentClient.delete(params).promise();
responseBody = JSON.stringify(data.Items.key);
statusCode = 204;
} catch(err) {
responseBody = `Unable to delete Case: ${err}`;
statusCode = 403;
}
const response = {
statusCode: statusCode,
headers: {
"Content-Type": "application/json",
"access-control-allow-origin":"*"
},
body: responseBody
};
return response;
};
如果我嘗試洗掉 API Getaway 上的元素:
我收到此錯誤:
狀態:403 無法洗掉案例:ValidationException:提供的關鍵元素與架構不匹配
我該如何解決這個錯誤。
謝謝你。
uj5u.com熱心網友回復:
問題出在您的params:
const params = {
TableName: "Case",
Key: {
ClientID: ClientID,
CaseID: CaseID
}
};
您的代碼中有與 的Key部分同名params的常量,因此它將被替換為常量的值。您應該在鍵周圍添加引號:
const params = {
TableName: "Case",
Key: {
"ClientID": ClientID,
"CaseID": CaseID
}
};
選項 2 我在 Python 中遇到了類似的問題,我還必須添加資料型別(基本上是 DynamoDB JSON)
const params = {
TableName: "Case",
Key: {
"ClientID": {"S": ClientID},
"CaseID": {"S": CaseID}
}
};
uj5u.com熱心網友回復:
根據檔案(用于代理集成) pathParameters 為空,因此 ClientID 和 CaseID 都將為空,并且當您嘗試獲取專案時,DynamoDB 會出現錯誤。檢查輸入格式的格式并相應地修改您的代碼。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/352772.html
標籤:javascript 亚马逊网络服务 接口 aws-lambda aws-dynamodb
上一篇:將用戶添加到ssh到AwsEc2
