Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在无服务器项目中拆分API网关服务

如何在无服务器项目中拆分API网关服务
EN

Stack Overflow用户
提问于 2020-04-18 16:28:26
回答 1查看 340关注 0票数 1

我正在处理每个堆栈最多只能使用200个资源的CloudFormation限制。似乎解决方案是将我的服务(serverless.yml文件)分成多个文件。我尝试过自动化方法和they don't work for me。所以,我正在研究手动的。但我不知道该怎么做。

这是我有的一个示例文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
service:                        serverless-test

provider:
  name:                         aws
  runtime:                      nodejs12.x
  endpointType:                 REGIONAL

plugins:
- serverless-aws-alias

functions:
  authorizerFunc:
    handler:                    code.authorizer

  users:
    handler:                    code.users
    events:
      - http:
          path:                 /user
          integration:          lambda
          authorizer:           authorizerFunc
          method:               get
          cors:                 true
          request:
            passThrough:        WHEN_NO_TEMPLATES
            template:
              application/json: '{ "action": "list_users" }'
      - http:
          path:                 /user
          integration:          lambda
          authorizer:           authorizerFunc
          method:               post
          cors:                 true
          request:
            passThrough:        WHEN_NO_TEMPLATES
            template:
              application/json: '{ "action": "create_user", "payload": $input.body }'

  posts:
    handler:                    code.posts
    events:
      - http:
          path:                 /post
          integration:          lambda
          authorizer:           authorizerFunc
          method:               get
          cors:                 true
          request:
            passThrough:        WHEN_NO_TEMPLATES
            template:
              application/json: '{ "action": "list_posts" }'
      - http:
          path:                 /post
          integration:          lambda
          authorizer:           authorizerFunc
          method:               post
          cors:                 true
          request:
            passThrough:        WHEN_NO_TEMPLATES
            template:
              application/json: '{ "action": "create_post", "payload": $input.body }'

有没有人能帮我把这个文件分成两份或三份?您可以随意以任何方式拆分它(只要生成的文件单独具有较少的资源)。只是JS代码应该保持不变。另外,请密切关注serverless-aws-alias插件。这是我服务的关键部分。当然,目的是部署多个文件应该与部署单个文件相同。

EN

回答 1

Stack Overflow用户

发布于 2020-04-19 17:22:17

据我所知,您应该能够通过拆分网关来处理此问题。

我建议首先创建一个部署了共享部件、应用编程接口网关和授权程序的serverless.yml

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
service: api-gw

provider:
  name: aws
  runtime: nodejs12.x
  stage: dev
  region: eu-west-2

functions:
  authorizerFunc:
    handler: handler.handler

plugins:
  - serverless-aws-alias

resources:
  Resources:
    MyApiGW:
      Type: AWS::ApiGateway::RestApi
      Properties:
        Name: MyApiGW

  Outputs:
    apiGatewayRestApiId:
      Value:
        Ref: MyApiGW
      Export:
        Name: MyApiGateway-restApiId

    apiGatewayRestApiRootResourceId:
      Value:
        Fn::GetAtt:
          - MyApiGW
          - RootResourceId
      Export:
        Name: MyApiGateway-rootResourceId

其余部分将根据资源数量进行拆分:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
service: service-users

provider:
  name: aws
  runtime: nodejs12.x
  region: eu-west-2
  apiGateway:
    restApiId:
      'Fn::ImportValue': MyApiGateway-restApiId
    restApiRootResourceId:
      'Fn::ImportValue': MyApiGateway-rootResourceId
    websocketApiId:
      'Fn::ImportValue': MyApiGateway-websocketApiId

plugins:
  - serverless-aws-alias

functions:
  users:
    handler:                    handler.handler
    events:
      - http:
          path:                 /user
          integration:          lambda
          authorizer:
            arn: authorizerFuncARN
          method:               get
          cors:                 true
          request:
            passThrough:        WHEN_NO_TEMPLATES
            template:
              application/json: '{ "action": "list_users" }'
      - http:
          path:                 /user
          integration:          lambda
          authorizer:           
            arn: authorizerFuncARN
          method:               post
          cors:                 true
          request:
            passThrough:        WHEN_NO_TEMPLATES
            template:
              application/json: '{ "action": "create_user", "payload": $input.body }'

