AWS Appync查询解析器返回null

时间:2019-08-29 11:18:50

标签: elasticsearch graphql amazon-vpc aws-appsync

我有以下查询:

query kitchen {
  getItemKitchen(id:"fakeIdHere") {
    id
    kitchenName
  }
}

返回:

{
  "data": {
    "getItemKitchen": null
  }
}

并且已经在模式中定义了查询,如下所示:

type Query @aws_cognito_user_pools
@aws_api_key {
    getItemKitchen(id: ID!): ItemKitchen

解析器需求模板为:

{
    "version":"2017-02-28",
    "operation":"GET",
    "path":"/myType/myIndex/_search",
    "params": {
        "body": {
            "query": {
                "match": {
                    "id.keyword": "${context.arguments.id}"
                }
            }
        }
    }
}

还有我的响应模板:

$util.toJson($context.result.get("_source"))

我希望得到以下答复:

{
"result": {
        "_source": {
            "id": "HelloWorldTestId",
            "createdAt": "Hello, world!"
        }
    }
}

我也有一个运行良好的突变,使我能够在dynamodb上创建项目,然后将其发送到elasticsearch以通过lambda函数进行查询。

我已经检查了弹性搜索中存在的项目。

我的Elasticsearch和DynamoDb实例都位于VPC中。在添加VPC之前,我能够查询elasticsearch实例并获得响应。 根据文档,这种响应意味着没有附加解析器,但是这些突变似乎正常工作。我尝试删除并重新连接解析器,但没有任何反应。

任何帮助将不胜感激,因为这变得越来越令人沮丧。

1 个答案:

答案 0 :(得分:1)

当前,AppSync不支持VPC后面的Elasticsearch实例。 请在此处查看文档的第一行:

这就是为什么在添加VPC之前查询对您有效的原因。