如何解决在 serverless.template 中添加自定义授权器
我需要向我的 API 网关添加授权方并将授权方附加到每个方法。无论如何,是否可以通过云形成设置来自动执行此操作?
目前我在 C# 中有 2 个 Visual Studio 项目。第一个部署数据库实例、VPC、路由表等。第二个将 C# 函数部署到 Lambda 和 API 网关。这工作正常,但我想更进一步,从我的一种方法 (Authorise) 创建 authorzier 并将其应用为每种方法的授权。基本上是在 CLI 部署期间自动化整个过程。
首先,我在 API 网关上手动设置了授权方,并在 C# 项目的 serverless.template 文件中附加了方法:
"Auth" : { "Authorizer" : "APIToken" }
但是这在部署过程中失败了带有 id [AddUserFunction] 的资源无效。 ID 为 [RootGet] 的事件无效。无法在路径 [/Users/AddUser] 的 API 方法 [post] 上设置 Authorizer [APIToken],因为相关 API 未定义任何 Authorizers
但它就在那里,因为我刚刚创建了它?
"AddUserFunction": {
"Type": "AWS::Serverless::Function","Properties": {
"Handler": "ServerlessAppTest::ServerlessAppTest.Lambdas.AddUserFunction::AddUser","Role": null,"Policies": ["AWSLambdaBasicExecutionRole","AWSLambdaVPCAccessExecutionRole"],"Events": {
"RootGet": {
"Type": "Api","Properties": {
"Path": "/Users/AddUser","Method": "POST","Auth" : { "Authorizer" : "APIToken" }
}
}
}
}
},
如何将 API 网关中创建的授权方附加到 serverless.template 文件中定义的每个方法?
完成此操作后,我想继续自动创建授权方。我已经写了一个代码片段,但不确定它是否会起作用,如果有人能对此有所了解吗?
"MyApi": {
"Type": "AWS::Serverless::Api","Properties": {
"StageName": "V1","Auth" : {
"DefaultAuthorizer": "APIToken","Authorizers": {
"APIToken": {
"FunctionPayloadType": "TOKEN","FunctionArn": { "Fn::GetAtt" : [ "Authorise","Arn" ] }
}
}
}
}
}
提前致谢。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。