Tengo una clave de partición y una clave de clasificación en la tabla (DynamoDB)
clave de partición: ClientID clave de clasificación: CaseID
El código de eliminación (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; };Si trato de eliminar un elemento en API Getaway:
Recibí este error:
Estado: 403 No se puede eliminar Caso: Excepción de validación: el elemento clave proporcionado no coincide con el esquema
Como puedo solucionar este error.
En AWS Lambda con API Gateway:
me sale este error:
Respuesta "errorType": "TypeError", "errorMessage": "No se puede desestructurar la propiedad 'ClientID' de 'event.pathParameters' porque no está definida".,
Gracias.
El problema está en tus params :
const params = { TableName: "Case", Key: { ClientID: ClientID, CaseID: CaseID } }; Tiene constantes en su código con los mismos nombres que la parte Key de params , por lo que se reemplazaría con el valor de la constante. Debe agregar comillas alrededor de sus claves:
const params = { TableName: "Case", Key: { "ClientID": ClientID, "CaseID": CaseID } };Opción 2 Tuve un problema similar en Python, donde también tuve que agregar tipos de datos (básicamente es DynamoDB JSON)
const params = { TableName: "Case", Key: { "ClientID": {"S": ClientID}, "CaseID": {"S": CaseID} } };De acuerdo con la documentación (para integraciones de proxy), pathParameters es nulo, por lo que tanto ClientID como CaseID estarán vacíos y obtendrá un error de DynamoDB cuando intente obtener un elemento. Examine el formato del formato de entrada y modifique su código en consecuencia.