要在AWS Lambda@Edge中追加查询字符串到响应,你可以使用以下解决方法:
创建一个Lambda函数:
exports.handler = async (event, context, callback) => {
const response = event.Records[0].cf.response;
const request = event.Records[0].cf.request;
const queryStrings = [
{ key: 'param1', value: 'value1' },
{ key: 'param2', value: 'value2' },
];
queryStrings.forEach((queryString) => {
const { key, value } = queryString;
const updatedUri = `${request.uri}?${key}=${value}`;
response.headers['location'] = [{ key: 'Location', value: updatedUri }];
});
callback(null, response);
};
部署Lambda函数:
aws lambda create-function --function-name AppendQueryStrings --runtime nodejs12.x --handler index.handler --role --zip-file fileb://./lambda.zip --region
创建Lambda@Edge分发:
这样,当有请求触发CloudFront分发时,Lambda函数将会在响应返回给客户端之前,追加指定的查询字符串到响应的URL中。请根据你的实际需求修改代码中的查询字符串和Lambda函数的名称。