Media CDN 서비스 설정

이 빠른 시작에서는 Cloud Storage 버킷 앞에 Media CDN 서비스를 설정하는 방법을 보여줍니다. 이 구성은 테스트 목적으로 또는 프로덕션 환경의 기준으로 사용할 수 있습니다.


Google Cloud 콘솔에서 이 태스크에 대한 단계별 안내를 직접 수행하려면 둘러보기를 클릭합니다.

둘러보기


이 페이지에서는 다음 절차를 안내합니다.

  1. 콘텐츠를 저장할 Cloud Storage 버킷을 만듭니다.
  2. 필요한 서비스를 사용 설정합니다.
  3. Media CDN을 버킷에 연결하기 위해 EdgeCacheOrigin 리소스를 만듭니다.
  4. 원본 콘텐츠의 요청 라우팅 및 캐싱을 구성하기 위해 EdgeCacheService 리소스를 만듭니다.
  5. 응답이 캐시되는지 여부 테스트

시작하기 전에

다음 조건을 충족하는지 확인하세요.

Cloud Storage 버킷 만들기

Media CDN 콘텐츠는 Cloud Storage 버킷, 타사 스토리지 위치, 부하 분산기와 같은 여러 위치에서 시작될 수 있습니다.

이 빠른 시작에서는 Cloud Storage 버킷에 콘텐츠를 저장합니다.

  1. 공개적으로 액세스 가능한 Cloud Storage 버킷을 만들고 이름을 my-bucket으로 지정합니다.

    Cloud Storage 버킷을 공개적으로 액세스할 수 없게 만들려면 Media CDN에 버킷 액세스 권한을 부여해야 합니다. 자세한 내용은 비공개 Cloud Storage 버킷 사용을 참조하세요.

  2. 파일을 버킷에 업로드합니다.

필수 서비스 사용 설정

Media CDN 서비스를 구성하고 배포하려면 프로젝트에 대해 Network Services APICertificate Manager API를 모두 사용 설정해야 합니다.

콘솔

  1. Network Services API를 사용 설정합니다.

    API 사용 설정

  2. Certificate Manager API를 사용 설정합니다.

    API 사용 설정

gcloud

  1. Network Services API를 사용 설정합니다.

    gcloud services enable networkservices.googleapis.com
    
  2. Certificate Manager API를 사용 설정합니다.

    gcloud services enable certificatemanager.googleapis.com
    

서비스 사용 설정 및 사용 중지에 대한 자세한 내용은 서비스 사용 문서를 참조하세요.

EdgeCacheOrigin 리소스 만들기

Cloud Storage 버킷을 가리키는 원본을 만듭니다.

콘솔

  1. Google Cloud 콘솔에서 Media CDN 페이지로 이동합니다.

    Media CDN으로 이동

  2. 원본 탭을 클릭합니다.

  3. 원본 만들기를 클릭합니다.

  4. 원본 이름을 cloud-storage-origin으로 입력합니다.

  5. 원하는 경우 원본에 대한 설명을 입력합니다.

  6. 원본 주소에서 Google Cloud Storage 버킷 선택을 선택하고 이름이 my-bucket인 Cloud Storage 버킷으로 이동한 후 선택을 클릭합니다.

    대신 외부 원본이 있으면 FQDN 또는 IP 주소 지정을 선택한 후 FQDN 또는 IP 주소를 입력합니다.

  7. 원본 만들기를 클릭합니다.

약 10분 후 새로 생성된 EdgeCacheOrigin 리소스가 원본 페이지에서 프로젝트의 원본 목록에 표시됩니다.

원본 주소를 업데이트하려면 원본을 클릭한 후 수정을 클릭합니다.

gcloud

gcloud edge-cache origins create 명령어를 사용합니다.

gcloud edge-cache origins create ORIGIN \
    --origin-address="ADDRESS"

다음을 바꿉니다.

  • ORIGIN: 새 원본의 이름
  • ADDRESS: 버킷 이름 gs://my-bucket.

    대신 외부 원본이 있으면 ADDRESS를 FQDN 또는 IP 주소로 바꿉니다.

새로 만든 원본을 보려면 gcloud edge-cache origins list 명령어를 사용합니다.

원본 주소를 업데이트하려면 gcloud edge-cache origins update 명령어를 사용합니다.

API

edgeCacheOrigins.create 메서드를 사용합니다.

POST https://networkservices.googleapis.com/v1/PARENT/edgeCacheOrigins?edgeCacheOriginId=ORIGIN_ID
{
  "name": "ORIGIN_ID",
  "originAddress: "ADDRESS"
}

