이 빠른 시작에서는 Cloud Storage 버킷 앞에 Media CDN 서비스를 설정하는 방법을 보여줍니다. 이 구성은 테스트 목적으로 또는 프로덕션 환경의 기준으로 사용할 수 있습니다.
Google Cloud 콘솔에서 이 태스크에 대한 단계별 안내를 직접 수행하려면 둘러보기를 클릭합니다.
이 페이지에서는 다음 절차를 안내합니다.
- 콘텐츠를 저장할 Cloud Storage 버킷을 만듭니다.
- 필요한 서비스를 사용 설정합니다.
- Media CDN을 버킷에 연결하기 위해
EdgeCacheOrigin
리소스를 만듭니다. - 원본 콘텐츠의 요청 라우팅 및 캐싱을 구성하기 위해
EdgeCacheService
리소스를 만듭니다. - 응답이 캐시되는지 여부 테스트
시작하기 전에
다음 조건을 충족하는지 확인하세요.
현재 프로젝트의 Media CDN 액세스
Google Cloud CLI 설치. 버전345.0.0 이상을 사용합니다.
필요한 경우
gcloud version
을 사용해서 버전을 확인하고gcloud components update
를 사용해서 설치된 gcloud CLI를 업데이트합니다.gcloud CLI는 신규 및 기존 Media CDN 구성을 모두 관리하기 위해
gcloud edge-cache
하위 명령어 그룹을 제공합니다.Media CDN 리소스를 만드는 데 필요한 Identity and Access Management(IAM) 권한. Media CDN에는 다음과 같은 사전 정의된 IAM 역할이 포함되어 있습니다.
roles/networkservices.edgeCacheAdmin
roles/networkservices.edgeCacheUser
roles/networkservices.edgeCacheViewer
Cloud Storage 버킷 만들기
Media CDN 콘텐츠는 Cloud Storage 버킷, 타사 스토리지 위치, 부하 분산기와 같은 여러 위치에서 시작될 수 있습니다.
이 빠른 시작에서는 Cloud Storage 버킷에 콘텐츠를 저장합니다.
공개적으로 액세스 가능한 Cloud Storage 버킷을 만들고 이름을
my-bucket
으로 지정합니다.Cloud Storage 버킷을 공개적으로 액세스할 수 없게 만들려면 Media CDN에 버킷 액세스 권한을 부여해야 합니다. 자세한 내용은 비공개 Cloud Storage 버킷 사용을 참조하세요.
파일을 버킷에 업로드합니다.
필수 서비스 사용 설정
Media CDN 서비스를 구성하고 배포하려면 프로젝트에 대해 Network Services API와 Certificate Manager API를 모두 사용 설정해야 합니다.
콘솔
gcloud
Network Services API를 사용 설정합니다.
gcloud services enable networkservices.googleapis.com
Certificate Manager API를 사용 설정합니다.
gcloud services enable certificatemanager.googleapis.com
서비스 사용 설정 및 사용 중지에 대한 자세한 내용은 서비스 사용 문서를 참조하세요.
EdgeCacheOrigin
리소스 만들기
Cloud Storage 버킷을 가리키는 원본을 만듭니다.
콘솔
Google Cloud 콘솔에서 Media CDN 페이지로 이동합니다.
원본 탭을 클릭합니다.
원본 만들기를 클릭합니다.
원본 이름을
cloud-storage-origin
으로 입력합니다.원하는 경우 원본에 대한 설명을 입력합니다.
원본 주소에서 Google Cloud Storage 버킷 선택을 선택하고 이름이
my-bucket
인 Cloud Storage 버킷으로 이동한 후 선택을 클릭합니다.대신 외부 원본이 있으면 FQDN 또는 IP 주소 지정을 선택한 후 FQDN 또는 IP 주소를 입력합니다.
원본 만들기를 클릭합니다.
약 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
EdgeCacheService
리소스 만들기
EdgeCacheService
리소스는 라우팅, 인증서, 캐싱 설정을 구성하며 EdgeCacheOrigin
리소스에 연결될 수 있습니다.
다음을 수행하는 기본 EdgeCacheService
리소스를 만듭니다.
- 1시간 동안 구성된 원본에서 모든 응답을 캐시합니다.
- 캐시 상태(예:
HIT
또는MISS
)를 반환하는x-cache-status
응답 헤더를 설정합니다.
선택적으로 이 서비스의 도메인 이름을 등록합니다.
콘솔
Google Cloud 콘솔에서 Media CDN 페이지로 이동합니다.
서비스 탭을 클릭합니다.
서비스 만들기를 클릭합니다.
서비스의 고유한 이름(예:
my-service
)을 입력하고 다음을 클릭합니다.라우팅 섹션에서 호스트 규칙 추가를 클릭한 후 하나 이상의 호스트 도메인 이름을 입력합니다.
호스트에 대해 호스트 도메인 이름을 입력합니다(예:
web.example.com
).라우팅 규칙 추가를 클릭합니다.
- 우선순위에
1
을 지정합니다. - 일치 조건 추가를 클릭하고 경로 일치에 대해
/
를 지정한 후 완료를 클릭합니다. - 원본에서 가져오기를 선택한 다음 자신이 구성한 원본을 선택합니다.
- 부가기능 작업을 클릭합니다.
- 헤더 작업에서 항목 추가를 클릭합니다. 다음 작업을 수행합니다.
- 유형에서 추가할 응답 헤더를 선택합니다.
- 헤더 추가를 클릭합니다.
- 이름에
x-cache-status
를 지정하고 값에{cdn_cache_status}
를 지정합니다. - 완료를 클릭합니다.
- 라우팅 작업에서 항목 추가를 클릭합니다. 다음 작업을 수행합니다.
- 유형에서 CDN 정책을 선택합니다.
- 캐시 모드로 FORCE_CACHE_ALL을 선택합니다.
- 완료를 클릭합니다.
- 저장을 클릭합니다.
- 우선순위에
서비스 만들기를 클릭합니다.
새로 생성된 EdgeCacheService
리소스가 서비스 페이지에서 프로젝트의 서비스 목록에 표시됩니다.
gcloud
Cloud Shell에서 텍스트 편집기를 사용하여
my-service.yaml
이라는 로컬 파일을 만듭니다.이러한 파일에는 다음이 표시됩니다.
- 호스트 매칭을 먼저 수행하고 경로 매칭을 수행하는 라우팅 작동 방법
- 캐시 모드와 TTL을 기반으로 하는 캐싱 작동 방법
- 응답 헤더에
cdn_cache_status
변수 삽입 등을 통한 요청 및 응답 수정 방법
다음 샘플 콘텐츠를 파일에 붙여넣고 저장합니다.
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
: 관련 원본의 이름입니다..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
첫 번째 서비스를 만들려면 몇 분이 걸릴 수 있습니다. Media CDN이 전용 IP 주소를 프로비저닝하고 수천 개의 에지 위치로 구성을 푸시합니다. 경로 구성 또는 매칭 매개변수 변경과 같은 이후 서비스 업데이트는 더 빠르게 수행됩니다.
IP 주소 검색
새로 만든 서비스의 IP 주소를 보려면 다음 단계를 수행합니다.
콘솔
Google Cloud 콘솔에서 Media CDN 페이지로 이동합니다.
서비스 탭을 클릭합니다.
서비스의 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 보안 정책이 필요할 수 있습니다.
선택사항: 삭제
다시 사용하지 않으려는 리소스를 모두 삭제합니다.
콘솔
Google Cloud 콘솔에서 Media CDN 페이지로 이동합니다.
서비스 탭을 클릭합니다.
서비스를 선택한 후 삭제를 클릭합니다.
원본 탭을 클릭합니다.
원본을 선택한 후 삭제를 클릭합니다.
gcloud
만든 리소스를 나열하려면
gcloud edge-cache origins list
명령어 및gcloud edge-cache services list
명령어를 사용합니다.서비스를 삭제하려면
gcloud edge-cache services delete
명령어를 사용합니다.gcloud edge-cache services delete SERVICE
SERVICE
를 서비스 이름으로 바꿉니다.원본을 삭제하려면
gcloud edge-cache origins delete
명령어를 사용합니다.gcloud edge-cache origins delete ORIGIN
ORIGIN
을 원본 이름으로 바꿉니다.
API
만든 리소스를 나열하려면
edgeCacheServices.list
메서드 및edgeCacheOrigins.list
메서드를 사용합니다.서비스를 삭제하려면
edgeCacheServices.delete
메서드를 사용합니다.DELETE https://networkservices.googleapis.com/v1/SERVICE_NAME
SERVICE_NAME
을 서비스의 전체 이름으로 바꿉니다. 다음 형식을 사용합니다.projects/PROJECT/locations/global/edgeCacheServices/SERVICE_ID
SERVICE_ID
를 서비스의 단축 이름으로 바꿉니다.원본을 삭제하려면
edgeCacheOrigins.delete
메서드를 사용합니다.DELETE https://networkservices.googleapis.com/v1/ORIGIN
ORIGIN
을 원본의 전체 이름으로 바꿉니다. 다음 형식을 사용합니다.projects/PROJECT/locations/global/edgeCacheOrigins/ORIGIN_ID
ORIGIN_ID
를 원본의 단축 이름으로 바꿉니다.
Cloud Storage 버킷과 같이, 사용자가 만들고 다시 사용하지 않으려는 다른 모든 리소스에 대해 이 프로세스를 반복합니다.
다음 단계
- SSL(TLS) 인증서 발급 및
EdgeCacheService
에 연결 - Cloud Logging으로 요청 로그 보기
- 콘텐츠 보호를 위한 서명된 요청 구성
- 캐시 키와 TTL 최적화 및 캐시 적중률 향상
- 고급 경로 매칭 구성 및 추가 원본 만들기