[英]Mandatory Querystring parameter for AWS Lambda using SAM
我有一个 API 端点调用 lambda function。 最简单的形式是它的模板文件部分:
Resources:
GetS3ObjectsFunction:
Type: AWS::Serverless::Function
Properties:
FunctionName: GetS3Objects
Description: SAM Kata for S3 Access
CodeUri: get_s3_objects/
Handler: main.lambda_handler
Runtime: python3.8
Events:
GetS3ObjectsAPI:
Type: Api
Properties:
Path: /GetS3Objects
Method: get
RequestParameters:
- method.request.querystring.bucket:
Required: true
这是我可以从文档中找到的最好的。 但是,本地和堆栈部署都没有对端点施加任何限制,即无论是否提供查询字符串,或者它是否有存储桶,都会调用 lambda。
这是预期的行为吗? 如果查询字符串中未指定存储桶,我可以做些什么,以便 API 网关拒绝请求?
在我看来,您应该能够使用 WAF 规则获得结果
WAF 规则 - https://docs.aws.amazon.com/waf/latest/developerguide/waf-rule-statements-list.html上的字符串匹配或正则表达式模式匹配
您应该能够匹配查询字符串或单个参数: https://docs.aws.amazon.com/waf/latest/developerguide/waf-rule-statement-fields.html#waf-rule-statement-request-零件
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.