다음을 바꿉니다.

  • PARENT: projects/PROJECT/locations/global 형식의 상위 리소스
  • ORIGIN_ID: 새 원본의 단축 이름
  • ADDRESS: 버킷 이름 gs://my-bucket.

    대신 외부 원본이 있으면 ADDRESS를 FQDN 또는 IP 주소로 바꿉니다.

새로 만든 원본을 보려면 edgeCacheOrigins.list 메서드를 사용합니다.

원본 주소를 업데이트하려면 edgeCacheOrigins.patch 메서드를 사용합니다.

Terraform

resource "google_network_services_edge_cache_origin" "default" {
  name           = "cloud-storage-origin"
  origin_address = "gs://my-bucket-${random_id.unique_suffix.hex}"
}

EdgeCacheService 리소스 만들기

EdgeCacheService 리소스는 라우팅, 인증서, 캐싱 설정을 구성하며 EdgeCacheOrigin 리소스에 연결될 수 있습니다.

다음을 수행하는 기본 EdgeCacheService 리소스를 만듭니다.

  • 1시간 동안 구성된 원본에서 모든 응답을 캐시합니다.
  • 캐시 상태(예: HIT 또는 MISS)를 반환하는 x-cache-status 응답 헤더를 설정합니다.

선택적으로 이 서비스의 도메인 이름을 등록합니다.

콘솔

  1. Google Cloud 콘솔에서 Media CDN 페이지로 이동합니다.

    Media CDN으로 이동

  2. 서비스 탭을 클릭합니다.

  3. 서비스 만들기를 클릭합니다.

  4. 서비스의 고유한 이름(예: my-service)을 입력하고 다음을 클릭합니다.

  5. 라우팅 섹션에서 호스트 규칙 추가를 클릭한 후 하나 이상의 호스트 도메인 이름을 입력합니다.

  6. 호스트에 대해 호스트 도메인 이름을 입력합니다(예: web.example.com).

  7. 라우팅 규칙 추가를 클릭합니다.

    1. 우선순위1을 지정합니다.
    2. 일치 조건 추가를 클릭하고 경로 일치에 대해 /를 지정한 후 완료를 클릭합니다.
    3. 원본에서 가져오기를 선택한 다음 자신이 구성한 원본을 선택합니다.
    4. 부가기능 작업을 클릭합니다.
    5. 헤더 작업에서 항목 추가를 클릭합니다. 다음 작업을 수행합니다.
      1. 유형에서 추가할 응답 헤더를 선택합니다.
      2. 헤더 추가를 클릭합니다.
      3. 이름x-cache-status를 지정하고 {cdn_cache_status}를 지정합니다.
      4. 완료를 클릭합니다.
    6. 라우팅 작업에서 항목 추가를 클릭합니다. 다음 작업을 수행합니다.
      1. 유형에서 CDN 정책을 선택합니다.
      2. 캐시 모드FORCE_CACHE_ALL을 선택합니다.
      3. 완료를 클릭합니다.
    7. 저장을 클릭합니다.
  8. 서비스 만들기를 클릭합니다.

새로 생성된 EdgeCacheService 리소스가 서비스 페이지에서 프로젝트의 서비스 목록에 표시됩니다.

gcloud

  1. Cloud Shell에서 텍스트 편집기를 사용하여 my-service.yaml이라는 로컬 파일을 만듭니다.

    이러한 파일에는 다음이 표시됩니다.

    • 호스트 매칭을 먼저 수행하고 경로 매칭을 수행하는 라우팅 작동 방법
    • 캐시 모드와 TTL을 기반으로 하는 캐싱 작동 방법
    • 응답 헤더에 cdn_cache_status 변수 삽입 등을 통한 요청 및 응답 수정 방법
  2. 다음 샘플 콘텐츠를 파일에 붙여넣고 저장합니다.

    name: SERVICE
    routing:
      hostRules:
      - hosts:
        - DOMAIN 
        pathMatcher: routes
      pathMatchers:
      - name: routes
        routeRules:
        - priority: 1
          matchRules:
          - prefixMatch: /
          origin: ORIGIN
          routeAction:
            cdnPolicy:
              cacheMode: CACHE_ALL_STATIC
              defaultTtl: 3600s
          headerAction:
            responseHeadersToAdd:
            - headerName: "x-cache-status"
              headerValue: "{cdn_cache_status}"
    

    다음을 바꿉니다.

    • SERVICE: 서비스의 이름
    • DOMAIN: 새 서비스의 도메인

    도메인 이름을 지정하면 Media CDN이 다른 호스트에 대해 404 오류로 응답합니다. * ORIGIN: 관련 원본의 이름입니다.

  3. .yaml 파일에 gcloud edge-cache services import 명령어를 사용합니다.

    gcloud edge-cache services import SERVICE \
        --source=my-service.yaml
    

    프로젝트의 EdgeCacheService 리소스 목록에서 새로 생성된 서비스를 보려면 gcloud edge-cache services list 명령어를 사용합니다.