这里也有一个解释:https://serverless.com/framework/docs/providers/aws/events/apigateway#easiest-and-cicd-friendly-example-of-using-shared-api-gateway-and-api-resources

您还应该考虑将您的授权器arn导出到以后可以在其他无服务器的yaml中重用的东西,比如ssm?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61292542

复制
相关文章
无服务器云函数python实时新闻爬虫(自带api网关)
https://github.com/birdsofsummer/news_spider
用户1348396
2019/08/13
3.6K0
无服务器云函数python实时新闻爬虫(自带api网关)
多业务下api网关如何部署 如何对服务进行拆分?
网关这个词顾名思义就是网络进入的关口。常所说的api关口担任着访问控制,资格审查,身份认证,熔断保护等等重要的不同责任。 api服务网关是整个微服务平台系统的唯一认证关口。然而在部署 api网关的时候却又是一个复杂的问题。多业务下api网关如何部署呢?
用户8715145
2021/12/17
7350
api网关怎么找到微服务器 网关对微服务的作用
一般意义上的api网关是一个系统服务器,它的主要作用是起到一个监控和拦截以及身份验证的作用,作为一个统一的入口点,它可以协调不同访问端对于后台服务端的访问。对所有的访问ID进行统一的身份验证,从而保障系统的正常运行。 api网关怎么找到微服务器?
用户8715145
2021/12/21
1.1K0
腾讯云API:无服务器函数
无服务器函数是一个很好玩的东西,可以通过这个程序跑一些脚本,在一定程度上,是很方便的。但是作为新鲜事物,一般很难被大家接受,所以,我今天在这里,就做一个小例子,来激发一下大家的Idea,创造力。
None-xiaomi
2018/06/20
5.1K0
api网关怎么构建微服务 api网关怎么维护?
在互联网应用不断更新发展的当今,应用端拓展了无数的交叉通讯功能,每一个应用的功能模块越来越丰富,并且开展了多种不同的访问入口,因此服务端的访问负载量其实是非常大的。 api网关的建设正式解决了这一燃眉之急。它可以灵活调用不同入口的访问者,经过api网关的验证,直达所需要的不同微服务当中。 api网关怎么构建微服务的呢?
用户8715145
2021/12/21
2.4K0
api服务网关的作用 独立api网关的好处
api网关作为微服务系统当中的重要一环已经广泛的应用在了各个不同应用当中, api网关是为服务架构里面的唯一接入口,起到了服务治理和服务管控的作用。 api网关同样可以作为一个服务器来处理后台运行的相关问题。下面来详细了解一下api服务网关的作用。
用户8715145
2021/12/15
1.1K0
微服务与API 网关(上): 为什么需要API网关?
本文是来自于Macro在一次大会上的一个分享。 本系列共有两个部分,主要关注我们如何以及为什么要在我们的微服务应用中部署API 网关。第二部分主要关注我们如何把Mashape的开源网关组件Kong运用到我们自己的微服务架构当中。 目录 0:00 微服务与网关(Microservices & API Gateways) 大家好,我叫Macro,今天我们谈论有关微服务和网关的话题。我是Mashape的CTO,也同时是开源网关Kong的开发者之一。Kong是一个API网关,今天我们就来窥探一下它究竟是
ImportSource
2018/04/03
2.6K0
微服务与API 网关(上): 为什么需要API网关?
api网关服务接口如何设置 api网关的优势作用
api网关顾名思义就是从外面进入里面的一扇门口。客户端的用户通过网关才能直达服务端的各个不同的功能系统当中。因此api网关充当的是一个入口审查的工作,可以对用户进行验证和通过。虽然api网关对于系统的微服务如此重要,那么api网关服务接口如何设置呢?
用户8715145
2021/12/29
1.2K0
实践篇:无服务器云函数 SCF+API网关+第三方天气api接口(实现天气查询功能)
下面我做一个简单的例子,把无服务器云函数SCF+API网关+第三方API接口三者结合起来,提供一个能查询天气预报的服务,在这个框架里不需要配置WEB容器、不需要搭建运行环境、不需要购买负载均衡,通过配置和一段代码就能完成一个查询天气预报的服务提供出去。 API网关+无服务器云函数SCF+云市场的结合架构图
邻家阿涛
2019/02/21
3K0
实践篇:无服务器云函数 SCF+API网关+第三方天气api接口(实现天气查询功能)
使用API网关构建微服务
当您选择将应用程序构建为一组微服务时,您需要确定应用程序的客户端将如何与微服务器进行交互。使用单体应用程序,只有一组(通常是复制的,负载均衡的)端点。然而,在微服务架构中,每个微服务都暴露出一组通常是
用户1263954
2018/01/30
1.8K0
使用API网关构建微服务
微服务架构之「 API网关 」
在微服务架构的系列文章中,前面已经通过文章《架构设计之「服务注册 」》介绍过了服务注册的原理和应用,今天这篇文章我们来聊一聊「 API网关 」。
Bug开发工程师
2019/05/16
1.1K0
微服务架构之「 API网关 」
Spring Cloud Zuul API网关服务
Spring Cloud Zuul 是Spring Cloud Netflix 子项目的核心组件之一,可以作为微服务架构中的API网关使用,支持动态路由与过滤功能。
HaC
2020/12/30
7580
Spring Cloud Zuul:API网关服务
API网关为微服务架构中的服务提供了统一的访问入口,客户端通过API网关访问相关服务。API网关的定义类似于设计模式中的门面模式,它相当于整个微服务架构中的门面,所有客户端的访问都通过它来进行路由及过滤。它实现了请求路由、负载均衡、校验过滤、服务容错、服务聚合等功能。
macrozheng
2019/10/14
1.3K0
Spring Cloud Zuul:API网关服务
微服务API网关-Kong初探
Kong是一个clould-native、快速的、可扩展的、分布式的微服务抽象层(也称为API网关、API中间件或在某些情况下称为服务网格)框架。更确切地说,Kong是一个在Nginx中运行的Lua应用程序,并且可以通过lua-nginx模块实现。Kong不是用这个模块编译Nginx,而是与OpenResty一起发布,OpenResty已经包含了lua-nginx-module。OpenResty 不是 Nginx的分支,而是一组扩展其功能的模块。
KaliArch
2019/09/29
5.4K2
微服务API网关-Kong初探
微服务架构之「 API网关 」
在微服务架构的系列文章中,前面已经通过文章《架构设计之「服务注册 」》介绍过了服务注册的原理和应用,今天这篇文章我们来聊一聊「 API网关 」。
奎哥
2019/05/09
6370
微服务架构之「 API网关 」
springboot zuul网关_ubuntu网关服务器搭建
前言:博主一直力求做到写博客尽量的详细来减少大家花在踩坑上的时间,若有写的不好或错误的地方,还需各方大佬指正。
全栈程序员站长
2022/09/22
1.3K0
springboot zuul网关_ubuntu网关服务器搭建
关于游戏服务器的服务拆分
先阐明一下观点,可以使用单体(单线程)应用程序解决的问题,都不应该使用分布式系统来解决,因为分布式真的很复杂。
重归混沌
2021/09/14
8550
使用 Whistle 作为 API 服务网关
最近写了一款 React 的工具,能拉取团队成员 Jira 上的 Task 和 Bug,根据其 Task 的 Efforts 时长和 Bug 的修复时长,计算对应的绩效指标。
猫哥学前班
2019/09/30
3.2K0
使用 Whistle 作为 API 服务网关
为什么微服务需要API网关?
随着以API为中心的IT规模增长,API网关和管理层越来越常见。 我们应该考虑微服务的API网关吗?如果是,他们提供什么样的好处? 什么是API网关? API网关跨一个或多个内部API提供单个统一的API入口点。 通常还包括限制访问速率限制和有关安全性等特点。 诸如Tyk.io的API管理层增加了额外的功能,例如分析,货币化和生命周期管理。 基于微服务的架构可以具有10到100个或更多个服务。 API网关可以为外部消费者提供统一的入口点,而与内部微服务的数量和组成无关。 API网关对于微服务的好处 1
lyb-geek
2018/09/27
1.3K0
谈谈微服务中的 API 网关
企鹅号小编
2018/01/03
1.8K0
谈谈微服务中的 API 网关

相似问题

无服务器rest api网关nodejs

10

无服务器API网关日志记录

114

无服务器框架Api网关TypeError

114

无服务器框架Api网关输出模型

11

GCP上的无服务器API网关

114
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文