gpt4 book ai didi

node.js - 如何将 API Gateway 授权方上下文传递给 HTTP 集成

转载 作者:行者123 更新时间:2023-12-04 01:46:18 25 4
gpt4 key购买 nike

我已经为我的 AWS API 网关成功实现了一个 Lambda 授权器,但我想将一些自定义属性从它传递到我的 Node.js 端点。

我的授权方的输出遵循 AWS 指定的格式,如下所示。

{
"principalId": "yyyyyyyy",
"policyDocument": {
"Version": "2012-10-17",
"Statement": [
{
"Action": "execute-api:Invoke",
"Effect": "Allow|Deny",
"Resource": "arn:aws:execute-api:<regionId>:<accountId>:<appId>/<stage>/<httpVerb>/[<resource>/<httpVerb>/[...]]"
}
]
},
"context": {
"company_id": "123",
...
}
}

就我而言, context包含一些参数,如 company_id ,我想传递给我的 Node 端点。

如果我要使用 Lambda 端点,我知道这是通过映射模板和类似的东西完成的:
{
"company_id": "$context.authorizer.company_id"
}

但是,如果选择 Lambda 作为集成类型,则正文映射模板仅在集成请求下可用。如果选择了 HTTP,则不会。

总之,我如何通过 company_id从我的 Lambda 授权方到我的 Node API?

最佳答案

大部分功劳都归功于@Michael-sqlbot 在对我的问题的评论中,但如果其他人发现了这个问题,我会在这里提供完整的答案。

授权方 Lambda

它必须以这种格式返回一个对象,其中上下文包含您要转发到端点的参数,如问题中所指定。

{
"principalId": "yyyyyyyy",
"policyDocument": {
"Version": "2012-10-17",
"Statement": [{
"Action": "execute-api:Invoke",
"Effect": "Allow|Deny",
"Resource": "arn:aws:execute-api:<regionId>:<accountId>:<appId>/<stage>/<httpVerb>/[<resource>/<httpVerb>/[...]]"
}]
},
"context": {
"company_id": "123", <-- The part you want to forward
...
}
}

方法请求

在 Method Request/HTTP Request Headers 下,添加要转发的上下文属性:
  • 姓名:company_id
  • 必需:可选
  • 兑现:可选

  • 集成请求

    在集成请求/HTTP header 下,添加:
  • 姓名:company_id
  • 映射自:context.authorizer.company_id
  • 兑现:可选
  • 关于node.js - 如何将 API Gateway 授权方上下文传递给 HTTP 集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45631758/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com