API

edgeCacheServices.create 메서드를 사용합니다.

POST https://networkservices.googleapis.com/v1/PARENT/edgeCacheServices?edgeCacheServiceId=SERVICE_ID
{
  "name": "SERVICE_ID",
  "routing": {
    "hostRules": [
      {
        "hosts": ["DOMAIN"],
        "pathMatcher": "routes"
      }
    ],
    "pathMatchers": [
      {
        "name": "routes",
        "routeRules": [
          {
            "priority": "1",
            "matchRules": [
              {
                "prefixMatch": "/"
              }
            ],
            "origin": "ORIGIN",
            "routeAction": {
               "cdnPolicy": {
                 "cacheMode": "CACHE_ALL_STATIC",
                 "defaultTtl": "3600s"
               }
            }
            "headerAction": {
              "responseHeadersToAdd": [
                {
                  "headerName": "x-cache-status",
                  "headerValue": "{cdn_cache_status}"
                }
              ]
            },
          }
        ]
      }
    ]
  }
}

다음을 바꿉니다.

  • PARENT: projects/PROJECT/locations/global 형식의 상위 리소스
  • SERVICE_ID: 서비스의 이름
  • DOMAIN: 새 서비스의 도메인

    도메인 이름을 지정하면 Media CDN이 다른 호스트에 대해 404 오류로 응답합니다.

  • ORIGIN_NAME: 관련 원본의 이름

프로젝트의 EdgeCacheService 리소스 목록에서 새로 생성된 서비스를 보려면 edgeCacheServices.list 메서드를 사용합니다.

Terraform

resource "google_network_services_edge_cache_service" "default" {
  name = "cloud-media-service"
  routing {
    host_rule {
      hosts        = ["googlecloudexample.com"]
      path_matcher = "routes"
    }
    path_matcher {
      name = "routes"
      route_rule {
        description = "a route rule to match against"
        priority    = 1
        match_rule {
          prefix_match = "/"
        }
        origin = google_network_services_edge_cache_origin.default.name
        route_action {
          cdn_policy {
            cache_mode  = "CACHE_ALL_STATIC"
            default_ttl = "3600s"
          }
        }
        header_action {
          response_header_to_add {
            header_name  = "x-cache-status"
            header_value = "{cdn_cache_status}"
          }
        }
      }
    }
  }
}

첫 번째 서비스를 만들려면 몇 분이 걸릴 수 있습니다. Media CDN이 전용 IP 주소를 프로비저닝하고 수천 개의 에지 위치로 구성을 푸시합니다. 경로 구성 또는 매칭 매개변수 변경과 같은 이후 서비스 업데이트는 더 빠르게 수행됩니다.

IP 주소 검색

새로 만든 서비스의 IP 주소를 보려면 다음 단계를 수행합니다.

콘솔

  1. Google Cloud 콘솔에서 Media CDN 페이지로 이동합니다.

    Media CDN으로 이동

  2. 서비스 탭을 클릭합니다.

  3. 서비스의 IP 주소는 주소 셀을 참조하세요.

    셀이 비어 있으면 브라우저를 새로고침합니다.

gcloud

gcloud edge-cache services describe 명령어를 사용합니다.

gcloud edge-cache services describe SERVICE

SERVICE를 서비스 이름으로 바꿉니다.

출력에 서비스에 할당된 IP 주소가 표시됩니다.

ipv4Addresses:
    IPV4_ADDRESS
ipv6Addresses:
    IPV6_ADDRESS
name: projects/my-project/locations/global/edgeCacheServices/SERVICE
...

API

edgeCacheServices.get 메서드를 사용합니다.

GET https://networkservices.googleapis.com/v1/SERVICE_NAME

SERVICE_NAME을 서비스의 전체 이름으로 바꿉니다. 다음 형식을 사용합니다.

projects/PROJECT/locations/global/edgeCacheServices/SERVICE_ID

SERVICE_ID를 서비스의 단축 이름으로 바꿉니다.

검색된 세부정보에는 서비스에 할당된 IP 주소가 포함됩니다.

ipv4Addresses:
    IPV4_ADDRESS
ipv6Addresses:
    IPV6_ADDRESS

응답이 캐시되는지 여부 테스트

서비스를 테스트하기 전에 Media CDN이 검색할 수 있도록 캐시 가능한 콘텐츠가 원본에 저장되어 있는지 확인합니다.

서비스가 콘텐츠를 캐시하도록 올바르게 구성되었는지 테스트하려면 curl 명령줄 도구를 사용해서 요청을 실행하고 응답을 확인합니다. curl은 또한 Google Cloud 콘솔의 Cloud Shell에서 사용할 수 있습니다.

