首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AWS步函数,ValidationException

AWS步函数,ValidationException
EN

Stack Overflow用户
提问于 2021-07-29 12:19:26
回答 2查看 211关注 0票数 0

在使用逐步函数从AWS dynamoDB获取数据时,我得到了错误“提供的键元素与模式不匹配”。

逐步函数定义

代码语言:javascript
复制
{
  "Comment": "This is your state machine",
  "StartAt": "Choice",
  "States": {
    "Choice": {
      "Type": "Choice",
      "Choices": [
        {
          "Variable": "$.data.Type",
          "StringEquals": "GET",
          "Next": "DynamoDB GetItem"
        },
        {
          "Variable": "$.data.Type",
          "StringEquals": "PUT",
          "Next": "DynamoDB PutItem"
        }
      ]
    },
    "DynamoDB GetItem": {
      "Type": "Task",
      "Resource": "arn:aws:states:::dynamodb:getItem",
      "Parameters": {
        "TableName": "KeshavDev",
        "Key": {
          "Email": {
            "S": "$.Email"
          }
        }
      },
      "End": true
    },
    "DynamoDB PutItem": {
      "Type": "Task",
      "Resource": "arn:aws:states:::dynamodb:putItem",
      "Parameters": {
        "TableName": "KeshavDev",
        "Item": {
          "City": {
            "S.$": "$.City"
          },
          "Email": {
            "S.$": "$.Email"
          },
          "Address": {
            "S.$": "$.Address"
          }
        }
      },
      "InputPath": "$.data",
      "End": true
    }
  }
}

输入

代码语言:javascript
复制
{
  "data": {
    "Type": "GET",
     "Email": "demo@gmail.com"
  }
}

误差

{ "resourceType":"dynamodb“、”资源“:"getItem”、“错误”:"DynamoDB.AmazonDynamoDBException“、”原因“:”提供的键元素与架构不匹配(服务: AmazonDynamoDBv2;状态代码: 400;错误代码: ValidationException;请求ID: a78c3d7a-ca3f-4483-b986-1735201d4ef2;代理: null)“}

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-07-29 12:45:58

getItem任务相比,我看到了一些潜在的问题。

  • 我认为Key字段应该是S.$,类似于putItem任务中的内容。
  • 没有ResultPath属性来告诉状态机将结果放在哪里。
  • 您的路径可能不正确,请尝试$.data.Email
代码语言:javascript
复制
    "DynamoDB GetItem": {
      "Type": "Task",
      "Resource": "arn:aws:states:::dynamodb:getItem",
      "Parameters": {
        "TableName": "KeshavDev",
        "Key": {
          "Email": {
            "S.$": "$.data.Email"
          }
        }
      },
      "ResultPath": "$.DynamoDB",
      "End": true
    },

老实说,我不确定所有这些是否都是导致验证错误的原因--这是一些值得尝试的事情。

另一方面,有一些用于Amazon语言的开源验证器,但在这种情况下,它们并没有多大帮助,并且说您的代码是有效的。

票数 1
EN

Stack Overflow用户

发布于 2021-08-02 11:39:27

它的工作,上面的JD D指导步骤,还通过添加两个关键的步骤函数定义。DynamoDb有两把钥匙。

  1. 主分区键
  2. 主排序键
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68575817

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档