在使用逐步函数从AWS dynamoDB获取数据时,我得到了错误“提供的键元素与模式不匹配”。
逐步函数定义
{
"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
}
}
}输入
{
"data": {
"Type": "GET",
"Email": "demo@gmail.com"
}
}误差
{ "resourceType":"dynamodb“、”资源“:"getItem”、“错误”:"DynamoDB.AmazonDynamoDBException“、”原因“:”提供的键元素与架构不匹配(服务: AmazonDynamoDBv2;状态代码: 400;错误代码: ValidationException;请求ID: a78c3d7a-ca3f-4483-b986-1735201d4ef2;代理: null)“}
发布于 2021-07-29 12:45:58
与getItem任务相比,我看到了一些潜在的问题。
Key字段应该是S.$,类似于putItem任务中的内容。ResultPath属性来告诉状态机将结果放在哪里。$.data.Email "DynamoDB GetItem": {
"Type": "Task",
"Resource": "arn:aws:states:::dynamodb:getItem",
"Parameters": {
"TableName": "KeshavDev",
"Key": {
"Email": {
"S.$": "$.data.Email"
}
}
},
"ResultPath": "$.DynamoDB",
"End": true
},老实说,我不确定所有这些是否都是导致验证错误的原因--这是一些值得尝试的事情。
另一方面,有一些用于Amazon语言的开源验证器,但在这种情况下,它们并没有多大帮助,并且说您的代码是有效的。
发布于 2021-08-02 11:39:27
它的工作,上面的JD D指导步骤,还通过添加两个关键的步骤函数定义。DynamoDb有两把钥匙。
https://stackoverflow.com/questions/68575817
复制相似问题