AWS API Gateway自定义授权程序。如何在lambda中访问principalId

时间:2017-08-20 14:13:53

标签: java api amazon-web-services lambda aws-api-gateway

所以我正在尝试在API网关中设置自定义授权程序。

我可以使用有效令牌将请求转发到API方法中指定的lambda函数。我无法弄清楚如何访问我的授权人传递的principalId。

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

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函数中访问principalId?该对象甚至传递给lambda?如果不是,我如何至少获得要传递的principalId?

1 个答案:

答案 0 :(得分:4)

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

  

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

Use API Gateway Custom Authorizers