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”`