배포에 함수 연결
배포에 함수를 사용하려면 함수를 배포의 하나 이상의 캐시 동작과 연결합니다. 여러 배포에서 여러 캐시 동작과 함수를 연결할 수 있습니다.
함수는 다음 중 무엇과도 연결할 수 있습니다.
-
기존 캐시 동작
-
기존 배포의 새로운 캐시 동작
-
새 배포의 새로운 캐시 동작
함수를 캐시 동작과 연결할 때는 이벤트 유형(event type)을 선택해야 합니다. 이벤트 유형에 따라 CloudFront가 함수를 실행하는 시기가 결정됩니다.
다음과 같은 이벤트 유형을 선택할 수 있습니다.
CloudFront Functions와 함께 오리진 관련 이벤트 유형(오리진 요청 및 오리진 응답)을 사용할 수 없습니다. 대신 Lambda@Edge를 사용할 수 있습니다. 자세한 내용은 Lambda@Edge 함수를 트리거할 수 있는 CloudFront 이벤트 단원을 참조하십시오.
CloudFront 콘솔 또는 AWS Command Line Interface(AWS CLI)를 사용하여 배포에 함수를 연결할 수 있습니다. 다음 절차에서는 함수를 기존 캐시 동작에 연결하는 방법을 보여 줍니다.
- Console
-
CloudFront가 배포를 함수와 연결합니다. 연결된 배포가 배포될 때까지 몇 분 정도 기다립니다. 함수 세부 정보 페이지에서 배포 보기를 선택하여 진행 상황을 확인할 수 있습니다.
- CLI
-
기존 캐시 동작에 함수를 연결하려면
-
명령줄 창을 엽니다.
-
함수에 연결할 캐시 동작을 가진 배포에 대한 배포 구성을 저장하려면 다음 명령을 입력합니다. 이 명령은 배포 구성을 dist-config.yaml
이라는 이름의 파일에 저장합니다. 이 명령을 사용하려면 다음을 수행합니다.
aws cloudfront get-distribution-config \
--id DistributionID
\
--output yaml > dist-config.yaml
명령이 성공하면 AWS CLI는 출력을 반환하지 않습니다.
-
생성한 dist-config.yaml
이라는 파일을 엽니다. 파일을 편집하여 다음과 같이 변경합니다.
-
ETag
필드의 이름을 IfMatch
로 바꾸지만 필드 값은 변경하지 마세요.
-
캐시 동작에서 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
-
이러한 변경을 수행한 후 파일을 저장합니다.
-
다음 명령을 사용하여 배포를 업데이트하고 함수 연결을 추가합니다. 이 명령을 사용하려면 다음을 수행합니다.
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
배포가 재배포되는 동안 배포의 Status
가 InProgress
로 변경됩니다. 새 배포 구성이 CloudFront 엣지 로케이션에 도달하면 해당 엣지 로케이션에 연결된 함수를 사용하기 시작합니다. 배포가 완전히 완료되면 Status
가 다시 Deployed
로 바뀝니다. 이는 연결된 CloudFront 함수가 전 세계의 모든 CloudFront 엣지 로케이션에서 작동함을 나타냅니다. 이 작업은 일반적으로 몇 분 정도 걸립니다.