簡體   English   中英

API 使用復合鍵的網關 dynamodb 查詢 - SerializationException

[英]API Gateway dynamodb query using composite key - SerializationException

我正在測試使用 API 網關直接查詢 Dynamodb 表,使用復合鍵。 我已經設置了資源 /goalcohort/{goalid} 和查詢參數 cohortId。

我已將 cohortId 添加到方法執行中的 URL 查詢字符串參數(不確定這是否是正確的方法。所有視頻示例僅使用分區鍵,而不是同時使用 PK 和 SK)。

然后,我將此映射模板添加到 Post 查詢集成請求中: ''' { "TableName": "cohort", "KeyConditionExpression": "#goalId =:goalId AND #cohortId =:cohortId", ExpressionAttributeNames={ "# goalId": "goalId", "#cohortId": "cohortId" }, ExpressionAttributeValues={ ":goalId": { "S": "$input.params('goalid')" }, ":cohortId": { " S": "$input.params('cohortId')" } } } '''(我知道傳遞的參數有錯別字,是 goalid,而不是 GoalId - 因此 expressionattrbutevalue 顯示 goalid(小寫 i) - 我會修復一次已經解決了這個問題)。

如果我在 Dynamobd 中針對表運行查詢,它會工作: 在此處輸入圖像描述

如果我嘗試使用相同的參數運行 API 網關測試: 在此處輸入圖像描述

日志顯示輸入的參數正常:''' Sat Dec 31 19:03:32 UTC 2022:轉換后的端點請求正文:{ "TableName": "cohort", "KeyConditionExpression": "#goalId =:goalId AND #cohortId =:cohortId", ExpressionAttributeNames={ "#goalId": "goalId", "#cohortId": "cohortId" }, ExpressionAttributeValues={ ":goalId": { "S": "3615fbac-1413-4cb2-9f8f-a3b745862cb0 " }, ":cohortId": { "S": "1a198952-6693-4409-b3ac-12069492eb2c" } } } 2022 年 12 月 31 日星期六 19:03:32 UTC:發送請求至https://dynamodb.us-east -2.amazonaws.com/?Action=查詢'''

但是,響應正文顯示:{"__type":"com.amazon.coral.service#SerializationException"}

日志:UTC 2022 年 12 月 31 日星期六 19:03:32:向https://dynamodb.us-east-2.amazonaws.com/?Action=Query UTC 2022 年 12 月 31 日星期六 19:03:32 發送請求:收到響應。 狀態:400,集成延遲:6 毫秒 UTC 2022 年 12 月 31 日星期六 19:03:32:端點響應標頭:{Server=Server,Date=Sat,2022 年 12 月 31 日 19:03:32 GMT,Content-Type=application/x -amz-json-1.0, Content-Length=60, Connection=keep-alive, x-amzn-RequestId=SRP9NKEU3C4KBJTQOM69TJR4QJVV4KQNSO5AEMVJF66Q9ASUAAJG, x-amz-crc32=3948637019} 周六 12 月 31 日 19:03:32 UTC 2022 之前的端點響應主體轉換:{“__type”:“com.amazon.coral.service#SerializationException”} UTC 2022 年 12 月 31 日星期六 19:03:32:轉換后的方法響應主體:{“__type”:“com.amazon.coral.service# SerializationException"} 2022 年 12 月 31 日星期六 19:03:32:方法響應標頭:{X-Amzn-Trace-Id=Root=1-63b08784-73f59a3e1691136c5e00259f,Content-Type=application/json} 12 月 31 日星期六 19:03: 32 UTC 2022:成功完成執行 Sat Dec 31 19:03:32 UTC 2022:方法已完成,狀態:200

我究竟做錯了什么? 所有幫助表示贊賞。

我認為您的映射模板中存在錯誤,因為它不是有效的 json。請嘗試使用此 json 作為您的映射模板。

{
   "TableName":"cohort",
   "KeyConditionExpression":"#goalId = :goalId AND #cohortId = :cohortId",
   "ExpressionAttributeNames":{
      "#goalId":"goalId",
      "#cohortId":"cohortId"
   },
   "ExpressionAttributeValues":{
      ":goalId":{
         "S":"$input.params('goalid')"
      },
      ":cohortId":{
         "S":"$input.params('cohortId')"
      }
   }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM