AppSync 期望什么响应格式?

What response format does AppSync expect?

我是 AWS 的新手,需要建议。我在 AppSync 中描述了一个 GraphQL 模式。方案很简单,只有一个Query,叫做getEmployees。作为此查询的解析器,我在 Python 中使用 AWS Lambda 函数。此 AWS Lambda 函数可以正常运行。日志中没有错误。当我发出请求时,我总是得到空值。可能是什么问题呢?我错过了什么?

AppSync 中的 GraphQL 模式:

type Employees {
    employeeId: String!
    employeeFirstName: String
    employeeLastName: String
}

type EmployeesPayload {
    pagingState: String
    employees: [Employees]
}

type Query {
    getEmployees(organizationId: String!, fetchSize: Int!, pagingState: String): EmployeesPayload
}

schema {
    query: Query
}

Python中的 AWS Lambda 函数:

def lambda_handler(event, context):
    organization_id = event['arguments']['organizationId']
    fetch_size = event['arguments']['fetchSize']
    paging_state = event['arguments']['pagingState']

    # Business logic

    response = json.dumps(
        {
            "pagingState": "c76f05f9-337d-44dc-b131-c1dfee3ceefb",
            "employees": [
                {
                    "employeeId": "bd811630-0d42-49cd-8d63-7679d9eb96bb",
                    "employeeFirstName": "James",
                    "employeeLastName": "Bond"
                }
            ]
        },
        indent=4,
        sort_keys=True,
        ensure_ascii=False,
        default=utils.json_serializer
    )

    return response

我这样查询:

query MyQuery {
  getEmployees(organizationId: "5d354323-8b47-447e-8bc7-67dae57248b0", fetchSize: 5, pagingState: null) {
    pagingState
    employees {
      employeeId
      employeeFirstName
      employeeLastName
    }
  }
}

响应:

{
  "data": {
    "getEmployees": {
      "pagingState": null,
      "employees": null
    }
  }
}

P.S. 在 AppSync 设置中,我禁用了请求和响应映射模板。

好吧,我终于找到了答案。在反复试验的帮助下,我意识到 AWS Lambda 函数不需要序列化 ​​JSON 中的数据。灭菌由 AppSync 本身处理。

def lambda_handler(event, context):
    organization_id = event['arguments']['organizationId']
    fetch_size = event['arguments']['fetchSize']
    paging_state = event['arguments']['pagingState']

    # Business logic

    response = {
        "pagingState": "c76f05f9-337d-44dc-b131-c1dfee3ceefb",
        "employees": [
            {
                "employeeId": "bd811630-0d42-49cd-8d63-7679d9eb96bb",
                "employeeFirstName": "James",
                "employeeLastName": "Bond"
            }
        ]
    }

    return response