gpt4 book ai didi

aws-lambda - 如何更改 SAM 模板中 API 阶段的名称?

转载 作者:行者123 更新时间:2023-12-04 15:51:25 24 4
gpt4 key购买 nike

我正在使用 SAM 部署一个 Lambda 函数,并使用大致这个模板片段通过 API 网关通过 HTTP 调用它:

MyFunction:
Type: AWS::Serverless::Function
Properties:

Events:
MyApi:
Type: Api
Properties:
Path: /
Method: any

这有效,但它创建了一个名为“Prod”的 API 阶段,它必须用作所有 URL 的前缀。我不希望我的 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:
???

我知道 ???在上面的例子中应该是 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

关于aws-lambda - 如何更改 SAM 模板中 API 阶段的名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48196643/

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