将查询参数从云端传递到 api 网关

pass query params from cloudfront to api gateway

我在前面创建了一个带有 API 网关和 Cloudfront 分发的 lambda 函数

在云端行为中我禁用了缓存

这是 lambda 函数:

exports.handler = async (event) => {
    const response = {
        statusCode: 200,
        body: JSON.stringify('rawQueryString is: ' + event.rawQueryString),
    };
    return response;
};

调用 api 网关我在 lambda 响应中看到查询字符串 https://xxx.execute-api.us-east-1.amazonaws.com/api?name=john

rawQueryString is: '?name=john'

调用云端分发我在 lambda 响应中看不到查询字符串 https://xxx.cloudfront.net/api?name=john

rawQueryString is: ''

我尝试使用“来源请求策略”

但现在当我打电话给 https://xxx.cloudfront.net/api?name=john

我明白了

{
    "message": "Forbidden"
}

您应该设置 origin request policies for your cache behavior. You can try with AWS managed Managed-AllViewer 策略或 创建新策略 只是为了转发查询字符串: