배포에 함수 연결 - Amazon CloudFront

배포에 함수 연결

배포에 함수를 사용하려면 함수를 배포의 하나 이상의 캐시 동작과 연결합니다. 여러 배포에서 여러 캐시 동작과 함수를 연결할 수 있습니다.

함수는 다음 중 무엇과도 연결할 수 있습니다.

  • 기존 캐시 동작

  • 기존 배포의 새로운 캐시 동작

  • 새 배포의 새로운 캐시 동작

함수를 캐시 동작과 연결할 때는 이벤트 유형(event type)을 선택해야 합니다. 이벤트 유형에 따라 CloudFront가 함수를 실행하는 시기가 결정됩니다.

다음과 같은 이벤트 유형을 선택할 수 있습니다.

  • 최종 사용자 요청 – 이 함수는 CloudFront가 최종 사용자의 요청을 수신할 때 실행됩니다.

  • 최종 사용자 응답 – 이 함수는 CloudFront가 최종 사용자에게 응답을 반환하기 전에 실행됩니다.

CloudFront Functions와 함께 오리진 관련 이벤트 유형(오리진 요청오리진 응답)을 사용할 수 없습니다. 대신 Lambda@Edge를 사용할 수 있습니다. 자세한 내용은 Lambda@Edge 함수를 트리거할 수 있는 CloudFront 이벤트 단원을 참조하십시오.

참고

함수를 연결하기 전에 LIVE 스테이지에 게시해야 합니다.

CloudFront 콘솔 또는 AWS Command Line Interface(AWS CLI)를 사용하여 배포에 함수를 연결할 수 있습니다. 다음 절차에서는 함수를 기존 캐시 동작에 연결하는 방법을 보여 줍니다.

Console
기존 캐시 동작에 함수를 연결하려면
  1. CloudFront 콘솔(https://console.aws.amazon.com/cloudfront/v4/home#/functions)에 로그인하고 함수 페이지를 엽니다.

  2. 연결할 함수를 선택합니다.

  3. 함수 페이지에서 게시 탭을 선택합니다.

  4. Publish 함수를 선택합니다.

  5. 연결 추가를 선택합니다. 표시되는 대화 상자에서 배포, 이벤트 유형 및/또는 캐시 동작을 선택합니다.

    이벤트 유형에서 함수를 실행할 시기를 선택합니다.

    • 뷰어 요청 - CloudFront가 요청을 수신할 때마다 이 함수를 실행합니다.

    • 뷰어 응답 - CloudFront가 응답을 반환할 때마다 이 함수를 실행합니다.

  6. 구성을 저장하려면 연결 추가를 선택합니다.

CloudFront가 배포를 함수와 연결합니다. 연결된 배포가 배포될 때까지 몇 분 정도 기다립니다. 함수 세부 정보 페이지에서 배포 보기를 선택하여 진행 상황을 확인할 수 있습니다.

CLI
기존 캐시 동작에 함수를 연결하려면
  1. 명령줄 창을 엽니다.

  2. 함수에 연결할 캐시 동작을 가진 배포에 대한 배포 구성을 저장하려면 다음 명령을 입력합니다. 이 명령은 배포 구성을 dist-config.yaml이라는 이름의 파일에 저장합니다. 이 명령을 사용하려면 다음을 수행합니다.

    • DistributionID를 해당 배포의 ID로 바꿉니다.

    • 한 줄로 명령을 실행합니다. 이 예에서는 예제를 보다 읽기 쉽도록 줄 바꿈이 제공됩니다.

    aws cloudfront get-distribution-config \ --id DistributionID \ --output yaml > dist-config.yaml

    명령이 성공하면 AWS CLI는 출력을 반환하지 않습니다.

  3. 생성한 dist-config.yaml이라는 파일을 엽니다. 파일을 편집하여 다음과 같이 변경합니다.

    1. ETag 필드의 이름을 IfMatch로 바꾸지만 필드 값은 변경하지 마세요.

    2. 캐시 동작에서 FunctionAssociations(이)라는 이름의 객체를 찾습니다. 함수 연결을 추가하려면 이 객체를 업데이트합니다. 함수 연결에 대한 YAML 구문은 다음 예제와 같습니다.

      • 다음 예제에서는 최종 사용자 요청 이벤트 객체를 보여줍니다. 최종 사용자 응답 이벤트 유형을 사용하려면 viewer-request을(를)viewer-response(으)로 바꿉니다.

      • arn:aws:cloudfront::111122223333:function/ExampleFunction을 이 캐시 동작에 연결하려는 함수의 Amazon 리소스 이름(ARN)으로 바꿉니다. 함수 ARN을 얻으려면 aws cloudfront list-functions 명령을 사용할 수 있습니다.

      FunctionAssociations: Items: - EventType: viewer-request FunctionARN: arn:aws:cloudfront::111122223333:function/ExampleFunction Quantity: 1
    3. 이러한 변경을 수행한 후 파일을 저장합니다.

  4. 다음 명령을 사용하여 배포를 업데이트하고 함수 연결을 추가합니다. 이 명령을 사용하려면 다음을 수행합니다.

    • DistributionID를 해당 배포의 ID로 바꿉니다.

    • 한 줄로 명령을 실행합니다. 이 예에서는 예제를 보다 읽기 쉽도록 줄 바꿈이 제공됩니다.

    aws cloudfront update-distribution \ --id DistributionID \ --cli-input-yaml file://dist-config.yaml

    명령이 성공하면 함수 연결로 방금 업데이트된 배포를 설명하는 다음과 같은 출력이 표시됩니다. 다음 예제 출력은 가독성을 위해 잘립니다.

    Distribution: ARN: arn:aws:cloudfront::111122223333:distribution/EBEDLT3BGRBBW ... truncated ... DistributionConfig: ... truncated ... DefaultCacheBehavior: ... truncated ... FunctionAssociations: Items: - EventType: viewer-request FunctionARN: arn:aws:cloudfront::111122223333:function/ExampleFunction Quantity: 1 ... truncated ... DomainName: d111111abcdef8.cloudfront.net Id: EDFDVBD6EXAMPLE LastModifiedTime: '2021-04-19T22:39:09.158000+00:00' Status: InProgress ETag: E2VJGGQEG1JT8S

배포가 재배포되는 동안 배포의 StatusInProgress로 변경됩니다. 새 배포 구성이 CloudFront 엣지 로케이션에 도달하면 해당 엣지 로케이션에 연결된 함수를 사용하기 시작합니다. 배포가 완전히 완료되면 Status가 다시 Deployed로 바뀝니다. 이는 연결된 CloudFront 함수가 전 세계의 모든 CloudFront 엣지 로케이션에서 작동함을 나타냅니다. 이 작업은 일반적으로 몇 분 정도 걸립니다.