我希望有这样的架构:

在这里,ScoringService有GET和POST端点。POST端点可能仅适用于VPC内的服务(ExerciseService和QuizService)。ScoringService的GET终结点必须可用于客户端。
根据Serverless documentation的说法,我可以将整个ScoringService设置为私有。但是对于这个架构,我只希望POST端点是私有的。客户端应该可以访问GET端点。
所以就像这样:
service: my-service
provider:
name: aws
functions:
scoring:
events:
- http:
path: score
method: get
endpointType: EDGE
- http:
path: score
method: post
endpointType: PRIVATE但我不认为这是一个有效的无服务器配置。上面的架构在无服务器的情况下是不是可能的?
发布于 2019-12-29 03:46:57
是的,你可以使用私有函数。
因此,您在这里可以做的是将ScoringService的post函数设置为私有。
service: my-service
provider:
name: aws
apiKeys:
- myFirstKey
functions:
getScoring:
events:
- http:
path: <your-scoring-get-path>
method: get
postScoring:
events:
- http:
path: <your-scoring-post-path>
method: post
private: true因此,现在连接到此post Rest API的客户端将需要在其请求的x- API -key头中设置这些api键值中的任何一个。这仅对于private属性设置为true的函数是必需的。
有关设置this接口密钥的更多信息,请阅读。
发布于 2019-12-29 04:08:27
内网API
属性接口的作用是使整个endpointType=private成为私有网络内部的接口。因此,该属性不适用于端点。
受保护的端点
如果您只是想保护api终结点,则可以将该api终结点配置为仅在提供api密钥时才可访问。您可以通过将属性private设置为true来完成此操作,如果这样做,api仍然是公共可访问的,但api端点受api-key.The api key保护,该api key预计将在x-api-key标头中发送。请记住,这与内部api不同,内部api是私有网络内部的,不能公开访问。
https://stackoverflow.com/questions/59511237
复制相似问题