我正在使用无服务器通过 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中无法跨多个区域的单个堆栈中部署资源。
(不过,您可以使用自定义资源执行此操作,但我建议不要这样做,除非有一些边缘情况。