【问题标题】:Change my AWS API Gateway Custom Authorizer per stage每个阶段更改我的 AWS API Gateway 自定义授权方
【发布时间】:2017-07-02 03:45:35
【问题描述】:

我目前有一个通过我们的 API 网关的 API,它附加了多个自定义授权者 - LiveAuthorizerTestAuthorizer

我想根据正在访问的阶段更改我的自定义授权者,就像阶段变量一样。如果我们在阶段测试,使用TestAuthorizer,如果在现场使用LiveAuthorizer

根据我的研究和这个page,这似乎是不可能的,有什么想法吗?

PS - 我知道这可以在 Lambda 函数中进行身份验证,我只是好奇是否有其他方法(类似于阶段变量)。

【问题讨论】:

    标签: amazon-web-services aws-lambda aws-api-gateway custom-authentication


    【解决方案1】:

    您可以在单个 Authorizer 中使用阶段变量来根据阶段指向不同的 Lambda 函数,但不能指向不同的 Authorizer。

    在很多情况下,指向不同的 Lambda 函数都有效。 Authorizer 上的其他设置(如标头源或 TTL)不支持阶段变量,因此必须由所有阶段共享。

    编辑:我应该解释一下,不允许这样做的一个关键原因是,如果在运行时变量不存在,我们的阶段变量功能原样没有后备。由于运行授权器至关重要,我们必须想出一种不同的机制,类似于具有内置安全机制的阶段变量。

    【讨论】:

    • 您能否解释一下:“您可以在单个 Authorizer 中使用阶段变量来指向不同的 Lambda 函数”
    • 您需要将您的授权人设置为类似 {stageVariables.authorizerName} 并在您的阶段中设置该阶段变量。如果您使用此配置,您需要手动配置您的 Api 网关以调用该 Lambda 函数。
    • @taskiner 请查看我最初问题中的 url,根据此页面(不到一个月前):stackoverflow.com/questions/41684728/… 无法完成?
    • @Hexie 这个问题是关于访问 lambda 函数中的阶段变量。如果我错了,请纠正我,您只想为不同的阶段触发不同的 lambda 函数。如果这就是您所说的,您可以使用阶段变量来做到这一点。
    • @Hexie 是的,我们现在正在生产中使用该配置。您的 auth func 名称需要像您说的那样设置。 ${stageVariables.authFunc} 您需要授予 API GW 权限以使用 AWS CLI 调用 lambda。
    猜你喜欢
    • 1970-01-01
    • 2016-11-30
    • 2019-03-04
    • 2018-04-17
    • 2020-06-17
    • 2018-03-21
    • 2018-03-09
    • 2019-09-06
    • 1970-01-01
    相关资源
    最近更新 更多