

# 概要とワークフロー
<a name="connection-functions-overview"></a>

CloudFront Connection Functions は、クライアントが mTLS 接続を確立しようとするときに TLS ハンドシェイク中に実行される特別な種類の CloudFront Functions です。Connection Function は、クライアント証明書情報、mTLS 設定パラメータ、証明書失効チェックの結果、クライアント IP アドレスにアクセスできます。

接続関数は、CloudFront が標準証明書検証 (信頼チェーン、有効期限、署名の検証) を実行した後に呼び出されますが、証明書失効チェックが失敗した場合でも実行できます。これにより、取り消された証明書を処理するカスタムロジックを実装したり、検証基準を追加したりできます。

Connection Function を作成して公開した後、mTLS が有効なディストリビューションとの接続リクエストイベントタイプの関連付けを追加してください。これにより、クライアントが CloudFront との mTLS 接続を確立しようとするたびに関数が実行されるようになります。

CloudFront Connection Functions は、本番環境にデプロイする前に関数を開発し、テストできる 2 段階のライフサイクルに従います。このワークフローにより、ライブトラフィックに影響を与える前に Connection Functions が正しく動作します。

**Topics**
+ [関数のステージ](#connection-function-stages)
+ [開発ワークフロー](#connection-function-development-workflow)
+ [他の種類の関数との違い](#connection-function-differences)

## 関数のステージ
<a name="connection-function-stages"></a>

接続関数は、次の 2 つのステージのいずれかに存在します。
+ **開発** - このステージの関数は、変更、テスト、更新ができます。このステージを使用して、関数コードの記述およびデバッグができます。
+ **ライブ** - このステージの関数は読み取り専用で、本番環境のトラフィックを処理します。ライブステージの関数を直接変更することはできません。

新しい接続関数を作成すると、**開発**ステージで開始します。テストと検証の後、関数を発行して**ライブ**ステージに移行します。

## 開発ワークフロー
<a name="connection-function-development-workflow"></a>

このワークフローに従って、Connection Functions を開発およびデプロイします。

1. **作成** - 初期コードと設定を使用し、開発ステージで新しい接続関数を作成します。

1. **テスト** - テスト機能を使用し、デプロイ前にサンプル接続イベントで関数を検証します。

1. **更新** - テスト結果に基づき、必要に応じて関数コードと設定を変更します。

1. **発行** - 本番環境の準備ができたら、関数を公開して、開発ステージからライブステージに移行します。

1. **関連付け** - 発行された関数を mTLS が有効なディストリビューションに関連付けて、ライブ接続を処理します。

ライブの関数を変更するには、開発バージョンを更新して再度発行する必要があります。これにより、ライブステージに新しいバージョンが作成されます。

## 他の種類の関数との違い
<a name="connection-function-differences"></a>

接続関数は、いくつかの重要な点でビューワーリクエストおよびビューワーレスポンス関数とは異なります。
+ 接続関数は、HTTP 処理が発生する前、mTLS ハンドシェイクの後に実行されます
+ 接続関数は、HTTP リクエスト/レスポンスデータの代わりに TLS 証明書情報にアクセスできます
+ 接続関数は接続の許可または拒否のみを行うことができ、HTTP データを変更することはできません
+ 接続関数は、接続の再利用ではなく、新しい TLS 接続に対してのみ呼び出されます
+ TLS セッションの再開は、すべての接続で証明書の検証が行われるように、mTLS ではサポートされていません。
+ 接続関数は、標準のビューワーリクエストおよびビューワーレスポンス関数に加えて実行されます。
+ Connection Functions は、キャッシュ動作レベルではなく、ディストリビューションレベルで関連付けます。
+ 接続関数は JavaScript ランタイム 2.0 のみをサポートします。