是否可以在两个具有无服务器的区域部署 API 网关和 Lambda?



我正在使用无服务器通过 AWS 上的 API 网关部署我的 Lambda API,但看起来缺少的一件事是将 Lambda API 和 API 网关部署到不同区域的能力。现在,如果我将区域设置为serverless deploy命令,它将在该区域中部署这两个区域,而不管我在serverless.yml文件中为 Lambda 指定了不同的区域。因此,假设您有此文件:

service: My-Awesome-API
provider:
name: aws
region: eu-west-1
runtime: nodejs12.x
memorySize: 384
functions:
graphql:
handler: src/index.handler
name: My-Awesome-GraphQL-API
events:
- http:
path: graphql
method: POST
cors: true
- http:
path: graphql
method: GET
cors: true

然后使用此命令部署 APIserverless deploy --region=eu-central-1. Lambda 函数将部署在eu-central-1中,而不是部署在eu-west-1中。

由于这可能很有用,并且可以在 API 网关中完成,因此有没有办法也使用无服务器框架指定此行为?

提供程序设置中的区域只是默认值。通过使用--region参数,可以覆盖该默认值,因此行为是预期的。

Serverless在后台基于CloudFormation,CloudFormation堆栈是特定于区域的,因此在vanilla CloudFormation中无法跨多个区域的单个堆栈中部署资源。

(不过,您可以使用自定义资源执行此操作,但我建议不要这样做,除非有一些边缘情况。

最新更新