我正在使用 SAM 部署 Lambda 函数,并使其可通过 API Gateway 通过 HTTP 进行调用,大致使用以下模板片段:
MyFunction:
Type: AWS::Serverless::Function
Properties:
…
Events:
MyApi:
Type: Api
Properties:
Path: /
Method: any
这是可行的,但它创建了一个名为“Prod”的 API 阶段,它必须用作所有 URL 的前缀。我不希望我的网址是“https://something/Prod/foo https://something/Prod/foo“,我希望他们成为”https://something/v1/foo https://something/v1/foo“,即我选择的东西。
如何更改舞台名称?
我尝试将 API 声明为单独的资源,并使用StageName
属性来设置舞台名称,但是,这需要我也设置DefinitionBody
,这似乎是一个很深的兔子洞。
MyFunction:
Type: AWS::Serverless::Function
Properties:
…
Events:
MyApi:
Type: Api
Properties:
Path: /
Method: any
RestApiId: !Ref MyApi
MyApi:
Type: AWS::Serverless::Api
Properties:
StageName: v1
DefinitionBody:
???
我知道???
上面的例子中应该是 Swagger,但我宁愿不必在那里写任何东西,模板已经变得足够冗长了。因为如果我可以接受艺名“Prod”,我就不必写这部分,所以在我看来,必须有一种方法可以避免在那里写任何东西,而只需设置艺名。
如何更改阶段的名称,而无需编写大量模板代码和/或 Swagger?
SAM 版本 1.7.0 不再需要指定 DefinitionBody 或 DefinitionUri,因此您现在应该能够准确执行第二个示例中提到的操作,而无需包含 DefinitionBody:
MyFunction:
Type: AWS::Serverless::Function
Properties:
…
Events:
MyApi:
Type: Api
Properties:
Path: /
Method: any
RestApiId: !Ref MyApi
MyApi:
Type: AWS::Serverless::Api
Properties:
StageName: v1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)