问题描述
我需要向我的 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 (将#修改为@)