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

时间:2018-12-25 11:09:20

标签: amazon-web-services aws-lambda amazon-cloudfront aws-lambda-edge

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

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

下面是我的lambda函数。 custom_header在我的lambda的Cloudwatch日志中可见,但未显示在我的自定义服务器请求标头中:(。

        DateTime StartDate = DateTime.Today;
        DateTime EndDate = DateTime.Today.AddMonths(2);
        CalendarView cv = new CalendarView(StartDate, EndDate);
        String MailboxToAccess = "user@domain.com";
        FolderId CalendarFolderId = new FolderId(WellKnownFolderName.Calendar, MailboxToAccess);
        FindItemsResults<Appointment> fapts = service.FindAppointments(CalendarFolderId, cv);
        if (fapts.Items.Count > 0)
        {
            foreach (Appointment Appoint in fapts)
            {
                Console.WriteLine(Appoint.Start);
                Console.WriteLine(Appoint.Subject);
            }
        }

我希望custom_header在我的NodeJS路由中的req.headers下可见。

1 个答案:

答案 0 :(得分:1)

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

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);
}