概览和工作流 - Amazon CloudFront

概览和工作流

CloudFront 连接函数是一类专用 CloudFront Functions,当客户端尝试建立 mTLS 连接时,这些函数会在 TLS 握手过程中运行。您的连接函数可获取客户端证书信息、mTLS 配置参数、证书吊销检查结果和客户端 IP 地址。

连接函数将在 CloudFront 执行标准证书验证(信任链、到期、签名验证)后进行调用,即使证书吊销检查失败,函数也可以运行。这可让您实施自定义逻辑,以便处理已吊销证书或添加其他验证标准。

创建并发布连接函数后,请务必为连接请求事件类型添加与已启用 mTLS 的分配的关联。这样一来,只要客户端尝试与 CloudFront 建立 mTLS 连接,该函数就会运行。

CloudFront 连接函数遵循两阶段生命周期,可让您先开发并测试函数,然后再将函数部署到生产环境中。此工作流可确保您的连接函数正常运行,然后再用于处理实时流量。

函数阶段

连接函数存在于以下两个阶段之一:

  • DEVELOPMENT:可以修改、测试和更新处于此阶段的函数。当函数处于此阶段时,可以编写和调试函数代码。

  • LIVE:处于此阶段的函数是只读的,可以处理生产流量。您无法直接修改处于 LIVE 阶段的函数。

在创建新的连接函数时,它首先会处于 DEVELOPMENT 阶段。在测试和验证函数后,可以发布函数以将其移至 LIVE 阶段。

开发工作流程

按照此工作流操作,开发和部署连接函数:

  1. 创建:使用初始代码和配置创建处于 DEVELOPMENT 阶段的新连接函数。

  2. 测试:在部署之前,使用测试功能通过示例连接事件验证您的函数。

  3. 更新:根据测试结果按需修改函数代码和配置。

  4. 发布:准备好用于生产环境后,发布函数以将其从 DEVELOPMENT 阶段移至 LIVE 阶段。

  5. 关联:将已发布的函数与已启用 mTLS 的分配相关联以处理实时连接。

要对 LIVE 函数进行更改,您必须更新 DEVELOPMENT 版本并将其重新发布。这将创建处于 LIVE 阶段的新版本。

与其他函数类型的区别

连接函数在几个关键方面与查看器请求和查看器响应函数不同:

  • 连接函数在 mTLS 握手之后且进行任何 HTTP 处理之前运行

  • 连接函数有权获取 TLS 证书信息,而非 HTTP 请求/响应数据

  • 连接函数只能允许或拒绝连接,而不能修改 HTTP 数据

  • 连接函数仅针对新 TLS 连接调用,而不用于连接重用场景

  • mTLS 不支持 TLS 会话恢复,以确保每次连接都进行证书验证

  • 连接函数在标准查看器请求和查看器响应函数之外独立运行

  • 您可以在分配级别而不是在缓存行为级别关联连接函数。

  • 连接函数仅支持 JavaScript 运行时 2.0。