Amazon dynamodb 向DynamoDB批量插入AppSync失败并返回null
我有以下解析器设置:Amazon dynamodb 向DynamoDB批量插入AppSync失败并返回null,amazon-dynamodb,graphql,aws-appsync,Amazon Dynamodb,Graphql,Aws Appsync,我有以下解析器设置: #set($questions = []) #foreach($item in ${ctx.args.questions}) #set($item.id = $util.dynamodb.toDynamoDBJson($util.autoId())) $util.qr($questions.add($util.dynamodb.toMapValues($item))) #end { "version" : "2018-05-29", "ope
#set($questions = [])
#foreach($item in ${ctx.args.questions})
#set($item.id = $util.dynamodb.toDynamoDBJson($util.autoId()))
$util.qr($questions.add($util.dynamodb.toMapValues($item)))
#end
{
"version" : "2018-05-29",
"operation" : "BatchPutItem",
"tables" : {
"QuestionTable": $utils.toJson($questions)
}
}
以及以下GraphQL模式:
input CreateQuestionInput {
text: String
sectionId: ID!
}
input CreateScoreInput {
score: Int!
questionId: ID!
userId: ID!
}
input CreateSectionInput {
title: String
subSection: String
}
input DeleteQuestionInput {
id: ID!
}
input DeleteScoreInput {
id: ID!
}
input DeleteSectionInput {
id: ID!
}
type Mutation {
...
createQuestion(input: CreateQuestionInput!): Question
batchCreateQuestion(questions: [CreateQuestionInput]!): [Question]
}
type Query {
getSection(id: ID!): Section
listSections(filter: TableSectionFilterInput, limit: Int, nextToken: String): SectionConnection
getScore(id: ID!): Score
listScores(filter: TableScoreFilterInput, limit: Int, nextToken: String): ScoreConnection
getQuestion(id: ID!): Question
listQuestions(filter: TableQuestionFilterInput, limit: Int, nextToken: String): QuestionConnection
}
type Question {
id: ID!
text: String
sectionId: ID!
}
type QuestionConnection {
items: [Question]
nextToken: String
}
type Schema {
query: Query
}
type Score {
id: ID!
score: Int!
questionId: ID!
userId: ID!
}
type ScoreConnection {
items: [Score]
nextToken: String
}
type Section {
id: ID!
title: String
subSection: String
questions: [Question]
}
type SectionConnection {
items: [Section]
nextToken: String
}
input TableQuestionFilterInput {
id: TableIDFilterInput
text: TableStringFilterInput
sectionId: TableIDFilterInput
}
input UpdateQuestionInput {
id: ID!
text: String
sectionId: ID
}
(我已经修改了一些模式,因为它相当大)
当我尝试运行查询时:
mutation BatchCreateQuestions($sec: ID!) {
batchCreateQuestion(questions: [
{
text: "Tester 1"
sectionId: $sec
},
{
text: "Tester 2",
sectionId: $sec
}
]) {
id
text
sectionId
}
}
使用以下变量:
{ "sec": "abc123" }
我得到的答复是:
{
"data": {
"batchCreateQuestion": [
null,
null
]
}
}
当我检查DynamoDB表时,它没有保存值。我已授予此数据源的dynamodb完全权限,但仍然没有任何乐趣。解析程序中的响应模板是什么样子的?它应该是
$util.toJson($ctx.result.data.QuestionTable)
,因为上面的表名是QuestionTable
,因为它会自动转换到响应上下文中。结果表明,我已经向一个类似命名的角色授予了批写权限,而不是对该数据源产生影响的角色。如果您看到类似问题,请检查您的IAM角色/权限。我真傻 它是$util.toJson($ctx.result.data.QuestionTable)
它的最终答案是什么?我是斯图克请给我电话answer@VikramsinhGaikwad我需要确保已为该DynamoDB表的AppSync授予写入批处理IAM权限,请参见“DynamoDB:BatchWriteItem”`