将查询参数从云端传递到 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 策略或 创建新策略 只是为了转发查询字符串:
我在前面创建了一个带有 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 策略或 创建新策略 只是为了转发查询字符串: