繁体   English   中英

AWS Lambda 到 DynamoDB - 项目中缺少密钥 PK

[英]AWS Lambda to DynamoDB - Missing the key PK in the item

我通过 Postman 向 API 网关发送POST请求。

请有人帮我理解如何解决错误,并让它知道Item object 中的PK是什么?

错误:

2022-01-18T07:47:45.636Z    f9879b45-b7d5-22ab-9439-cec7c1c8c332    
ERROR   ValidationException: One or more parameter values were invalid: Missing the key PK in the item
-- DELETED MANY at Reqests --
at Request.callListeners (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:116:18) {
code: 'ValidationException',
time: 2022-01-18T07:47:45.519Z,
requestId: 'G7LU6ADFQKB26JDHJ6QXADDB3JVV4KQNSO5AEMVJF66Q9ASUAAJG',
statusCode: 400,
retryable: false,
retryDelay: 5.218698231501939

Lambda Function:

"use strict";
require("dotenv").config();
// const config = require("../../config/keys");
const AWS = require("aws-sdk");
AWS.config.update({ region: "eu-west-1" });
const documentClient = new AWS.DynamoDB.DocumentClient();

const addJobListing = async (data) => {
  const body = {
    Item: {
      PK: data["PK"],
      SK: data["SK"],
      "Days Off": data["Days Off"],
      "Start Date": data["Start Date"],
      "Job ID": data["Job ID"],
      "Contract Length": data["Contract Length"],
      "Expiration Date": data["Expiration Date"],
      Created: {
        date: data["Created Date"],
        time: data["Created Time"],
      },
      Insurance: data["Insurance"],
      Title: data["Title"],
      Holidays: data["Holidays"],
      Ages: data["Ages"],
      "Flight Reimbursement": data["Flight Reimbursement"],
      Curriculum: data["Curriculum"],
      "Account ID": data["Account ID"],
      "Minimum Monthly Salary Before Tax":
        data["Minimum Monthly Salary Before Tax"],
      "Housing Allowance": data["Housing Allowance"],
      Responsibilities: data["Responsibilities"],
      "Job Closest Metro": data["Job Closest Metro"],
      "Job Requirements": data["Job Requirements"],
      "Job Type": data["Job Type"],
      "Z-VISA Reimbursement": data["Z-VISA Reimbursement"],
      Meals: data["Meals"],
      Subject: data["Subject"],
      "Salary Information": data["Salary Information"],
      "Maximum Monthly Salary Before Tax":
        data["Maximum Monthly Salary Before Tax"],
      "Vacancy Status": data["Vacancy Status"],
      "Contract Completion Bonus": data["Contract Completion Bonus"],
      "Last Modified": {
        date: data["Modified Date"],
        time: data["Modified Time"],
      },
    },
    TableName: "table-name-hidden",
  };

  return await documentClient
    .put(body)
    .promise()
    .then((data) => console.log(data.Attributes))
    .catch(console.error);
};

exports.handler = async (event, context, callback) => {
  console.log("EVENT BODY", event.body);
  const response = await addJobListing(JSON.parse(event.body));
  return {
    statusCode: 200,
    headers: {
      "Access-Control-Allow-Origin": "*", // Required for CORS support to work
      "Access-Control-Allow-Credentials": true, // Required for cookies, authorization headers with HTTPS
    },
    body: JSON.stringify(response),
  };
};

JSON:

{
    "Item": {
        "PK": "ACC#1000",
        "SK": "JOBID#01.17/01/2022",
        "Days Off": "Weekends",
      "Start Date": "17/09/2022",
      "Job ID": "01",
      "Contract Length": "Two Years",
      "Expiration Date": "17/09/2022",
      "Created": {
            "date": "17/09/2022",
            "time": "00:00:00"
      },
      "Insurance": "Insurance",
      "Title": "Title Of Vacancy",
      "Holidays": "Amount of Holidays",
      "Ages": "Ages of Children",
      "Flight Reimbursement": "Flight Reimbursement",
      "Curriculum": "Curriculum",
      "Account ID": "10",
      "Minimum Monthly Salary Before Tax": "Minimum Monthly Salary Before Tax",
      "Housing Allowance":"Housing Allowance",
      "Responsibilities": "Responsibilities",
      "Job Closest Metro": "Job Closest Metro",
      "Job Requirements": "Job Requirements",
      "Job Type": "Job Type",
      "Z-VISA Reimbursement": "Z-VISA Reimbursement",
      "Meals": "Meals",
      "Subject": "Subject",
      "Salary Information": "Salary Information",
      "Maximum Monthly Salary Before Tax": "Maximum Monthly Salary Before Tax",
      "Vacancy Status": "Vacancy Status",
      "Contract Completion Bonus": "Contract Completion Bonus",
      "Last Modified": {
            "date": "17/09/2022",
            "time": "00:00:00"
      }
      }
}

基于提供的 JSON ,而不是data["PK"] ,应该是data["Item"]["PK"]吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM