함수 테스트 - Amazon CloudFront

함수 테스트

라이브 스테이지(프로덕션)에 함수를 배포하기 전에 함수를 테스트하여 의도한 대로 작동하는지 확인할 수 있습니다. 함수를 테스트하려면 CloudFront 배포가 프로덕션 환경에서 수신할 수 있는 HTTP 요청 또는 응답을 나타내는 이벤트 객체를 지정합니다.

CloudFront 함수는 다음을 수행합니다.

  1. 제공된 이벤트 객체를 입력으로 사용하여 함수를 실행합니다.

  2. 함수 로그 또는 오류 메시지 및 함수의 컴퓨팅 사용률과 함께 함수의 결과(수정된 이벤트 객체)를 반환합니다. 컴퓨팅 사용률에 대한 자세한 내용은 컴퓨팅 활용 이해 섹션을 참조하세요.

이벤트 객체 설정

함수를 테스트하기 전에 함수를 테스트할 이벤트 객체를 설정해야 합니다. 이때 여러 가지 선택지가 있습니다.

선택 1: 이벤트 객체를 저장하지 않고 설정

CloudFront 콘솔의 시각적 편집기에서 이벤트 객체를 설정한 후 저장하지 않아도 됩니다.

저장되지 않았더라도 이 이벤트 객체를 사용하여 CloudFront 콘솔에서 함수를 테스트할 수 있습니다.

선택 2: 시각적 편집기에서 이벤트 객체 생성

CloudFront 콘솔의 시각적 편집기에서 이벤트 객체를 설정한 후 저장하지 않아도 됩니다. 예를 들어, 가능한 여러 입력을 테스트할 수 있도록 각 함수에 대해 10개의 이벤트 객체를 생성할 수 있습니다.

이러한 방식으로 이벤트 객체를 생성하면 이벤트 객체를 사용하여 CloudFront 콘솔에서 함수를 테스트할 수 있습니다. AWS API 또는 SDK를 사용하여 함수를 테스트하는 데는 이벤트 객체를 사용할 수 없습니다.

선택 3: 텍스트 편집기를 사용하여 이벤트 객체 생성

텍스트 편집기를 사용하여 JSON 형식으로 이벤트 객체를 만들 수 있습니다. 이벤트 객체의 구조에 대한 자세한 내용은 이벤트 구조 섹션을 참조하세요.

이 이벤트 객체로 CLI를 사용하여 함수를 테스트할 수 있습니다. 하지만 CloudFront 콘솔에서 함수를 테스트하는 데는 사용할 수 없습니다.

이벤트 객체를 생성하려면(옵션 1 또는 2)
  1. CloudFront 콘솔(https://console.aws.amazon.com/cloudfront/v4/home#/functions)에 로그인하고 함수 페이지를 엽니다.

    테스트할 함수를 선택합니다.

  2. 함수 세부 정보 페이지에서 테스트 탭을 선택합니다.

  3. 이벤트 유형에서 다음 옵션 중 하나를 선택합니다.

    • 함수가 HTTP 요청을 수정하거나 요청에 따라 응답을 생성하는 경우 뷰어 요청을 선택합니다. 요청 섹션이 나타납니다.

    • 뷰어 응답을 선택합니다. 요청응답 섹션이 나타납니다.

  4. 이벤트에 포함할 필드를 작성합니다. JSON 편집을 선택하여 원시 JSON을 확인할 수 있습니다.

  5. (선택 사항) 이벤트를 저장하려면 저장을 선택하고 테스트 이벤트 저장에서 이름을 입력한 다음 저장을 선택합니다.

    JSON 편집을 선택하고 원시 JSON을 복사한 다음 CloudFront 외부의 자체 파일에 저장할 수도 있습니다.

이벤트 객체를 생성하려면(옵션 3)

텍스트 편집기를 사용하여 이벤트 객체를 생성합니다. 컴퓨터가 연결할 수 있는 디렉터리에 파일을 저장합니다.

다음 가이드라인을 따르도록 합니다.

  • distributionDomainName, distributionId, requestId 필드는 생략하세요.

  • 헤더, 쿠키, 쿼리 문자열의 이름은 소문자여야 합니다.

이러한 방식으로 이벤트 객체를 생성하는 한 가지 방법은 시각적 편집기를 사용하여 샘플을 만드는 것입니다. 샘플 형식이 올바른지 확인할 수 있습니다. 그런 다음 원시 JSON을 복사해 텍스트 편집기에 붙여넣고 파일을 저장할 수 있습니다.

이벤트의 구조에 대한 자세한 내용은 이벤트 구조 섹션을 참조하세요.

함수 테스트

CloudFront 콘솔 또는 AWS Command Line Interface(AWS CLI)를 사용하여 함수를 테스트할 수 있습니다.

Console
함수를 테스트하려면
  1. CloudFront 콘솔(https://console.aws.amazon.com/cloudfront/v4/home#/functions)에 로그인하고 함수 페이지를 엽니다.

  2. 테스트할 함수를 선택합니다.

  3. 테스트 탭을 선택합니다.

  4. 올바른 이벤트가 표시되는지 확인합니다. 현재 표시된 이벤트에서 다른 이벤트로 전환하려면 테스트 이벤트 선택 필드에서 다른 이벤트를 선택하세요.

  5. 함수 테스트를 선택합니다. 콘솔에는 함수 로그와 컴퓨팅 활용을 비롯한 함수 출력이 표시됩니다.

CLI

aws cloudfront test-function 명령을 사용하여 함수를 테스트할 수 있습니다.

함수를 테스트하려면
  1. 명령줄 창을 엽니다.

  2. 지정된 파일이 들어 있는 디렉터리에서 다음 명령을 실행합니다.

    이 예제에서는 fileb:// 표기법을 사용하여 이벤트 객체 파일을 전달합니다. 명령을 더 쉽게 읽을 수 있도록 줄 바꿈도 포함되어 있습니다.

    aws cloudfront test-function \ --name MaxAge \ --if-match ETVABCEXAMPLE \ --event-object fileb://event-maxage-test01.json \ --stage DEVELOPMENT
    참고
    • 함수의 이름과 ETag(if-match 파라미터 내)로 함수를 참조합니다. 파일 시스템에서의 위치를 기준으로 이벤트 객체를 참조합니다.

    • 스테이지는 DEVELOPMENT 또는 LIVE일 수 있습니다.

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

    TestResult: ComputeUtilization: '21' FunctionErrorMessage: '' FunctionExecutionLogs: [] FunctionOutput: '{"response":{"headers":{"cloudfront-functions":{"value":"generated-by-CloudFront-Functions"},"location":{"value":"https://aws.amazon.com/cloudfront/"}},"statusDescription":"Found","cookies":{},"statusCode":302}}' FunctionSummary: FunctionConfig: Comment: MaxAge function Runtime: cloudfront-js-2.0 KeyValueStoreAssociations= \ {Quantity=1, \ Items=[{KeyValueStoreARN='arn:aws:cloudfront::111122223333:key-value-store/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111'}]} \ FunctionMetadata: CreatedTime: '2021-04-18T20:38:56.915000+00:00' FunctionARN: arn:aws:cloudfront::111122223333:function/MaxAge LastModifiedTime: '2023-17-20T10:38:57.057000+00:00' Stage: DEVELOPMENT Name: MaxAge Status: UNPUBLISHED
참고
  • FunctionExecutionLogs에는 해당 함수가 console.log() 명령문(있는 경우)에 작성한 로그 행 목록이 포함되어 있습니다.

  • ComputeUtilization에는 함수 실행에 대한 정보가 들어 있습니다. 컴퓨팅 활용 이해 섹션을 참조하세요.

  • FunctionOutput에는 함수가 반환한 이벤트 객체가 포함됩니다.

컴퓨팅 활용 이해

컴퓨팅 활용(Compute utilization)은 함수가 실행되는 데 걸린 시간의 최대 허용 시간의 백분율입니다. 예를 들어, 값이 35이면 함수가 최대 허용 시간의 35%에서 완료되었음을 의미합니다.

함수가 계속해서 최대 허용 시간을 초과할 경우 CloudFront는 해당 함수를 제한합니다. 다음 목록에서는 컴퓨팅 사용률 값에 따라 함수가 제한될 가능성을 설명합니다.

컴퓨팅 사용률 값:

  • 1 ~ 50 - 함수가 최대 허용 시간에 도달하기까지 많이 남았으므로 제한 없이 실행됩니다.

  • 51 ~ 70 - 함수가 최대 허용 시간에 근접하고 있습니다. 함수 코드를 최적화하는 것이 좋습니다.

  • 71 ~ 100 - 함수가 최대 허용 시간에 매우 근접하거나 최대 허용 시간을 초과합니다. 배포와 연결할 경우 CloudFront에서 이 함수를 제한할 가능성이 있습니다.