微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 serverless.template 中添加自定义授权器

如何解决在 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 举报,一经查实,本站将立刻删除。