我想通过无服务器设置API网关的Request Validator。我尝试了两种不同的Request Validator设置。但是,两种方法都失败了。我已经总结了我所做的,所以如果有问题请告诉我。
swagger.yaml
和serverless.yml
部署了sls后,没有将x-amazon-apigateway-estest-validator
中描述的验证模式添加到Request Validator选项中。https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-swagger-extensions-request-validator.html
下面是一个:
openapi: 3.0.0
info:
description: xxx
version: '0.1'
title: xxx API
x-amazon-apigateway-request-validators:
body-only:
validateRequestBody: true,
validateRequestParameters: false
except-body:
validateRequestBody: false,
validateRequestParameters: true
all:
validateRequestBody: true,
validateRequestParameters: true
tags:
- name: auth
description: xxx
paths:
/login:
post:
tags:
- auth
summary: xxx
description: ''
x-amazon-apigateway-request-validator: all
responses:
'200':
description: success
content:
application/json:
schema:
$ref: '#/components/schemas/AuthResponse'
'400':
description: fail
content:
application/json
'401':
description: fail
content:
application/json
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AuthRequest'
required: true
x-amazon-apigateway-integration:
responses:
default:
statusCode: "200"
uri: "arn:aws:apigateway:ap-northeast-1:lambda:path/2015-03-31/functions/arn:aws:lambda:ap-northeast-1:xxxxxxxxxxxx:function:xxx-api-dev-login/invocations"
passthroughBehavior: "when_no_match"
httpMethod: "POST"
contentHandling: "CONVERT_TO_TEXT"
type: "aws_proxy"
我的
是无服务器的。yml
如下:
resources:
Resources:
RestApi :
Type : AWS::ApiGateway::RestApi
Properties :
Body : ${file(./swagger.yaml)}
LoginApiToInvokeLambda:
Type: AWS::Lambda::Permission
DependsOn: LoginLambdaFunction
Properties:
FunctionName: xxx-ext-api-dev-login
Action: lambda:InvokeFunction
Principal: apigateway.amazonaws.com
resources:
Resources:
RestApi :
Type : AWS::ApiGateway::RestApi
Properties :
Body : ${file(./swagger.yaml)}
LoginApiToInvokeLambda:
Type: AWS::Lambda::Permission
DependsOn: LoginLambdaFunction
Properties:
FunctionName: xxx-ext-api-dev-login
Action: lambda:InvokeFunction
Principal: apigateway.amazonaws.com
RequestValidatorAll:
Type: AWS::ApiGateway::RequestValidator
Properties:
Name: all
RestApiId:
Ref: RestApi
ValidateRequestBody: true
ValidateRequestParameters: true
您需要删除YAML中的逗号。
即
x-amazon-apigateway-request-validators:
body-only:
validateRequestBody: true,
validateRequestParameters: false
except-body:
validateRequestBody: false,
validateRequestParameters: true
all:
validateRequestBody: true,
validateRequestParameters: true
应该是
x-amazon-apigateway-request-validators:
body-only:
validateRequestBody: true
validateRequestParameters: false
except-body:
validateRequestBody: false
validateRequestParameters: true
all:
validateRequestBody: true
validateRequestParameters: true
一旦您这样做,YAML将是有效的,它应该工作。
在微服务体系结构中,有一种称为API网关的常见模式。 我知道所有来自API网关外部的通信都被用作单个入口点。 但是我也希望从微服务到微服务的内部通信是通过API网关进行的?我的意思是,这比建立点对点连接要容易得多。 那么,是什么反对将API网关也用于整个内部通信呢?
我正在开发一个SAM应用程序,它有一个lambda函数,API网关是事件源。APIendpoint是一种POST方法,要求在请求体中有一组参数。API网关通过使用AWS控制台指定请求模型,为我们提供了验证请求体的能力。 请参阅以下AWS控制台选项的屏幕截图: 我需要通过SAM模板设置类似的选项,能够将模型与请求主体链接,但无法设置请求验证程序选项,也无法找到任何文档或示例。 下面是我的SAM模板
问题内容: 我编写了以下bean来验证我的邮件。 问题在于smtp设置,当我在本地服务器上运行应用程序时,它运行正常。但是当我在openshift服务器上运行应用程序时,在 有人可以指出以上设置中的问题,为什么它们在我的本地计算机上工作? 以下是我得到的例外 问题答案: 我有同样的问题。尝试从浏览器登录到Gmail帐户。如果Gmail认为是非法访问(可能来自其他地理位置),则会阻止身份验证请求。您
我需要使用拦截器验证并记录grpc服务请求的一些数据。我检查了ServerInterceptor的interceptCall,但找不到获取请求对象的方法。有没有办法让请求对象进入拦截器?
我试图向google calendar api发出POST请求,但我不知道如何对其进行身份验证。 我采取了以下步骤尝试并使用服务帐户执行此操作: > <代码>{“error”:{“errors”:[{“domain”:“global”,“reason”:“authError”,“message”:“Invalid Credentials”,“locationType”:“header”,“loca
以下情况: 我们使用第三方服务将文件上传到特定谷歌账户内的特定驱动器文件夹(唯一可能的方式) Zapier集成监听新文件的创建,并使用文件的元数据创建一个新的db条目 现在我想设置一个无服务器云函数,它可以监听新的数据库条目,从元数据中检索fileId,然后下载文件并立即上传到谷歌云存储 我的问题是实际验证这个下载请求。理想情况下,不会涉及OAUTH,因为它实际上是我们想要触摸的单一驱动器,我们也