Amazon web services AWS SAM-通过SAM模板在API网关方法中实施请求验证
我正在开发一个SAM应用程序,它有一个lambda函数,API网关是事件源。API端点是一种POST方法,要求在请求体中有一组参数。API网关通过使用AWS控制台指定请求模型,为我们提供了验证请求体的能力 请参阅以下AWS控制台选项的屏幕截图: 我需要通过SAM模板设置类似选项,并且能够将模型链接到请求正文,但是无法设置请求验证程序选项,并且也无法找到任何文档或示例 下面是我的SAM模板Amazon web services AWS SAM-通过SAM模板在API网关方法中实施请求验证,amazon-web-services,aws-lambda,aws-api-gateway,serverless,aws-serverless,Amazon Web Services,Aws Lambda,Aws Api Gateway,Serverless,Aws Serverless,我正在开发一个SAM应用程序,它有一个lambda函数,API网关是事件源。API端点是一种POST方法,要求在请求体中有一组参数。API网关通过使用AWS控制台指定请求模型,为我们提供了验证请求体的能力 请参阅以下AWS控制台选项的屏幕截图: 我需要通过SAM模板设置类似选项,并且能够将模型链接到请求正文,但是无法设置请求验证程序选项,并且也无法找到任何文档或示例 下面是我的SAM模板 AWSTemplateFormatVersion: '2010-09-09' Transform: AW
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: SAM Template
Parameters:
Stage:
Type: String
Default: dev
Resources:
MyApiGateway:
Type: AWS::Serverless::Api
Properties:
Name: My AWS Serverless API
StageName: !Ref Stage
Models:
ExchangeRate:
$schema: "http://json-schema.org/draft-04/schema#"
properties:
base:
type: string
target:
type: string
required:
- base
- target
title: User
type: object
ExchangeRateFunction:
Type: AWS::Serverless::Function
Properties:
CodeUri: functions/exchange-rate/
Handler: index.handler
Runtime: nodejs12.x
Description: Function to Get Currency Exchange Rate
MemorySize: 128
Timeout: 3
Policies:
- AWSLambdaBasicExecutionRole
Events:
HelloWorld:
Type: Api
Properties:
RestApiId: !Ref MyApiGateway
Path: /exchange
Method: POST
RequestModel:
Model: ExchangeRate
Required: true
Outputs:
ExchangeRateFunction:
Description: "Exchange Rate Lambda Function ARN"
Value: !GetAtt ExchangeRateFunction.Arn
MyApiGateway:
Description: "My Seed API EndPoint"
Value: !Sub "https://${MyApiGateway}.execute-api.${AWS::Region}.amazonaws.com/${Stage}"
参考文件
请让我知道如何使用SAM模板将“请求验证器”设置为“验证正文”选项。非常感谢您的帮助我遇到了同样的问题,很明显,SAM已经有一段时间没有此功能了,您可以从前面的问题中看到: 此外,GitHub中还存在一些问题,最后一个问题是:
我已经破解了一个解决方案,该解决方案在SAM规范中包含两个附加属性以解决此问题,但我不希望它真正成为PR。如果您想使用我的分叉回购从开发分支部署,我可以提供进一步的说明。您能告诉我们您在SAM中创建了哪些额外资源来完成这项工作吗?@KarthikVadla嘿,上面的问题对我修改的内容有一些解释()。同样,这只是一个肮脏的黑客。但是如果你真的感兴趣,你可以看看我的github中的forked repo:只要看看我在分支
api方法请求验证程序中完成的三个提交即可。我不记得部署这个的确切步骤,但是SAM文档中有这方面的信息。如果你需要进一步的帮助,请告诉我。