当前位置: 首页 > 知识库问答 >
问题:

AWS API网关自定义授权程序。如何访问lambda中的主体

舒枫涟
2023-03-14

所以我试图在API网关中设置一个自定义授权程序。

我可以让它将带有有效令牌的请求转发给API方法中指定的lambda函数。我不知道如何访问授权人传递的principalId。

在执行请求时,我在Cloud watch日志中获得以下内容:

Authorizer result body before parsing:
{
  "principalId": "16",
  "policyDocument": {
    "Version": "2012-10-17",
    "Statement": [
      {
        "Condition": {},
        "Action": "execute-api:Invoke",
        "Resource": [
          "arn:aws:execute-api:eu-central-1:****:***/null/*/*"
        ],
        "Effect": "Allow"
      },
      {
        "Condition": {},
        "Action": "execute-api:Invoke",
        "Resource": [],
        "Effect": "Deny"
      }
    ]
  }
}

那么,我如何访问我的lambda函数中的主体呢?这个物体到底传给Lambda了吗?如果不是,我怎么至少让校长通过?

共有1个答案

公羊渝
2023-03-14

principalId可以(默认情况下)转发到Lambda实现。根据您的映射,principalId应该出现在上下文变量中。

可以使用$context.authorizer.principalId变量访问映射模板中的principalId值。如果要将值传递到后端,这非常有用。有关更多信息,请参见访问$context变量

使用API网关自定义授权程序

 类似资料:
  • 但是看起来在我的lambda响应和API网关之间发生了一些奇怪的事情, 变量在内部的某个地方被压缩得更低, 而我仍然得到了相同的解析错误, 它会接受其他格式的响应吗?字符串也不起作用。 我还应该尝试什么?我的策略格式错误吗? 我从这些站点获得了两种不同的策略格式- 1。http://docs.aws.amazon.com/apigateway/latest/developerguide/use-c

  • 我正在AWS lambda上使用无服务器框架构建一个REST服务。我已经创建了一个自定义授权器,在调用lambdas时调用它。当我运行无服务器脱机时,一切正常。当我部署时,我在AP网关中得到一个错误。我已经在API网关中启用了日志,但没有任何东西写入日志。 下面是我的Serverless.yml文件: 我的授权处理程序如下所示。该方法获取我的身份验证令牌并使用JOSE验证它,并为用户和一些角色返回

  • 我是API网关的新手。我尝试使用“自定义授权程序”。我遵循了下面的文档,并使用了网站提供的示例代码。https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-use-lambda-authorizer.html “令牌类型的lambda授权者”是工作的。 但是... 我对“请求类型”感到困惑,不知道如何将quer

  • Mono Apr 10 09:42:35 UTC 2017:转换后的endpoint请求主体:{“Type”:“Token”,“AuthorizationToken”:“ABC123”,“MethodArn”:“arn:aws:execute-api:ap-southeast-1:007183653813:OHLQXU9P57/null/Get/”}Mono Apr 10 09:42:36 UTC

  • 如何从API网关中的自定义授权器lambda函数获取日志记录?我不想为API启用日志记录。我需要从授权器lambda函数日志记录。我使用了一个python lambda函数,并且在代码中有打印。我想查看云观察日志中的指纹。但在云观察中看不到原木。我也没有错误。我缺少什么? Lambda有execution role role/service-role/mylambdarole。此角色具有写入clo