当前位置: 首页 > 知识库问答 >
问题:

“消息”错误:“禁止”尝试查询Apollo无服务器Lambda服务器

边银龙
2023-03-14

我试着按照这个例子,https://www.apollographql.com/docs/apollo-server/deployment/lambda/,以创建返回“Hello world”的无服务器GraphQL服务器。

根目录基本上只包含两个文件,graphql。js和无服务器。yml:

> tree . -I node_modules
.
├── graphql.js
├── package-lock.json
├── package.json
└── serverless.yml

其中,如示例中所示,graphql。js读取

const { ApolloServer, gql } = require('apollo-server-lambda');

const typeDefs = gql`
  type Query {
    hello: String
  }
`;

const resolvers = {
  Query: {
    hello: () => 'Hello world!',
  },
}

const server = new ApolloServer({ typeDefs, resolvers });

exports.graphqlHandler = server.createHandler();

和无服务器。yml读取

service: apollo-lambda

provider:
  name: aws
  runtime: nodejs8.10
functions:
  graphql:
    handler: graphql.graphqlHandler
    events:
      - http:
          path: graphql
          method: post
          cors: true
      - http:
          path: graphql
          method: get
          cors: true

这似乎已成功部署:

> serverless deploy
Serverless: Packaging service...
Serverless: Excluding development dependencies...
Serverless: Creating Stack...
Serverless: Checking Stack create progress...
.....
Serverless: Stack create finished...
Serverless: Uploading CloudFormation file to S3...
Serverless: Uploading artifacts...
Serverless: Uploading service apollo-lambda.zip file to S3 (4.55 MB)...
Serverless: Validating template...
Serverless: Updating Stack...
Serverless: Checking Stack update progress...
....................................
Serverless: Stack update finished...
Service Information
service: apollo-lambda
stage: dev
region: us-east-1
stack: apollo-lambda-dev
resources: 12
api keys:
  None
endpoints:
  POST - https://e9g6evoks0.execute-api.us-east-1.amazonaws.com/dev/graphql
  GET - https://e9g6evoks0.execute-api.us-east-1.amazonaws.com/dev/graphql
functions:
  graphql: apollo-lambda-dev-graphql
layers:
  None
Serverless: Run the "serverless" command to setup monitoring, troubleshooting and testing.

但是,如果我去操场查询“你好”,我会收到一条“禁止”消息:

那就是,我的

query {
  hello
}

而不是导致响应记录在https://www.apollographql.com/docs/apollo-server/essentials/server/,结果为

{
  "error": {
    "message": "Forbidden"
  }
}

知道我做错了什么吗?


共有2个答案

景凌
2023-03-14

实际上,最初的教程已经有了解决方案(设置GraphQL游乐场)。只需按如下所示编辑您的代码。

const server = new ApolloServer({ 
    typeDefs, 
    resolvers, 
    playground: {
        endpoint: "/dev/graphql"
    }
});
毋承基
2023-03-14

好的,我找到了错误。apollo-server-lamdba存在已知问题。

浏览操场时(在https://e9g6evoks0.execute-api.us-east-1.amazonaws.com/dev/graphql),endpoint的url是带前缀的,但它缺少了部分(serverless.yml中定义的阶段部分)。只需添加它,这将很好地工作。

cfr:https://github.com/apollographql/apollo-server/issues/2136#issuecomment-458465128

 类似资料:
  • 我在web服务器上使用apollo客户端与graphql服务器(也是apollo)通信。我有一个成功的查询,可以正常工作和检索数据,但当我尝试变异时,我会收到新的Apollo错误消息。复制/粘贴到graphiql中的相同突变非常有效。 我已经检查了graphql服务器上的CORS,它已启用并正常运行。我已经将代码中的变体复制并粘贴到graphiql编辑器中,它按预期工作。 有人能为我解释一下吗,或

  • 我在使用fusesource代码将mqtt消息发布到Apollo服务器时遇到了问题。我使用如下代码编写了消息发布程序

  • 使用Node.js创建Lambda Hello world函数,并为Get调用创建API网关触发器,尝试使用URL访问Lambda函数,出现以下错误。 消息:"内部服务器错误"。 (AWS非常新)

  • 我在一个网站上工作,跟踪待办事项列表,并从服务器上提取它。下面有两个示例ajax调用。任务GET调用工作正常,但添加POST不工作。出于某种原因,它给我一个403禁止的错误,结果,不执行代码。 在Django框架中发出ajax Post请求时,我看到了403禁止的错误,我阅读了@yohn发布的链接,但我不理解如何实现这个解决方案。

  • 服务器错误信息来自下述源文件: ·错误消息信息列在share/errmsg.txt文件中。“%d”和“%s”分别代表编号和字符串,显示时,它们将被消息值取代。 ·错误值列在share/errmsg.txt文件中,用于生成include/mysqld_error.h和include/mysqld_ername.h MySQL源文件中的定义。 ·SQLSTATE值列在share/errmsg.txt文

  • 我经常遇到这个错误,以至于php_error日志文件每2秒增加1MB。并且站点非常慢。 我试着把这条线添加到wp-db.php 但这并没有帮助。 Web服务器是IIS 7,最新版本的mysql和wordpress