使用SAM应用程序如何定义body映射模板



我是 AWS 和 SAM 的新手。我正在使用 AWS 服务开发一个虚拟后端。为此,我正在使用SAM应用程序在本地编写代码。我将APIs和Lambda的结构定义为

AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: >
sam-app
Sample SAM Template for sam-app
Globals:
Function:
Timeout: 300
Api:
Cors:
AllowHeaders: "'content-type, authorization'"
AllowOrigin: "'*'"

Resources:
HelloWorldFunction:
Type: AWS::Serverless::Function
Properties:
CodeUri: hello_world
Handler: app.lambda_handler
Runtime: nodejs8.10
Environment:
Variables:
PARAM1: VALUE
Events:
HelloWorld:
Type: Api
Properties:
Path: /hello2
Method: get
Outputs:
HelloWorldFunction:
Description: "Hello World Lambda Function ARN"
Value: !GetAtt HelloWorldFunction.Arn

这将创建一个小型虚拟应用程序。但是,我想知道如何使用AWS的其他实用程序,例如Body Mapping,定义模型等。请帮助我知道这些。

谢谢。。。

您可以使用API 网关 Swagger 定义来定义模型等。这可以嵌入到 SAM 模板中或托管在 S3 中并由 SAM 模板引用

基本示例如下所示:

RestApi:
Type: AWS::Serverless::Api
Properties:
DefinitionBody:       
<add Swagger definition here>

请参阅 https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessapi,了解 SAM API 网关配置选项是什么。

一些示例 SAM + API 网关 + Swagger 示例位于:

  • https://github.com/awslabs/serverless-application-model/blob/master/examples/2016-10-31/inline_swagger/template.yaml
  • https://github.com/awslabs/serverless-application-model/blob/master/examples/2016-10-31/api_swagger_cors/template.yaml
  • https://docs.aws.amazon.com/apigateway/latest/developerguide/api-as-lambda-proxy-export-swagger-with-extensions.html

最新更新