我正在使用无服务器框架将应用程序部署到AWS Lambda。我的应用程序由一个Lambda提供服务,这就是为什么我使用{proxy+}
穿过请求路径的原因:
functions:
app:
runtime: go1.x
handler: bin/lambda
events:
- http:
path: /{proxy+}
method: any
现在,我想使用自定义授权者Lambda保护我的应用程序的特定部分(请考虑所有/admin/
)。我以为我可以添加另一个使用授权者的事件定义,如下所示:
functions:
app:
runtime: go1.x
handler: bin/lambda
events:
- http:
path: /admin/{proxy+}
method: any
authorizer:
name: authorizer
resultTtlInSeconds: 0
identitySource: method.request.header.Authorization
- http:
path: /{proxy+}
method: any
但是这根本没有效果。如果我将我的授权者应用于根级别代理,它将按预期方式应用,因此授权者本身可以按预期工作。
在这种情况下如何定义路线?我需要使用其他Lambda还是我缺少什么?
答案 0 :(得分:1)
我可以想到两种选择:
如果您确实希望以编写方式使用终结点,则可以使用通用终结点(根终结点),并在该处理程序内部检查请求是否针对/admin
,然后重定向或执行其他一些特殊操作的理由。
放弃拥有根端点,并使用两个“普通”端点:
functions:
app:
runtime: go1.x
handler: bin/lambda
events:
- http:
path: /admin/{proxy+}
method: any
authorizer:
name: authorizer
resultTtlInSeconds: 0
identitySource: method.request.header.Authorization
- http:
path: /user/{proxy+}
method: any
答案 1 :(得分:0)
基本上(对于Open api 3.0),您将在路径上定义一个security
键。此类键的定义在components.securitySchemas