Amazon Web ServicesCloud

API Gateway 调用lambda函数 并加入权限认证Tips

在Aws控制台创建API Gateway服务,我们这里创建HTTP的Api Gateway。

集成选择lamda函数

lambda_apigateway的代码比较简单,只是返回一个’Hello from Lambda!’

export const handler = async(event) => {
    // TODO implement
    const response = {
        statusCode: 200,
        body: JSON.stringify('Hello from Lambda!'),
    };
    return response;
};

给API Gateway配置Routes

配置一个路由/abc1

用RESTClient测试一下。

我们可以给Api Gateway附加授权,就是在Api Gateway调用lambda函数之前,加一个权限的验证。这个权限验证可以是JWT,也可以是另外一个lambda函数。

我们使用lambda函数来做授权

授权lambda函数的例子

export const handler = async(event) => {
    let response = {
        "isAuthorized": false,
        "context": {
            "stringKey": "value",
            "numberKey": 1,
            "booleanKey": true,
            "arrayKey": ["value1", "value2"],
            "mapKey": {"value1": "value2"}
        }
    };
    
    if (event.headers.authorization === "secretToken") {
        response = {
            "isAuthorized": true,
            "context": {
                "stringKey": "value",
                "numberKey": 1,
                "booleanKey": true,
                "arrayKey": ["value1", "value2"],
                "mapKey": {"value1": "value2"}
            }
        };
    }

    return response;

};

创建成功

我们再次测试一下,发现调用失败了。

在Header中加入authorization:secretToken, 调用成功!