首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >同一AWS API网关中的多个微服务

同一AWS API网关中的多个微服务
EN

Stack Overflow用户
提问于 2020-06-22 23:58:03
回答 1查看 585关注 0票数 0

我正在开发一系列的微服务,它们需要共享相同的API网关。这是我的结构:

代码语言:javascript
代码运行次数:0
运行
复制
/
   /assessments
      /skills
      /work-values      
   /graphql

/skills/work-values/graphql是我尝试向同一个API网关注册的3种不同的微服务。我遇到的问题是如何获取/skills/skills文件,/work-values路由在“评估”下嵌套。/assessments本身没有任何功能。它的存在只是为了让我们能够在相同的URL路径结构下组织所有的评估。

这里是我的‘/work-values’的serverless.yaml文件:

代码语言:javascript
代码运行次数:0
运行
复制
service:
  name: assessments-workvalues

...
custom:
  stage: ${opt:stage, self:provider.stage}

provider:
  ...
  apiGateway:
    restApiId:
       # THE FOLLOWING REFERENCES A VARIABLE FROM MY API GATEWAY ROOT
      'Fn::ImportValue': ${self:custom.stage}-ApiGatewayRestApiId
    restApiRootResourceId: 
      'Fn::ImportValue':   # HOW DO I GET THE PROPER VALUE HERE TO MAP TO `/assessments`?
    ...

functions:
  ...

,这是我的serverless.yaml文件,用于‘/评估’:

代码语言:javascript
代码运行次数:0
运行
复制
service:
  name: assessments

custom:
  stage: ${opt:stage, self:provider.stage}

provider:
  ...
  apiGateway:
    restApiId:
       # THE FOLLOWING REFERENCES A VARIABLE FROM MY API GATEWAY ROOT
      'Fn::ImportValue': ${self:custom.stage}-ApiGatewayRestApiId
    restApiRootResourceId:
      'Fn::ImportValue': ${self:custom.stage}-ApiGatewayRestApiRootResourceId   

functions:
  ...

resources:
  Outputs:
    ApiGatewayRestApiId:
      Value:
        Ref: ApiGatewayRestApi
      Export:
        Name: ${self:custom.stage}-Assessments-ApiGatewayRestApiId
    ApiGatewayRestApiRootResourceId:
      Value:
         Fn::GetAtt:
          - ApiGatewayRestApi
          - RootResourceId 
      Export:
        Name: ${self:custom.stage}-Assessments-ApiGatewayRestApiRootResourceId

问题似乎是为评估路由编写serverless.yaml文件中的输出。当我运行无服务器部署时,会收到以下错误消息:

代码语言:javascript
代码运行次数:0
运行
复制
Error: The CloudFormation template is invalid: Unresolved resource dependencies [ApiGatewayRestApi] in the Outputs block of the template

在服务之间共享API端点文章的末尾,作者提到“您必须从计费-api导入/billing,所以新服务只需要创建/ /billing/xyz部分”。(这似乎是我所处的情况)。但是,作者没有解释如何导入/billing。或者在我的例子中,如何将/assessments导入到每个评估微服务的serverless.yaml文件中?

EN

回答 1

Stack Overflow用户

发布于 2020-06-23 17:23:26

经过进一步的研究,我发现了这样的联系:

在AWS上拆分无服务器框架API

最后,我按照上面文章中的内容重新设计了我最初的方法。我遗漏的部分是有一个根或基无服务器文件,该文件用于在API网关中创建路由,并将这些占位符作为输出公开,随后的无服务器子文件将这些占位符作为输入,用于将您的子lambda函数连接到API Gateway伞下的路由。

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

https://stackoverflow.com/questions/62525285

复制
相关文章

相似问题

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