

# 概览和工作流
<a name="connection-functions-overview"></a>

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

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

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

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

**Topics**
+ [函数阶段](#connection-function-stages)
+ [开发工作流程](#connection-function-development-workflow)
+ [与其他函数类型的区别](#connection-function-differences)

## 函数阶段
<a name="connection-function-stages"></a>

连接函数存在于以下两个阶段之一：
+ **DEVELOPMENT**：可以修改、测试和更新处于此阶段的函数。当函数处于此阶段时，可以编写和调试函数代码。
+ **LIVE**：处于此阶段的函数是只读的，可以处理生产流量。您无法直接修改处于 LIVE 阶段的函数。

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

## 开发工作流程
<a name="connection-function-development-workflow"></a>

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

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

1. **测试**：在部署之前，使用测试功能通过示例连接事件验证您的函数。

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

1. **发布**：准备好用于生产环境后，发布函数以将其从 DEVELOPMENT 阶段移至 LIVE 阶段。

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

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

## 与其他函数类型的区别
<a name="connection-function-differences"></a>

连接函数在几个关键方面与查看器请求和查看器响应函数不同：
+ 连接函数在 mTLS 握手之后且进行任何 HTTP 处理之前运行
+ 连接函数有权获取 TLS 证书信息，而非 HTTP 请求/响应数据
+ 连接函数只能允许或拒绝连接，而不能修改 HTTP 数据
+ 连接函数仅针对新 TLS 连接调用，而不用于连接重用场景
+ mTLS 不支持 TLS 会话恢复，以确保每次连接都进行证书验证
+ 连接函数在标准查看器请求和查看器响应函数之外独立运行
+ 您可以在分配级别而不是在缓存行为级别关联连接函数。
+ 连接函数仅支持 JavaScript 运行时 2.0。