

# Lambda@Edge 함수 작성 및 생성
<a name="lambda-edge-create-function"></a>

Lambda@Edge를 사용하려면 AWS Lambda 함수에 대한 코드를 *작성*해야 합니다. Lambda@Edge 함수를 작성하는 데 도움이 되도록 다음 리소스를 참조하세요.
+  [Lambda@Edge 이벤트 구조](lambda-event-structure.md) – Lambda@Edge와 함께 사용할 이벤트 구조를 이해합니다.
+ [Lambda@Edge 예제 함수](lambda-examples.md) – A/B 테스트 및 HTTP 리디렉션 생성 등의 예시 함수입니다.

Lambda@Edge에서 Node.js 또는 Python을 사용하는 프로그래밍 AWS 리전에서 Lambda를 사용하는 것과 동일합니다. 자세한 내용은 **AWS Lambda 개발자 안내서의 [Node.js를 사용하여 Lambda 함수 작성](https://docs.aws.amazon.com/lambda/latest/dg/lambda-nodejs.html) 또는 [Python을 사용하여 Lambda 함수 작성](https://docs.aws.amazon.com/lambda/latest/dg/lambda-python.html)을 참조하세요.

Lambda@Edge 함수에 `callback` 파라미터를 포함하고 요청 또는 응답 이벤트에 해당되는 객체를 반환합니다.
+ **요청 이벤트** - 응답에 `cf.request` 객체를 포함합니다.

  응답을 생성하는 경우 응답에 `cf.response` 객체를 포함합니다. 자세한 내용은 [요청 트리거에서 HTTP 응답 생성](lambda-generating-http-responses.md#lambda-generating-http-responses-in-requests) 단원을 참조하세요.
+ **응답 이벤트** - 응답에 `cf.response` 객체를 포함합니다.

코드를 직접 작성하거나 예제 중 하나를 사용한 후 Lambda에서 함수를 생성합니다. 함수를 생성하거나 기존 함수를 편집하려면 다음 주제를 참조하세요.

**Topics**
+ [Lambda@Edge 함수 생성](lambda-edge-create-in-lambda-console.md)
+ [Lambda 함수 편집](lambda-edge-edit-function.md)

 Lambda에서 함수를 생성한 후에는 *triggers*라고 하는 특정 CloudFront 이벤트를 기반으로 함수를 실행하도록 Lambda를 설정합니다. 자세한 내용은 [Lambda@Edge 함수에 대한 트리거 추가](lambda-edge-add-triggers.md) 섹션을 참조하세요.

# Lambda@Edge 함수 생성
<a name="lambda-edge-create-in-lambda-console"></a>

CloudFront 이벤트를 기반으로 한 Lambda 함수를 실행하도록 AWS Lambda를 설정하려면 다음 절차를 수행합니다.<a name="lambda-edge-create-function-procedure"></a>

**Lambda@Edge 함수를 생성하려면**

1. AWS Management Console에 로그인하고 AWS Lambdahttps://console.aws.amazon.com/lambda/[에서 ](https://console.aws.amazon.com/lambda/) 콘솔을 엽니다.

1. 이미 하나 이상의 Lambda 함수가 있는 경우에는 **함수 생성**을 선택합니다.

   아무 함수도 없는 경우 **Get Started Now**(지금 시작하기)를 선택합니다.

1. 페이지 상단의 리전 목록에서 **미국 동부(버지니아 북부)(US East (N. Virginia))**를 선택합니다.

1. 자체 코드를 사용하여 함수를 생성하거나 CloudFront 청사진으로 시작하는 함수를 생성합니다.
   + 자체 코드를 사용하여 함수를 생성하려면 **새로 작성**을 선택합니다.
   + CloudFront용 청사진 목록을 표시하려면 필터 필드에 **cloudfront**를 입력한 다음, **Enter** 키를 누릅니다.

     사용할 청사진을 찾은 경우 청사진 이름을 선택합니다.

1. **기본 정보** 섹션에서 다음 값을 지정합니다.

   1. **이름** – 함수의 이름을 입력합니다.

   1. **역할** - 빠르게 시작하려면 **템플릿에서 새 역할 만들기**를 선택합니다. **기존 역할 선택** 또는 **사용자 지정 역할 생성**을 선택한 다음 지시에 따라 이 섹션의 정보를 작성할 수도 있습니다.

   1. **역할 이름** – 역할의 이름을 입력합니다.

   1. **정책 템플릿** – **기본 Edge Lambda 권한**을 선택합니다.

1. 4단계에서 **새로 작성**을 선택한 경우 7단계로 건너뜁니다.

   4단계에서 청사진을 선택한 경우 **cloudfront** 단원에서 이 함수를 CloudFront 배포 및 CloudFront 이벤트의 캐시와 연결하는 트리거를 하나 생성할 수 있습니다. 이때 함수 생성 시 트리거가 없도록 **제거**를 선택하는 것이 좋습니다. 그런 다음, 나중에 트리거를 추가할 수 있습니다.
**작은 정보**  
트리거를 추가하기 전에 함수를 테스트하고 디버깅하는 것이 좋습니다. 지금 트리거를 추가하면 함수가 생성되어 전 세계의 AWS 위치로 복제를 완료하고 난 후 해당 배포가 배포되는 즉시 함수가 실행됩니다.

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

   Lambda는 함수의 두 버전인 \$1LATEST와 Version 1을 생성합니다. \$1LATEST 버전만 편집할 수 있지만 콘솔에 처음에는 Version 1이 표시됩니다.

1. 함수를 편집하려면 페이지 위쪽의, 함수 ARN 아래에서 **Version 1**을 선택합니다. 그런 다음, **버전** 탭에서 **\$1LATEST**를 선택합니다. 함수에서 나간 후 다시 돌아오면 버튼 레이블이 **한정자**로 바뀌어 있습니다.

1. **구성** 탭에서 해당하는 **코드 입력 유형**을 선택합니다. 그런 다음, 프롬프트의 메시지를 따라 코드를 편집하거나 업로드합니다.

1. **실행 시간**에서 함수 코드를 기반으로 값을 선택합니다.

1. **태그** 섹션에서 해당하는 태그를 추가합니다.

1. **작업**을 선택한 다음, **Publish new version**(새 버전 게시)을 선택합니다.

1. 새 함수 버전의 설명을 입력합니다.

1. [**Publish**]를 선택합니다.

1. 함수를 테스트하고 디버깅합니다. Lambda 콘솔 테스트에 대한 자세한 내용은 AWS Lambda 개발자 안내서**에서 [콘솔을 사용하여 Lambda 함수 호출](https://docs.aws.amazon.com/lambda/latest/dg/getting-started.html#get-started-invoke-manually)을 참조하세요.

1. CloudFront 이벤트에 대해 함수를 실행할 준비가 되면 다른 버전을 게시하고 함수를 편집하여 트리거를 추가합니다. 자세한 내용은 [Lambda@Edge 함수에 대한 트리거 추가](lambda-edge-add-triggers.md) 섹션을 참조하세요.

# Lambda 함수 편집
<a name="lambda-edge-edit-function"></a>

Lambda@Edge 함수를 생성한 후 Lambda 콘솔을 사용하여 편집할 수 있습니다.

**참고**  
원래 버전은 \$1LATEST라고 표시되어 있습니다.
\$1LATEST 버전만 편집할 수 있습니다.
\$1LATEST 버전을 편집할 때마다 번호가 지정된 새 버전을 게시해야 합니다.
\$1LATEST에 대한 트리거는 생성할 수 없습니다.
새 버전의 함수를 게시하면 Lambda는 이전 버전의 트리거를 새 버전으로 자동 복사하지 않습니다. 새 버전에 대한 트리거를 다시 생성해야 합니다.
CloudFront 이벤트에 대한 트리거를 함수에 추가할 때 동일한 함수의 이전 버전에 대해 동일한 배포, 캐시 동작 및 이벤트에 대한 트리거가 이미 존재하면 Lambda는 이전 버전에서 트리거를 삭제합니다.
트리거를 추가하는 등 CloudFront 배포를 업데이트한 후에는 변경 사항이 엣지 로케이션으로 전파될 때까지 기다려야만 트리거에서 지정한 함수가 작동합니다.<a name="lambda-edge-edit-function-procedure"></a>

**Lambda 함수를 편집하려면**

1. AWS Management Console에 로그인하고 AWS Lambdahttps://console.aws.amazon.com/lambda/[에서 ](https://console.aws.amazon.com/lambda/) 콘솔을 엽니다.

1. 페이지 상단의 리전 목록에서 **미국 동부(버지니아 북부)(US East (N. Virginia))**를 선택합니다.

1. 함수 목록에서 함수의 이름을 선택합니다.

   기본 설정 사용 시, \$1LATEST 버전이 콘솔에 표시됩니다. 이전 버전을 볼 수 있지만(**한정자** 선택) \$1LATEST만 편집할 수 있습니다.

1. **코드(Code)** 탭의 **코드 입력 유형(Code entry type)**에서 브라우저에서 코드를 편집하거나, .zip 파일을 업로드하거나, Amazon S3에서 파일을 업로드하도록 선택합니다.

1. **저장** 또는 **저장 및 테스트**를 선택합니다.

1. **작업** 및 **Publish new version**(새 버전 게시)을 차례대로 선택합니다.

1. **\$1LATEST의 새 버전 게시** 대화 상자에서 새 버전 설명을 입력합니다. 이 설명은 자동으로 생성된 버전 번호와 함께 버전 목록에 표시됩니다.

1. [**Publish**]를 선택합니다.

   새 버전은 자동으로 최신 버전이 됩니다. 버전 번호는 페이지 왼쪽 상단 모서리의 **버전**에 표시됩니다.
**참고**  
함수에 트리거를 아직 추가하지 않았다면 [Lambda@Edge 함수에 대한 트리거 추가](lambda-edge-add-triggers.md) 섹션을 참조하세요.

1. **트리거** 탭을 선택합니다.

1. **트리거 추가**를 선택합니다.

1. **트리거 추가(Add trigger)** 대화 상자에서 점선으로 된 상자를 선택한 다음, **CloudFront**를 선택합니다.
**참고**  
함수에 대해 하나 이상의 트리거를 이미 만든 경우 CloudFront가 기본 서비스입니다.

1. 다음 값을 지정하여 Lambda 함수를 실행할 시기를 나타냅니다.

   1. **배포 ID** – 트리거를 추가할 배포의 ID를 선택합니다.

   1. **캐시 동작** – 함수를 실행할 객체를 지정하는 캐시 동작을 선택합니다.

   1. **CloudFront 이벤트** – 함수를 실행시키는 CloudFront 이벤트를 선택합니다.

   1. **트리거 활성화 및 복제** – 이 확인란을 선택하면 Lambda가 전 세계 AWS 리전으로 함수를 복제합니다.

1. **제출**을 선택합니다.

1. 이 함수에 대한 트리거를 추가하려면 10\$113단계를 반복합니다.

Lambda 콘솔에서 함수를 테스트하고 디버깅하는 방법에 대한 자세한 내용은 AWS Lambda 개발자 안내서**에서 [콘솔을 사용하여 Lambda 함수 호출](https://docs.aws.amazon.com/lambda/latest/dg/getting-started.html#get-started-invoke-manually)을 참조하세요.

CloudFront 이벤트에 대해 함수를 실행할 준비가 되면 다른 버전을 게시하고 함수를 편집하여 트리거를 추가합니다. 자세한 내용은 [Lambda@Edge 함수에 대한 트리거 추가](lambda-edge-add-triggers.md) 섹션을 참조하세요.