确定函数的目的 - Amazon CloudFront
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

确定函数的目的

在编写函数代码之前,请确定函数的用途。CloudFront Functions 中的大多数函数都具有以下用途之一。有关更多信息,请参阅与函数用途相对应的主题。

无论函数的用途是什么,handler 都是任何函数的入口点。它采用一个名为 event 的参数,该参数通过 CloudFront 传递到函数中。event 是一个 JSON 对象,它包含 HTTP 请求的表示形式(以及响应,如果您的函数修改了 HTTP 响应)。有关 event 对象结构的更多信息,请参阅 CloudFront Functions 事件结构

有关适用于 CloudFront Functions 和 Lambda@Edge 的限制的更多信息,请参阅 边缘函数的限制

在查看器请求事件类型中修改 HTTP 请求

您的函数可以修改 CloudFront 从查看器(客户端)收到的 HTTP 请求,然后将修改后的请求返回给 CloudFront 以继续处理。例如,您的函数代码可能会归一化缓存键或修改请求标头。

当您创建修改 HTTP 请求的函数时,请确保选择查看器请求事件类型。这意味着,在检查请求的对象是否在 CloudFront 缓存中之前,每当 CloudFront 收到来自查看器的请求时,该函数都会运行。

以下伪代码显示了修改 HTTP 请求的函数的结构。

function handler(event) { var request = event.request; // Modify the request object here. return request; }

该函数将修改后的 request 对象返回给 CloudFront。CloudFront 继续处理返回的请求,方法是检查 CloudFront 缓存是否存在缓存命中,并在必要时将请求发送到源。

有关 eventrequest 对象的结构的更多信息,请参阅 事件结构

在查看器请求事件类型中生成 HTTP 响应

您的函数可以在边缘生成 HTTP 响应并直接将其返回给查看器(客户端),而无需检查缓存的响应或由 CloudFront 进一步处理。例如,您的函数代码可能会将请求重定向到新的 URL,或者检查授权并将 401403 响应返回至未经授权的请求。

创建生成 HTTP 响应的函数时,请确保选择查看器请求事件类型。这意味着,每当 CloudFront 收到来自查看器的请求时,在 CloudFront 对请求进行任何进一步处理之前,该函数都会运行。

以下伪代码显示了生成 HTTP 响应的函数的结构。

function handler(event) { var request = event.request; var response = ...; // Create the response object here, // using the request properties if needed. return response; }

该函数将 response 对象返回给 CloudFront,CloudFront 立即将其返回给查看器,而无需检查 CloudFront 缓存或向源发送请求。

有关 eventrequestresponse 对象的结构的更多信息,请参阅 事件结构

在查看器响应事件类型中修改 HTTP 响应

您的函数可以在 CloudFront 将 HTTP 响应发送到查看器(客户端)之前修改 HTTP 响应,无论响应来自 CloudFront 缓存还是源。例如,您的函数代码可能会添加或修改响应标头、状态代码和正文内容。

当您创建修改 HTTP 响应的函数时,请确保选择查看器响应事件类型。这意味着,该函数在 CloudFront 向查看器返回响应之前运行,无论响应来自 CloudFront 缓存还是源。

以下伪代码显示了修改 HTTP 响应的函数的结构。

function handler(event) { var request = event.request; var response = event.response; // Modify the response object here, // using the request properties if needed. return response; }

该函数将修改后的 response 对象返回给 CloudFront,CloudFront 会立即将其返回给查看器。

有关 eventresponse 对象的结构的更多信息,请参阅 事件结构

有关为 CloudFront Functions 编写函数代码的更多信息,请参阅 事件结构JavaScript 运行时系统功能代码示例