

# 상호 TLS(뷰어) 검증을 위한 CloudFront 연결 함수 생성
<a name="create-connection-functions"></a>

CloudFront 연결 함수는 다음 두 단계로 생성합니다.

1. 함수 코드를 JavaScript로 생성합니다. CloudFront 콘솔의 기본 예제를 사용하거나, 직접 작성할 수 있습니다. 자세한 내용은 다음 항목을 참조하세요.
   + mTLS 검증을 위한 CloudFront 연결 함수 코드 작성
   + CloudFront 연결 함수 이벤트 구조 및 응답 형식
   + 연결 함수 코드 예제

1. CloudFront를 사용하여 연결 함수를 생성하고 코드를 포함합니다. 코드는 함수 내에 존재합니다(참조용이 아님).

**Topics**
+ [CloudFront 콘솔](#create-connection-function-console)
+ [AWS CLI](#create-connection-function-cli)

## CloudFront 콘솔
<a name="create-connection-function-console"></a>

**연결 함수를 생성하려면**

1. AWS Management Console에 로그인한 다음 [https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home)에서 CloudFront 콘솔을 엽니다.

1. **함수 생성**을 선택합니다.

1. AWS 계정 내에서 고유한 함수 이름을 입력하고 함수 유형으로 **연결 함수**를 선택한 다음 **계속**을 선택합니다.

1. 새 연결 함수의 세부 정보 페이지가 나타납니다.
**참고**  
연결 함수는 JavaScript 런타임 2.0만 지원합니다. 함수에서 CloudFront 연결 함수 KeyValueStore 통합을 사용하려면 이 런타임 버전을 사용해야 합니다.

1. **함수 코드** 섹션에서 **빌드** 탭을 선택하고 연결 함수 코드를 입력합니다. 빌드 탭에 포함된 샘플 코드는 연결 함수 코드의 기본 구문을 보여줍니다.

1. **변경 사항 저장**을 선택합니다.

1. 연결 함수 코드가 인증서 해지 확인 또는 디바이스 검증에 KeyValueStore를 사용하는 경우 KeyValueStore를 연결해야 합니다.

   함수를 처음 생성할 때 KeyValueStore를 연결할 수 있습니다. 또는 연결 함수를 연결하여 나중에 연결할 수 있습니다.

   지금 KeyValueStore를 연결하려면 다음 단계를 따르세요.
   + **KeyValueStore 연결** 섹션에서 **기존 KeyValueStore 연결**을 선택합니다.
   + 연결 함수의 인증서 데이터가 포함된 KeyValueStore를 선택한 다음 **KeyValueStore 연결**을 선택합니다.

   CloudFront는 저장소를 함수와 즉시 연결하므로 함수를 저장하지 않아도 됩니다.

## AWS CLI
<a name="create-connection-function-cli"></a>

AWS CLI를 사용하는 경우 일반적으로 먼저 파일에 연결 함수 코드를 생성한 다음 AWS CLI로 함수를 생성합니다.

**연결 함수를 생성하려면**

1. 연결 함수 코드를 파일로 만든 다음 컴퓨터가 연결할 수 있는 디렉터리에 저장합니다.

1. 다음 예제와 같이 명령을 실행합니다. 이 예제에서는 `fileb://` 표기법을 사용하여 파일을 전달합니다. 명령을 더 쉽게 읽을 수 있도록 줄 바꿈도 포함되어 있습니다.

   ```
   aws cloudfront create-connection-function \
       --name CertificateValidator \
       --connection-function-config '{
           "Comment":"Device certificate validation",
           "Runtime":"cloudfront-js-2.0",
           "KeyValueStoreAssociations":{
               "Quantity":1,
               "Items":[{
                   "KeyValueStoreARN":"arn:aws:cloudfront::111122223333:key-value-store/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111"
               }]
           }
       }' \
       --connection-function-code fileb://certificate-validator.js
   ```
**참고**  
**런타임** - 연결 함수는 JavaScript 런타임 2.0(cloudfront-js-2.0)만 지원합니다.
**KeyValueStoreAssociations** - 연결 함수가 인증서 검증에 KeyValueStore를 사용하는 경우, 함수를 처음 생성할 때 KeyValueStore를 연결할 수 있습니다. 또는 update-connection-function을 사용하여 나중에 연결할 수 있습니다. 각 연결 함수에 KeyValueStore가 하나만 연결될 수 있기 때문에 수량은 항상 1입니다.

1. 명령이 제대로 실행되면 다음과 비슷한 출력이 표시됩니다.

   ```
   ETag: ETVABCEXAMPLE
   ConnectionFunctionSummary:
     ConnectionFunctionConfig:
       Comment: Device certificate validation
       Runtime: cloudfront-js-2.0
       KeyValueStoreAssociations:
         Quantity: 1
         Items:
           - KeyValueStoreARN: arn:aws:cloudfront::111122223333:key-value-store/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111
     ConnectionFunctionMetadata:
       CreatedTime: '2024-09-04T16:32:54.292000+00:00'
       ConnectionFunctionARN: arn:aws:cloudfront::111122223333:connection-function/CertificateValidator
       LastModifiedTime: '2024-09-04T16:32:54.292000+00:00'
       Stage: DEVELOPMENT
     Name: CertificateValidator
     Status: UNPUBLISHED
   Location: https://cloudfront.amazonaws.com/2020-05-31/connection-function/arn:aws:cloudfront:::connection-function/CertificateValidator
   ```

   대부분의 정보는 요청에서 반복된 내용입니다. 기타 정보는 CloudFront에 의해 추가됩니다.
**참고**  
**ETag** - 이 값은 연결 함수를 수정할 때마다 변경됩니다. 함수를 업데이트하거나 게시하려면 이 값이 필요합니다.
**단계** - 새 연결 함수는 개발 단계에서 시작됩니다. 함수를 배포와 연결하기 전에 함수를 게시하여 라이브 단계로 이동해야 합니다.
**상태** - 라이브 단계에 게시할 때까지 함수 상태는 ‘게시되지 않음’입니다.