The*_*heo 6 aws-lambda aws-api-gateway aws-sam-cli
我正在使用SAM来部署Lambda函数,并通过使用大约此模板snipplet的via API Gateway使其可通过HTTP进行调用:
MyFunction:
Type: AWS::Serverless::Function
Properties:
…
Events:
MyApi:
Type: Api
Properties:
Path: /
Method: any
Run Code Online (Sandbox Code Playgroud)
这样可行,但它会创建一个名为"Prod"的API阶段,该阶段必须用作所有URL的前缀.我不希望我的网址是" https:// something/Prod/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:
???
Run Code Online (Sandbox Code Playgroud)
我知道???在上面的例子中应该是Swagger,但我更愿意不必在那里写任何东西,模板就足够了.因为如果我可以使用舞台名称"Prod",我不必写这部分,在我看来,必须有一种方法可以避免在那里写任何东西并设置舞台名称.
如何在不必编写大量模板代码和/或Swagger的情况下更改舞台名称?
SAM 版本 1.7.0 不再需要指定 DefinitionBody 或 DefinitionUri,因此您现在应该能够准确执行第二个示例中提到的操作,而无需包含 DefinitionBody:
\n\nMyFunction:\n Type: AWS::Serverless::Function\n Properties:\n \xe2\x80\xa6\n Events:\n MyApi:\n Type: Api\n Properties:\n Path: /\n Method: any\n RestApiId: !Ref MyApi\n\nMyApi:\n Type: AWS::Serverless::Api\n Properties:\n StageName: v1\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
787 次 |
| 最近记录: |