gpt4 book ai didi

amazon-web-services - 具有多种服务的 AWS 单一 ApiGateway

转载 作者:行者123 更新时间:2023-12-05 06:51:08 28 4
gpt4 key购买 nike

我正在为我的电子商务应用程序创 build 计。它将拥有由 AWS Lambda 支持的多项服务。 Orderservice、InventoryService、PaymentService、LoggingService、dashboardService 都是其中的一些服务。我无法给出确切的服务数量,但肯定会超过 15 个。根据此链接 microservices ,一个好的微服务架构应该有一个网关,可以路由到相应的服务。带有订单 Lambda 函数的 AWS ApiGateway 的代码如下所示。
我的问题是,每个 Orderservice、inventoryservice、 paymentservice 等都可以有多个获取、发布、删除、放置的路由。其中大多数都会有嵌套资源。在这种情况下,我应该在同一 SAM 模板中包含所有这些服务的 api 路由和 lambda 函数。如果是的话,那它不是一个整体模板吗?如果我需要更改任何服务,我必须部署整个模板并打破微服务原则。理想情况下,我想独立部署所有这些服务并共享 ApiGateway。这可能吗 ?。如果不是,我应该为不同 SAM 模板中的每个服务创建单独的 ApiGateway,以便可以单独部署它们。这将导致在所有网关中重复进行身份验证、授权、监控,这听起来又不太可行。
请建议什么是正确的方法。

AWSTemplateFormatVersion: "2010-09-09"
Transform: "AWS::Serverless-2016-10-31"
Description: ApiGateway for the Ecommerce

Resources:
EcomApi:
Type: AWS::Serverless::Api
Properties:
DefinitionBody:
swagger: "2.0"
info:
title: Ecommerce Api
schemes:
- "https"
x-amazon-apigateway-request-validator: Validate body and params
paths:
/order:
get:
summary: Get the orders
consumes:
- "application/json"
produces:
- "application/json"
responses:
"200":
description: "200 response"
schema:
$ref: "#/definitions/Empty"
headers:
Access-Control-Allow-Origin:
type: "string"
security:
- Auth: []
x-amazon-apigateway-integration:
type: "AWS_PROXY"
httpMethod: "POST"
uri: !Sub arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${GetOrders.Arn}/invocations
responses:
default:
statusCode: "200"
responseParameters:
method.response.header.Access-Control-Allow-Origin: "'*'"
passthroughBehavior: "when_no_match"
contentHandling: "CONVERT_TO_TEXT"


GetOrders:
Type: AWS::Serverless::Function
Properties:
CodeUri: .
Handler: src/handlers/getOrders.handler
Role:
Fn::GetAtt:
- TestRole
- Arn
Events:
List:
Type: Api
Properties:
Path: /orders
Method: get
RestApiId: !Ref EcomApi

最佳答案

正如您所提到的 - 创建一个单独的 API 网关并与您的 API 共享。 According to AWS ,建议有一个单独的 API 网关来服务多个 Lambda 函数。

我承认我不是 AWS SAM 专家,但使用 serverless-framework 来做到这一点真的很容易。

关于amazon-web-services - 具有多种服务的 AWS 单一 ApiGateway,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66245987/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com