如何在 Cloudfront Lambda@Edge Origin Request 中添加自定义标头?

Mih*_*ban 2 amazon-web-services amazon-cloudfront aws-lambda aws-lambda-edge

我有一个自定义来源的 Cloudfront 发行版。

我想使用 Lambda@Edge 源请求来修改和添加一些额外的标头以转发到我的源服务器。

下面是我的 Lambda 函数。该custom_header是CloudWatch的日志我的LAMBDA可见,但在我的自定义服务器请求头不显示:(。

exports.handler = (event, context, callback) => {
  const request = event.Records[0].cf.request;
  const headers = request.headers;

  headers['custom_header'] = [{ key: 'custom_header', value: 'custom_header' }];

  return callback(null, request);
}
Run Code Online (Sandbox Code Playgroud)

我希望custom_header在我的 Node.js 路由中可见req.headers

小智 6

自定义标头可以通过以下结构传递。

request.origin.custom.customHeaders

参考:https : //docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/lambda-event-structure.html#lambda-event-structure-request

所以,代码应该看起来像 .

exports.handler = (event, context, callback) => {
  const request = event.Records[0].cf.request;
  const headers = request.headers;

  request.origin.custom.customHeaders['custom_header'] = [{ key: 'custom_header', value: 'custom_header' }];

  return callback(null, request);
}
Run Code Online (Sandbox Code Playgroud)