Tem*_*Fix 2 amazon-web-services aws-serverless aws-sam
在配置SAM模板并定义时AWS::Serverless::Function
,将使用“事件”参数来接受Api类型。这会创建API网关资源吗?此事件类型和独立AWS::Serverless::Api
资源之间有什么区别?
该问题询问有关SAM AWS :: Serverless :: Function类型的Event源块中引用的API,例如:
MyFunction:
Type: AWS::Serverless::Function
Properties:
...
Events:
MyApi:
Type: Api
Properties:
Path: /resource
Method: GET
Run Code Online (Sandbox Code Playgroud)
正如文档在不同地方提到的那样,它们在SAM中称为“隐式API”。
SAM根据在AWS :: Serverless :: Function资源上定义的Api事件的并集创建类型为AWS :: Serverless :: Api的资源-但仅那些不引用(通过RestApiId属性)到AWS :: Serverless :: Api的资源在模板中明确定义。
在幕后,SAM收集了所有这些隐式API,生成了一个Swagger,并使用此Swagger创建了隐式API。该API默认为无法配置的名为“ Prod”的StageName。
如果确实需要控制在Swagger中定义和记录API,则应显式创建AWS :: Serverless :: Api资源。然后将以这种方式引用它:
MyFunction:
Type: AWS::Serverless::Function
Properties:
...
Events:
MyApi:
Type: Api
Properties:
Path: /resource
Method: GET
RestApiId: !Ref MyAPI # Add this line
MyApi:
Type: AWS::Serverless::Api
Properties:
StageName: Prod
DefinitionBody:
...
Run Code Online (Sandbox Code Playgroud)
因此,它们之间的唯一区别是您对它们的配置拥有多少控制权,而关键的考虑因素是您是否需要定义以下两者之一:
如果您需要控制这两者之一或两者,则需要显式定义API。否则,您可能可以使用隐式API。
还要注意,SAM中的AWS :: Serverless :: Api资源被“转换”为类型AWS :: ApiGateway :: RestApi,AWS :: ApiGateway :: Stage和AWS :: ApiGateway :: Deployment的CloudFormation资源。
请注意,此信息是在这三个源文档中找到的信息的摘要:
归档时间: |
|
查看次数: |
971 次 |
最近记录: |