

# 튜토리얼: CloudFront Functions를 사용하여 간단한 함수 생성
<a name="functions-tutorial"></a>

이 자습서에서는 CloudFront 함수를 시작하는 방법을 설명합니다. 뷰어를 다른 URL로 리디렉션하고 사용자 지정 응답 헤더를 반환하는 간단한 함수를 만들 수 있습니다.

**Contents**
+ [사전 조건](#functions-tutorial-prerequisites)
+ [함수 생성](#functions-tutorial-create)
+ [함수 확인](#functions-tutorial-verify)

## 사전 조건
<a name="functions-tutorial-prerequisites"></a>

CloudFront 함수를 사용하려면 CloudFront 배포가 필요합니다. 계정이 없는 경우 [CloudFront 표준 배포 시작](GettingStarted.SimpleDistribution.md) 단원을 참조하십시오.

## 함수 생성
<a name="functions-tutorial-create"></a>

CloudFront 콘솔을 사용하여 뷰어를 다른 URL로 리디렉션하고 사용자 지정 응답 헤더를 반환하는 간단한 함수를 만들 수 있습니다.

**CloudFront 함수를 생성하려면**

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

1. 탐색 창에서 **함수**를 선택한 후, **함수 생성**을 선택합니다.

1. **함수 생성** 페이지에서 **이름**에 *MyFunctionName*과 같은 함수 이름을 입력합니다.

1. (선택 사항) 설명에 **Simple test function**과 같은 기능에 대한 **설명**을 입력합니다.

1. **런타임**의 경우 선택한 기본 JavaScript 버전을 유지합니다.

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

1. 다음 함수 코드를 복사합니다. 이 함수 코드는 최종 사용자를 다른 URL로 리디렉션하고 사용자 지정 응답 헤더도 반환합니다.

   ```
   function handler(event) {
       // NOTE: This example function is for a viewer request event trigger. 
       // Choose viewer request for event trigger when you associate this function with a distribution. 
       var response = {
           statusCode: 302,
           statusDescription: 'Found',
           headers: {
               'cloudfront-functions': { value: 'generated-by-CloudFront-Functions' },
               'location': { value: 'https://aws.amazon.com/cloudfront/' }
           }
       };
       return response;
   }
   ```

1. **함수 코드**의 경우 코드를 코드 편집기에 붙여넣어 기본 코드를 대체합니다.

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

1. (선택 사항) 함수를 게시하기 전에 테스트할 수 있습니다. 이 자습서에서는 함수를 테스트하는 방법에 대해 설명하지 않습니다. 자세한 내용은 [함수 테스트](test-function.md) 섹션을 참조하세요.

1. **게시** 탭을 선택한 다음 **게시 함수**를 선택합니다. 함수를 CloudFront 배포와 연결하려면 먼저 함수를 게시해야 합니다**.

1. 다음으로 함수를 배포 또는 캐시 동작과 연결할 수 있습니다. *MyFunctionName*페이지에서 **게시** 탭을 선택합니다.
**주의**  
다음 단계에서는 테스트에 사용할 배포 또는 캐시 동작을 선택합니다. 이 테스트 함수를 프로덕션 환경에서 사용되는 배포 또는 캐시 동작과 연결하지 마세요.

1. **Add association**을 선택합니다.

1. **연결** 대화 상자에서 배포 및/또는 캐시 동작을 선택합니다. **이벤트 유형**의 경우 기본값을 유지합니다.

1. **연결 추가**를 선택합니다.

   **연결된 배포** 테이블에 연결된 배포가 표시됩니다.

1. 연결된 배포가 배포될 때까지 몇 분 정도 기다립니다. 그런 다음 배포 상태를 확인하려면 **연결된 배포** 테이블에서 해당 배포를 선택하고 **배포 보기**를 선택합니다.

   배포의 상태가 **배포됨**(Deployed)이면 함수가 작동하는지 확인할 준비가 된 것입니다.

## 함수 확인
<a name="functions-tutorial-verify"></a>

함수를 배포한 후 해당 함수가 배포에서 작동하는지 확인할 수 있습니다.

**함수를 확인하려면**

1. 웹 브라우저에서 배포의 도메인 이름(예: `https://d111111abcdef8.cloudfront.net`)으로 이동합니다.

   이 함수는 브라우저로 리디렉션을 반환하므로 브라우저가 자동으로 `https://aws.amazon.com/cloudfront/`(으)로 이동합니다.

1. 명령줄 창에서 같은 **curl** 도구를 사용하여 배포의 도메인 이름으로 요청을 보낼 수 있습니다.

   ```
   curl -v https://d111111abcdef8.cloudfront.net/
   ```

   응답에는 리디렉션 응답(`302 Found`)과 함수가 추가한 사용자 지정 응답 헤더가 표시됩니다. 응답은 다음 예와 같이 보일 수 있습니다.  
**Example**  

   ```
   curl -v https://d111111abcdef8.cloudfront.net/
   > GET / HTTP/1.1
   > Host: d111111abcdef8.cloudfront.net
   > User-Agent: curl/7.64.1
   > Accept: */*
   >
   < HTTP/1.1 302 Found
   < Server: CloudFront
   < Date: Tue, 16 Mar 2021 18:50:48 GMT
   < Content-Length: 0
   < Connection: keep-alive
   < Location: https://aws.amazon.com/cloudfront/
   < Cloudfront-Functions: generated-by-CloudFront-Functions
   < X-Cache: FunctionGeneratedResponse from cloudfront
   < Via: 1.1 3035b31bddaf14eded329f8d22cf188c.cloudfront.net (CloudFront)
   < X-Amz-Cf-Pop: PHX50-C2
   < X-Amz-Cf-Id: ULZdIz6j43uGBlXyob_JctF9x7CCbwpNniiMlmNbmwzH1YWP9FsEHg==
   ```