and*_*nix 4 amazon-web-services aws-api-gateway serverless lambda-authorizer
我正在尝试使用无服务器框架在 API Gateway 中创建自定义 lambda 授权方。
我的服务的客户端可以发送“授权”或“X-自定义”标头(但不能同时发送两者)。所以我需要的是一个没有身份源的自定义授权者。
无服务器 YAML 截图如下:
functions:
create:
handler: posts.create
events:
- http:
path: posts/create
method: post
authorizer:
arn: xxx:xxx:Lambda-Name
resultTtlInSeconds: 0
type: request
integration: lambda
cors: true
request:
template:
application/json: '{"method": "$context.httpMethod","body" : $input.json("$"),"headers": {#foreach($param in $input.params().header.keySet())"$param": "$util.escapeJavaScript($input.params().header.get($param))" #if($foreach.hasNext),#end#end},"queryParams": {#foreach($param in $input.params().querystring.keySet())"$param": "$util.escapeJavaScript($input.params().querystring.get($param))" #if($foreach.hasNext),#end#end},"pathParameters": {#foreach($param in $input.params().path.keySet())"$param": "$util.escapeJavaScript($input.params().path.get($param))" #if($foreach.hasNext),#end#end}}'
Run Code Online (Sandbox Code Playgroud)
我使用以下请求模板,以便我的 lambda 获取标头并可以执行验证:
{"method": "$context.httpMethod","body" : $input.json("$"),"headers": {#foreach($param in $input.params().header.keySet())"$param": "$util.escapeJavaScript($input.params().header.get($param))" #if($foreach.hasNext),#end#end},"queryParams": {#foreach($param in $input.params().querystring.keySet())"$param": "$util.escapeJavaScript($input.params().querystring.get($param))" #if($foreach.hasNext),#end#end},"pathParameters": {#foreach($param in $input.params().path.keySet())"$param": "$util.escapeJavaScript($input.params().path.get($param))" #if($foreach.hasNext),#end#end}}
Run Code Online (Sandbox Code Playgroud)
问题是,当我运行无服务器部署命令时,授权者是使用“授权”身份资源创建的。
我的代码基于以下资源:
这让我想到两个问题:
小智 5
这对我有用。
identitySource: '',
resultTtlInSeconds: 0 // You have to set this to 0.
Run Code Online (Sandbox Code Playgroud)
希望这可以减轻我刚刚经历的痛苦!:P
| 归档时间: |
|
| 查看次数: |
1646 次 |
| 最近记录: |