首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Amazon网关用REST包装graphQL(appsync)

使用Amazon网关用REST包装graphQL(appsync)
EN

Stack Overflow用户
提问于 2020-03-24 08:12:41
回答 3查看 2.6K关注 0票数 4

我已经部署了一个带有appsync的graphQL服务器。问题是,我们的客户更喜欢标准REST。我正在寻找用REST包装graphQL查询的最简单方法。

我正在考虑使用Amazon网关来创建REST端点,并将lambda集成到api网关后面。这样,我就可以让lambda函数发送一个固定的graphQL查询/突变,并修改响应。

但是,从下面的图片中可以看到,我在Amazon网关中找到了AWS服务集成选项。我想知道是否可以直接将appsync集成到api网关,而无需使用lambda。我从aws文档中搜索了它,但是找不到任何相关的信息。

Amazon网关设置捕获:

  1. 可以在不使用lambda的情况下通过将appsync集成到API网关来将graphQL API与REST包装起来吗?就像我从捕获的图像中发现的一样?
  2. ,如果有,有什么例子或教程吗?
  3. ,如果没有,我应该只集成lambda吗?有什么更好的主意或建议吗?
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-03-31 02:27:32

我了解了如何将appsync集成到API网关。您可以通过将AWS服务集成设置为AppSync数据平面来完成它。

在“方法设置”页面中:

https://YOUR_AWS_Subdomain.appsync-api.your-region.amazonaws.com/graphql)

  • HTTP

  • 集成类型= AWS服务

  • AWS服务= AppSync数据平面

  • AWS子域=从应用程序同步端点获取它(例如:方法= POST
  1. Action = Use
  2. 重写(可选)=GraphQL

G 214

对我来说效果很好。

票数 2
EN

Stack Overflow用户

发布于 2020-07-27 08:52:57

如果有人使用OpenAPI规范来定义APIGW,请使用以下方法:

代码语言:javascript
复制
/graphql:
  post:
    x-amazon-apigateway-integration:
      type: "AWS"
      httpMethod: "POST"
      uri: arn:aws:apigateway:<APIGW_REGION>:<APPSYNC_URL_ID>.appsync-api:path/graphql
      credentials: <INVOCATION_ROLE_ARN>

https://docs.aws.amazon.com/general/latest/gr/appsync.html#appsync_region_data_plane https://docs.aws.amazon.com/apigateway/api-reference/resource/integration/#type

票数 1
EN

Stack Overflow用户

发布于 2021-08-02 21:46:59

添加到@BSD的解决方案:

  • IAM角色:

代码语言:javascript
复制
- should grant Trust relationship to ApiGateway {   "Version": "2012-10-17",   "Statement": [     {       "Effect": "Allow",       "Principal": {         "Service": "apigateway.amazonaws.com"       },       "Action": "sts:AssumeRole",       "Condition": {}     }   ] }
代码语言:javascript
复制
- should have policy to allow to access AppSync endpoint {     "Version": "2012-10-17",     "Statement": [         {             "Action": [                 "appsync:GraphQL"             ],             "Resource": [                 "arn:aws:appsync:us-east-1:{AWS-Account-Number}:apis/{AppSync-API-ID}/\*"             ],             "Effect": "Allow"         }     ] }

  • 通过APIGW发送查询/突变的格式:假设您的AppSync查询是:

代码语言:javascript
复制
query MyQuery {
  foo(request: {bar: "abc123", baz: "xyz"}) {
    a
    b
    c
  }
}

此查询转化为以下JSON:

代码语言:javascript
复制
{
  "query": "query MyQuery {foo(request: {bar: \"abc123\", baz: \"xyz\"}) {a b c} }"
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60827105

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档