

# 오리진 상호 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 인증을 유지하면서 사용자 지정 라우팅 로직을 구현할 수 있습니다. 서로 다른 인증서를 사용하는 오리진 간 전환은 `selectRequestOriginById()` 및 `createRequestOriginGroup()` API를 통해 지원됩니다.
+ **오리진 mTLS 비활성화:** 함수에서 `mTLSConfig: 'off'`를 설정하여 mTLS가 활성화된 오리진에서 비 mTLS 오리진으로 전환할 수 있습니다. 이렇게 하면 요청 특성에 따라 상호 TLS 인증을 조건부로 비활성화할 수 있는 유연성이 제공됩니다.

#### 예: 동일한 인증서를 사용하여 오리진 mTLS 오리진 간 전환
<a name="example-switching-mtls-origins"></a>

```
import cf from 'cloudfront';

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

    // Route to different origin based on request path
    if (request.uri.startsWith('/api/v2')) {
        cf.updateRequestOrigin({
            "domainName": "api-v2.example.com",
            "mTLSConfig": "inherit",
            // If no value is provided for mTLSConfig, it defaults to inherit
            // Both origins must use the same certificate
        });
    }

    return request;
}
```

#### 예: 조건부로 오리진 mTLS 비활성화
<a name="example-disabling-mtls"></a>

```
import cf from 'cloudfront';

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

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

    return request;
}
```

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

`selectRequestOriginById()` 함수는 상호 TLS(오리진)가 활성화된 오리진 선택을 지원합니다. 이 함수를 사용하여 배포에 구성된 mTLS 지원 오리진으로 요청을 동적으로 라우팅할 수 있습니다. ID별로 상호 TLS(오리진)가 활성화된 오리진을 선택하면 CloudFront는 배포 설정에서 해당 오리진에 대해 구성된 클라이언트 인증서를 사용합니다.

#### 예: ID별로 상호 TLS(오리진) 지원 오리진 선택
<a name="example-select-mtls-origin-by-id"></a>

```
import cf from 'cloudfront';

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

    // Select mTLS-enabled origin based on request characteristics
    if (request.uri.startsWith('/secure-api')) {
        cf.selectRequestOriginById("mtls-origin-1");
    }

    return request;
}
```

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

`createRequestOriginGroup()` 함수는 상호 TLS(오리진)가 활성화된 오리진을 포함하는 오리진 그룹 생성을 지원합니다. CloudFront Functions 내에서 장애 조치 시나리오에 대해 mTLS 지원 오리진을 사용하여 오리진 그룹을 동적으로 생성할 수 있습니다.

#### 예: 상호 TLS(오리진)가 활성화된 오리진 그룹 생성
<a name="example-create-mtls-origin-group"></a>

```
import cf from 'cloudfront';

function handler(event) {
    // Create origin group with mTLS-enabled primary and failover origins
    cf.createRequestOriginGroup({
        "originIds": ["mtls-origin-primary", "mtls-origin-failover"],
        "failoverCriteria": {
            "statusCodes": [500, 502, 503, 504]
        }
    });

    return event.request;
}
```