도메인에 EdgeCacheService를 사용하려면 EdgeCacheService의 IP 주소를 도메인 레코드에 할당할 수 있습니다. 자세한 내용은 Cloud DNS를 사용하여 도메인 설정을 참조하세요. 도메인을 설정한 후 다음 curl 명령어로 콘텐츠에 액세스합니다.

curl -svo /dev/null "http://DOMAIN_NAME/FILE_NAME"

프로비저닝된 IP 주소를 가리키도록 DNS를 구성하지 않았으면 curl에 사용되는 주소를 재정의하도록 resolve 옵션을 사용합니다.

curl -svo /dev/null --resolve DOMAIN_NAME:80:IP_ADDRESS "http://DOMAIN_NAME/FILE_NAME"

다음을 바꿉니다.

  • DOMAIN_NAME: 서비스를 만들 때 지정한 호스트 도메인
  • IP_ADDRESS: 서비스 목록에서 주소 열에 표시되는 서비스의 IP 주소
  • FILE_NAME: 버킷에 업로드한 파일의 이름

예를 들면 다음과 같습니다.

curl -svo /dev/null --resolve web.example.com:80:34.104.37.129 "http://web.example.com/file.mp4"

Media CDN에 원점에서 검색된 요청된 데이터가 포함되지 않기 때문에 이 명령어는 처음에 miss 상태로 다음과 비슷한 출력을 생성합니다.

< HTTP/2 200 OK
...
< x-cache-status: den;miss
...

동일한 요청을 여러 번 다시 제출하면 hit 상태로 다음과 비슷한 출력이 생성됩니다.

< HTTP/2 200 OK
...
< x-cache-status: den;hit
...

hit 상태가 표시되지 않으면 다음을 확인합니다.

  • 응답이 캐시 가능합니다.
  • 구성된 캐시 모드에서 콘텐츠 캐시가 허용됩니다.
  • 원본에 캐싱을 방지하는 캐시 지시어 설정이 없습니다. 자세한 내용은 캐시 구성을 참조하세요.

지금까지 콘텐츠를 전역적으로 제공할 수 있는 기본적인 EdgeCacheService 리소스를 테스트했습니다. 프로덕션 수준의 서비스에는 SSL(TLS) 인증서, 다중 원본, Google Cloud Armor 보안 정책이 필요할 수 있습니다.

선택사항: 삭제

다시 사용하지 않으려는 리소스를 모두 삭제합니다.

콘솔

  1. Google Cloud 콘솔에서 Media CDN 페이지로 이동합니다.

    Media CDN으로 이동

  2. 서비스 탭을 클릭합니다.

  3. 서비스를 선택한 후 삭제를 클릭합니다.

  4. 원본 탭을 클릭합니다.

  5. 원본을 선택한 후 삭제를 클릭합니다.

gcloud

  1. 만든 리소스를 나열하려면 gcloud edge-cache origins list 명령어gcloud edge-cache services list 명령어를 사용합니다.

  2. 서비스를 삭제하려면 gcloud edge-cache services delete 명령어를 사용합니다.

    gcloud edge-cache services delete SERVICE
    

    SERVICE를 서비스 이름으로 바꿉니다.

  3. 원본을 삭제하려면 gcloud edge-cache origins delete 명령어를 사용합니다.

    gcloud edge-cache origins delete ORIGIN
    

    ORIGIN을 원본 이름으로 바꿉니다.

API

  1. 만든 리소스를 나열하려면 edgeCacheServices.list 메서드edgeCacheOrigins.list 메서드를 사용합니다.

  2. 서비스를 삭제하려면 edgeCacheServices.delete 메서드를 사용합니다.

    DELETE https://networkservices.googleapis.com/v1/SERVICE_NAME
    

    SERVICE_NAME을 서비스의 전체 이름으로 바꿉니다. 다음 형식을 사용합니다.

    projects/PROJECT/locations/global/edgeCacheServices/SERVICE_ID
    

    SERVICE_ID를 서비스의 단축 이름으로 바꿉니다.

  3. 원본을 삭제하려면 edgeCacheOrigins.delete 메서드를 사용합니다.

    DELETE https://networkservices.googleapis.com/v1/ORIGIN
    

    ORIGIN을 원본의 전체 이름으로 바꿉니다. 다음 형식을 사용합니다.

    projects/PROJECT/locations/global/edgeCacheOrigins/ORIGIN_ID
    

    ORIGIN_ID를 원본의 단축 이름으로 바꿉니다.

Cloud Storage 버킷과 같이, 사용자가 만들고 다시 사용하지 않으려는 다른 모든 리소스에 대해 이 프로세스를 반복합니다.

다음 단계