如何访问API网关和cloudfront后面的lambda中的主机?

Dav*_*lsh 5 amazon-cloudfront aws-lambda aws-api-gateway

我有一个由 API 网关执行的 lambda 函数。我有 Cloudfront 将流量指向 API 网关端点。

如何在 lambda 函数中访问客户端所在的主机/域?

我可以将 Host 标头移至 X-Forwarded-Host 吗?

例如

abc.com(cloudfront) -> API 网关 -> lambda (主机:abc.com)

Cas*_*der 2

Host通过 Cloudfront 和 API Gateway 传播标头,请按照以下步骤操作:

配置 Cloudfront 以转发Host标头

分步指南

关键点:

选择“行为”选项卡,然后选择要将主机标头转发到的路径。

选择编辑。

在“缓存密钥和源请求”下,确认已选择“旧版缓存设置”。如果未选择,请按照上一节中的步骤创建缓存策略。如果选择旧版缓存设置,则完成以下操作: 对于标头,选择包括以下标头。从添加标头下拉列表中,选择主机。

配置API网关请求中继Host标头

详细文档在这里

关键点:

编辑您的 API 网关资源,对于您需要标头的每种方法,通过在HTTP 请求标头Host列表中添加标头来编辑方法请求。Host


您还可以将Host标头移动到X-Forwarded-Host使用 Cloudfront 函数,但您仍然需要按照上述步骤来传播X-Forwarded-Host标头。您可以从这个示例函数开始尝试一下。