이 튜토리얼은 소유한 도메인의 정적 웹사이트를 호스팅하기 위해 Cloud Storage 버킷을 구성하는 방법을 설명합니다. 정적 웹페이지에는 HTML, CSS, 자바스크립트와 같은 클라이언트 측 기술이 포함될 수 있습니다. 반면 PHP와 같은 서버 측 스크립트를 비롯한 동적 콘텐츠는 포함될 수 없습니다.
이 튜토리얼에서는 HTTP를 통해 콘텐츠를 제공하는 방법을 보여줍니다. HTTPS를 사용하는 튜토리얼은 정적 웹사이트 호스팅을 참조하세요.
동적 웹사이트의 정적 애셋을 호스팅하는 방법을 비롯하여 정적 웹페이지에 대한 예시와 도움말은 정적 웹사이트 페이지를 참조하세요.
목표
이 튜토리얼에서는 다음 단계를 진행합니다.CNAME
레코드를 사용하여 도메인을 Cloud Storage로 지정합니다.- 도메인에 연결된 버킷을 만듭니다.
- 사이트의 파일을 업로드하고 공유합니다.
- 웹사이트를 테스트합니다.
비용
이 튜토리얼에서는 비용이 청구될 수 있는 다음과 같은 Google Cloud 구성요소를 사용합니다.
- Cloud Storage
정적 웹사이트 호스팅 시 발생할 수 있는 요금에 대한 자세한 내용은 스토리지 요금 모니터링 팁을 참조하세요. Cloud Storage 비용에 대한 자세한 내용은 가격 책정 페이지를 참조하세요.
시작하기 전에
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- 자신이 소유하거나 관리하는 도메인이 있어야 합니다. 기존 도메인이 없는 경우 Cloud Domains와 같은 다양한 서비스를 사용하여 새 도메인을 등록할 수 있습니다.
이 튜토리얼은
example.com
도메인을 사용합니다. - 사용할 도메인을 소유 또는 관리하고 있는지 확인합니다.
www.example.com
과 같은 하위 도메인이 아니라example.com
과 같은 최상위 도메인을 확인해야 합니다.참고: 버킷에 연결된 도메인을 소유하고 있는 경우, 이전에 이 단계를 이미 수행했을 수 있습니다. Cloud Domains를 통해 도메인을 구매한 경우 자동으로 확인이 수행됩니다.
Cloud Storage에 도메인 연결
Cloud Storage에 도메인을 연결하려면 도메인 등록 서비스를 통해 CNAME
레코드를 만듭니다. CNAME
레코드는 DNS 레코드의 한 유형입니다. 이 레코드는 URL을 요청하는 트래픽을 도메인에서 제공할 리소스(이 경우 Cloud Storage 버킷에 있는 객체)로 전달합니다.
www.example.com
의 경우, CNAME
레코드에는 다음 정보가 포함될 수 있습니다.
NAME TYPE DATA www CNAME c.storage.googleapis.com.
CNAME
리디렉션에 대한 자세한 내용은 CNAME
별칭 URI를 참조하세요.
도메인을 Cloud Storage에 연결하려면 다음을 수행합니다.
c.storage.googleapis.com.
을 가리키는CNAME
레코드를 만듭니다.도메인 등록 서비스에는
CNAME
레코드 추가가 포함된 도메인 관리 방법이 있어야 합니다. 예를 들어 Cloud DNS를 사용하는 경우 레코드 추가, 수정, 삭제 페이지에서 리소스 레코드 추가에 대한 안내를 확인할 수 있습니다.
버킷 만들기
도메인용으로 만든 CNAME
과 이름이 일치하는 버킷을 만듭니다.
예를 들어 example.com
의 www
하위 도메인에서 c.storage.googleapis.com.
을 가리키는 CNAME
레코드를 추가한 경우 이름이 www.example.com
인 버킷을 만드는 Google Cloud CLI 명령어는 다음과 유사합니다.
gcloud storage buckets create gs://www.example.com --location=US
다양한 도구로 버킷을 만드는 방법에 관한 자세한 내용은 버킷 만들기를 참고하세요.
사이트 파일 업로드
웹사이트가 제공할 파일을 버킷에 추가하려면 다음을 따르세요.
콘솔
- Google Cloud 콘솔에서 Cloud Storage 버킷 페이지로 이동합니다.
버킷 목록에서 앞서 만든 버킷의 이름을 클릭합니다.
객체 탭에서 파일 업로드 버튼을 클릭합니다.
파일 대화상자에서 원하는 파일을 탐색하고 선택합니다.
업로드가 완료되면 버킷에 표시된 파일 정보와 함께 파일 이름이 표시됩니다.
명령줄
gcloud storage cp
명령어를 사용하여 파일을 버킷으로 복사합니다.
예를 들어 현재 위치 Desktop
에서 index.html
파일을 복사하려면 다음을 사용하세요.
gcloud storage cp Desktop/index.html gs://www.example.com
성공하면 응답은 다음 예시와 같습니다.
Completed files 1/1 | 164.3kiB/164.3kiB
클라이언트 라이브러리
C++
자세한 내용은 Cloud Storage C++ API 참고 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
C#
자세한 내용은 Cloud Storage C# API 참고 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Go
자세한 내용은 Cloud Storage Go API 참고 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Java
자세한 내용은 Cloud Storage Java API 참고 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
다음 샘플은 개별 객체를 업로드합니다.
다음 샘플은 객체 여러 개를 동시에 업로드합니다.
다음 샘플에서는 공통 프리픽스가 있는 모든 객체를 동시에 업로드합니다.
Node.js
자세한 내용은 Cloud Storage Node.js API 참조 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
다음 샘플은 개별 객체를 업로드합니다.
다음 샘플은 객체 여러 개를 동시에 업로드합니다.
다음 샘플에서는 공통 프리픽스가 있는 모든 객체를 동시에 업로드합니다.
PHP
자세한 내용은 Cloud Storage PHP API 참조 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Python
자세한 내용은 Cloud Storage Python API 참고 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
다음 샘플은 개별 객체를 업로드합니다.
다음 샘플은 객체 여러 개를 동시에 업로드합니다.
다음 샘플에서는 공통 프리픽스가 있는 모든 객체를 동시에 업로드합니다.
Ruby
자세한 내용은 Cloud Storage Ruby API 참조 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
REST API
JSON API
Authorization
헤더에 대한 액세스 토큰을 생성하려면 gcloud CLI가 설치 및 초기화되어 있어야 합니다.또는 OAuth 2.0 Playground를 사용하여 액세스 토큰을 만들고
Authorization
헤더에 포함할 수 있습니다.cURL
을 사용하여POST
객체 요청으로 JSON API를 호출합니다. www.example.com 색인 페이지의 경우 다음과 같습니다.curl -X POST --data-binary @index.html \ -H "Content-Type: text/html" \ -H "Authorization: $(gcloud auth print-access-token)" \ "https://storage.googleapis.com/upload/storage/v1/b/www.example.com/o?uploadType=media&name=index.html"
XML API
Authorization
헤더에 대한 액세스 토큰을 생성하려면 gcloud CLI가 설치 및 초기화되어 있어야 합니다.또는 OAuth 2.0 Playground를 사용하여 액세스 토큰을 만들고
Authorization
헤더에 포함할 수 있습니다.cURL
을 사용하여PUT
객체 요청으로 XML API를 호출합니다. www.example.com 색인 페이지의 경우 다음과 같습니다.curl -X PUT --data-binary @index.html \ -H "Authorization: $(gcloud auth print-access-token)" \ -H "Content-Type: text/html" \ "https://storage.googleapis.com/www.example.com/index.html"
파일 공유
공개 인터넷의 모든 사용자가 버킷의 모든 객체를 읽을 수 있도록 하려면 다음 단계를 따르세요.
콘솔
- Google Cloud 콘솔에서 Cloud Storage 버킷 페이지로 이동합니다.
버킷 목록에서 공개하려는 버킷의 이름을 클릭합니다.
페이지 상단의 권한 탭을 선택합니다.
공개 액세스 창에 공개 아님이 표시되면 공개 액세스 방지 삭제 버튼을 클릭하고 대화상자가 나타나면 확인을 클릭합니다.
add_box 액세스 권한 부여 버튼을 클릭합니다.
주 구성원 추가 대화상자가 나타납니다.
새 주 구성원 필드에
allUsers
를 입력합니다.역할 선택 드롭다운에서 Cloud Storage 하위 메뉴를 선택하고 스토리지 객체 뷰어 옵션을 클릭합니다.
저장을 클릭합니다.
공개 액세스 허용을 클릭합니다.
버킷이 공개적으로 공유되면 공개 액세스 열에 각 객체의 링크 아이콘이 나타납니다. 이 아이콘을 클릭하여 객체의 URL을 가져올 수 있습니다.
명령줄
buckets add-iam-policy-binding
명령어를 사용합니다.
gcloud storage buckets add-iam-policy-binding gs://www.example.com --member=allUsers --role=roles/storage.objectViewer
클라이언트 라이브러리
C++
자세한 내용은 Cloud Storage C++ API 참고 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
C#
자세한 내용은 Cloud Storage C# API 참고 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Go
자세한 내용은 Cloud Storage Go API 참고 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Java
자세한 내용은 Cloud Storage Java API 참고 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Node.js
자세한 내용은 Cloud Storage Node.js API 참고 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
PHP
자세한 내용은 Cloud Storage PHP API 참고 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Python
자세한 내용은 Cloud Storage Python API 참고 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Ruby
자세한 내용은 Cloud Storage Ruby API 참고 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
REST API
JSON API
Authorization
헤더에 대한 액세스 토큰을 생성하려면 gcloud CLI가 설치 및 초기화되어 있어야 합니다.또는 OAuth 2.0 Playground를 사용하여 액세스 토큰을 만들고
Authorization
헤더에 포함할 수 있습니다.다음 정보를 포함하는 JSON 파일을 만듭니다.
{ "bindings":[ { "role": "roles/storage.objectViewer", "members":["allUsers"] } ] }
cURL
을 사용하여PUT
버킷 요청으로 JSON API를 호출합니다.curl -X PUT --data-binary @JSON_FILE_NAME \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/iam"
각 항목의 의미는 다음과 같습니다.
JSON_FILE_NAME
은 2단계에서 만든 JSON 파일의 경로입니다.BUCKET_NAME
은 객체를 공개할 버킷의 이름입니다. 예를 들면my-bucket
입니다.
XML API
XML API에서는 버킷의 모든 객체를 공개적으로 읽을 수 있게 설정할 수 없습니다. 대신 Google Cloud 콘솔 또는 gcloud storage
를 사용합니다.
원하는 경우 버킷의 일부를 공개적으로 액세스 가능하게 설정할 수도 있습니다.
방문자가 비공개 파일이나 존재하지 않는 파일의 URL을 요청하면 http 403
응답 코드를 받습니다. http 404
응답 코드를 사용하는 오류 페이지를 추가하는 방법에 대한 자세한 내용은 다음 섹션을 참조하세요.
권장사항: 특수 페이지 할당
MainPageSuffix
속성으로 제어되는 색인 페이지 서픽스와 NotFoundPage
속성으로 제어되는 커스텀 오류 페이지를 할당할 수 있습니다. 이 중 원하는 한 가지를 할당할 수 있지만 색인 페이지가 없을 경우에는 사용자가 http://www.example.com
과 같은 최상위 사이트에 액세스할 때 아무것도 제공되지 않습니다. 자세한 내용은 웹사이트 구성 예를 참조하세요.
다음 샘플에서 MainPageSuffix
는 index.html
로 설정되고 NotFoundPage
는 404.html
로 설정됩니다.
콘솔
- Google Cloud 콘솔에서 Cloud Storage 버킷 페이지로 이동합니다.
버킷 목록에서 앞서 만든 버킷을 찾습니다.
버킷과 연관된 버킷 오버플로 메뉴(more_vert)를 클릭하고 웹사이트 구성 수정을 선택합니다.
웹사이트 구성 대화상자에서 기본 페이지와 오류 페이지를 지정합니다.
저장을 클릭합니다.
명령줄
buckets update
명령어를 --web-main-page-suffix
및 --web-error-page
플래그와 함께 사용합니다.
gcloud storage buckets update gs://www.example.com --web-main-page-suffix=index.html --web-error-page=404.html
성공하면 명령어가 다음을 반환합니다.
Updating gs://www.example.com/... Completed 1
클라이언트 라이브러리
C++
자세한 내용은 Cloud Storage C++ API 참고 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
C#
자세한 내용은 Cloud Storage C# API 참고 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Go
자세한 내용은 Cloud Storage Go API 참고 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Java
자세한 내용은 Cloud Storage Java API 참고 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Node.js
자세한 내용은 Cloud Storage Node.js API 참고 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
PHP
자세한 내용은 Cloud Storage PHP API 참고 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Python
자세한 내용은 Cloud Storage Python API 참고 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Ruby
자세한 내용은 Cloud Storage Ruby API 참고 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
REST API
JSON API
Authorization
헤더에 대한 액세스 토큰을 생성하려면 gcloud CLI가 설치 및 초기화되어 있어야 합니다.또는 OAuth 2.0 Playground를 사용하여 액세스 토큰을 만들고
Authorization
헤더에 포함할 수 있습니다.website
객체에서mainPageSuffix
및notFoundPage
속성을 원하는 페이지로 설정하는 JSON 파일을 만듭니다.{ "website":{ "mainPageSuffix": "index.html", "notFoundPage": "404.html" } }
cURL
을 사용하여PATCH
버킷 요청으로 JSON API를 호출합니다. www.example.com의 경우는 다음과 같습니다.curl -X PATCH --data-binary @web-config.json \ -H "Authorization: $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://storage.googleapis.com/storage/v1/b/www.example.com"
XML API
Authorization
헤더에 대한 액세스 토큰을 생성하려면 gcloud CLI가 설치 및 초기화되어 있어야 합니다.또는 OAuth 2.0 Playground를 사용하여 액세스 토큰을 만들고
Authorization
헤더에 포함할 수 있습니다.WebsiteConfiguration
요소에서MainPageSuffix
및NotFoundPage
요소를 원하는 페이지로 설정하는 XML 파일을 만듭니다.<WebsiteConfiguration> <MainPageSuffix>index.html</MainPageSuffix> <NotFoundPage>404.html</NotFoundPage> </WebsiteConfiguration>
cURL
을 사용하여PUT
버킷 요청 및websiteConfig
쿼리 문자열 매개변수로 XML API를 호출합니다. www.example.com의 경우는 다음과 같습니다.curl -X PUT --data-binary @web-config.xml \ -H "Authorization: $(gcloud auth print-access-token)" \ https://storage.googleapis.com/www.example.com?websiteConfig
웹사이트 테스트
브라우저에서 도메인 이름을 요청하여 버킷에서 콘텐츠가 제공되는지 확인합니다. MainPageSuffix
속성을 설정하는 경우 객체 경로나 도메인 이름으로 이 작업을 수행할 수 있습니다.
예를 들어 www.example.com
이름의 버킷에 저장된 test.html
이라는 객체가 있는 경우, 브라우저에서 www.example.com/test.html
로 이동하여 액세스할 수 있는지 확인합니다.
삭제
튜토리얼을 완료한 후에는 만든 리소스를 삭제하여 할당량 사용을 중지하고 요금이 청구되지 않도록 할 수 있습니다. 다음 섹션은 이러한 리소스를 삭제하거나 사용 중지하는 방법을 설명합니다.
프로젝트 삭제
비용이 청구되지 않도록 하는 가장 쉬운 방법은 튜토리얼에서 만든 프로젝트를 삭제하는 것입니다.
프로젝트를 삭제하려면 다음 안내를 따르세요.
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.