AWS api网关自定义授权程序:在映射模板中访问上下文变量

时间:2017-07-10 19:50:50

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

我已使用python在AWS API Gateway中实现了自定义授权模块。基本上它可能会返回这样的东西:

access = {
    "principalId": "yyyyyyyy",
    "policyDocument" : {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Action": "execute-api:Invoke",
                "Resource": [
                    "some-arn/*/GET/organisation"
                ],
                "Effect": "Allow"
            }
        ]
    },
    "context" : {
        "organization_id": "123"
    }
}

在后端站点,我想在DynamoDb上执行GetItem。映射模板如下所示:

{   
    "TableName":"Organisation",
    "Key":{
        "id":{
            "S":"$context.authorizer.organization_id"
        }
    }
}

但是,我收到错误,因为context变量似乎是空的:

Mon Jul 10 19:47:16 UTC 2017 : Endpoint request body after transformations: {   ""
    "TableName":"Organisation",
    "Key":{
        "id":{
            "S":""
        }
    }
}

Mon Jul 10 19:47:16 UTC 2017 : Endpoint response body before transformations: {"__type":"com.amazon.coral.service#SerializationException"}

任何建议,我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

经过大量测试后,我发现只有在使用AWS控制台进行测试时才会出现问题。此问题也包含在here中。希望AWS能够很快解决这个问题。