

# オリジンの相互 TLS で CloudFront Functions を使用する
<a name="origin-mtls-cloudfront-functions"></a>

CloudFront Functions は、エッジでの軽量なサーバーレスコンピューティングを提供し、コンテンツ配信をカスタマイズします。CloudFront Functions でオリジンの相互 TLS を使用する場合、オリジンの選択と操作に関して注意すべき特定の動作と制限があります。

## サポートされている CloudFront Functions オペレーション
<a name="supported-cloudfront-functions-operations"></a>

CloudFront Functions は、次の方法で mTLS が有効なオリジンとやり取りできます。

### updateRequestOrigin()
<a name="update-request-origin-function"></a>

updateRequestOrigin() 関数は、mTLS が有効なオリジンを使用するときに、制限された変更をサポートしています。
+ **オリジンの mTLS のオリジン間の切り替え:** 両方のオリジンが同じ**クライアント証明書**を使用する場合、リクエストを更新して、オリジンの mTLS を使用する別のオリジンにルーティングできます。これにより、相互 TLS 認証を維持しながら、カスタムルーティングロジックを実装できます。
+ **オリジンの mTLS の無効化:** 関数で `mTLSConfig: 'off'` を設定することで、mTLS が有効なオリジンから mTLS を使用しないオリジンに切り替えることができます。これにより、リクエストの特性に基づいて相互 TLS 認証を条件付きで無効にする柔軟性が得られます。

#### 例: 同じ証明書を持つオリジンの mTLS オリジン間の切り替え
<a name="example-switching-mtls-origins"></a>

```
function handler(event) {
    var request = event.request;

    // Route to different origin based on request path
    if (request.uri.startsWith('/api/v2')) {
        request.origin = {
            domainName: 'api-v2.example.com',
            customHeaders: {},
            // Both origins must use the same certificate
        };
    }

    return request;
}
```

#### 例: 条件付きでオリジンの mTLS を無効にする
<a name="example-disabling-mtls"></a>

```
function handler(event) {
    var request = event.request;

    // Disable mTLS for specific paths
    if (request.uri.startsWith('/public')) {
        request.origin = {
            domainName: 'public-origin.example.com',
            customHeaders: {},
            mTLSConfig: 'off'
        };
    }

    return request;
}
```

## サポートされていない CloudFront Functions オペレーション
<a name="unsupported-cloudfront-functions-operations"></a>

次の CloudFront Functions オペレーションは、mTLS が有効なオリジンを一般提供でサポートしていません。

### selectRequestOriginById()
<a name="select-request-origin-by-id-function"></a>

`selectRequestOriginById()` 関数は、オリジンの mTLS が有効になっているオリジンを選択できません。この関数を使用して mTLS が有効なオリジンを選択しようとすると、検証エラーが発生します。

ユースケースでオリジンの mTLS を使用した動的オリジン選択が必要な場合は、代わりに `updateRequestOrigin()` を使用し、すべてのターゲットオリジンが同じクライアント証明書を使用していることを確認します。

### createRequestOriginGroup()
<a name="create-request-origin-group-function"></a>

`createRequestOriginGroup()` 関数は、mTLS が有効なオリジンを含むオリジングループの作成をサポートしていません。オリジンの mTLS のオリジンを持つオリジングループは、CloudFront Functions を介して動的に作成することはできません。

オリジンの mTLS でオリジンフェイルオーバー機能が必要な場合は、関数で動的に作成するのではなく、CloudFront ディストリビューション設定でオリジングループを直接設定します。