brunch

You can make anything
by writing

C.S.Lewis

by Master Seo Dec 28. 2019

21. Google  Cloud Storage 만들기

<1> 목적

외부 사용자가 스토리지 데이터를 올리고 내리길 원한다.

삭제권한은 없도록 한다.

디자인팀에 적합하다.



<2>   Google  Cloud Storage 란?

오브젝트 스토리지 만드는 법과 데이터 업로드 다운로드해보자

Google  Cloud Storage는 AWS S3와 같은 오프젝트 스토리지 이다.

이미지나 동영상 데이터를 사용할때 적합하다.



<3> 스토리지 만들자.

<4>  GUI를 이용해서 파일 업로드 / 다운로드해보자

<5>  CLI로  Bucket을 생성하고  파일을  업로드/다운로드해보자.

<6>  Bucket이나 파일에 대해  읽을 수 있는 구성원 추가해보자.



<3> 스토리지 만들자.


1. Storage > 브라우저



2. 버킷을 만들자.


1) 버킷은 고유한 이름이어야 한다.

    전 세계에 유니크해야 한다.


2) 도메인으로 지정 시  해당 도메인의 실제 소유자 인지 확인되어야 한다.  (AWS와 다른점)

도메인 인증을 받아야 한다.  (별첨 1)


https://search.google.com/search-console    접속해 txt레코더 값 확인한다.

또는

Learn more 클릭해 search-console로 간다.


DNS 네임서버에서  TXT 레코더를 설정해야 한다.  

AWS와  다르게  도메인에 대한 소유자를  확인하는 절차가 있다.



불편 :

버킷을 만들때  도메인 호스트별로 DNS인증 받아야 하는 불편함이 있다.

upload1.serverchk.com 과  change1.serverchk.com 각각  도메인 인증을 받아야 한다.


root도메인 serverchk.com 에 대해 인증을 받으면 쉽게 만들수는 있다.

메일을 안쓰는 경우는 상관없으나,  메일을 사용하는 경우는 spf레코더를 중복으로 설정할수 없으므로 문제가 된다.

그래서 그냥 호스트별 dns인증 받는것을 권장한다.

// 위 내용은 개인적인 의견입니다.


Google 관리형 SSL 인증서는 인증서당 도메인 이름 1개만 지원하며 와일드 카드 일반 이름이나 주체 대체 이름 여러 개를 지원하지 않습니다.

https://cloud.google.com/load-balancing/docs/ssl-certificates



3)  데이터 센터 저장위치 설정

Region(단일 리전) , Multi-region(폭넓은 지역에서 높은 가용성) , Dual-region (리전 2곳) 중 선정한다.




3.  스토리지 클래스는 3가지로 된다.

Standard , Nearline , Coldline 중 선택한다.


스토리지 클래스 선택한다.

1)  Standard : 자주 읽음

2)  Nearline : 30일 이상 보관, 저렴

3)  Coldline : 90일 이상 보관, 가장 저렴




4. 암호화 설정


기본이 Google 관리키  (구성이 필요하지 않음)

고객 관리키 : KMS 사용




5. 만들기

도메인이 인증되어 있지 않으면 , 본인 도메인인지 인증을 받아야 서비스가 가능하다.




별첨 1

도메인이 인증되어 있지 않으면 , 본인 도메인인지 인증을 받아야 서비스가 가능하다.


도메인 인증하기

네임서버에 TXT레코더를 지정해 줘야 한다.




DNS에 TXT 레코더 설정하라고 나온다.







<4>  GUI를 이용해서 파일 업로드 / 다운로드해보자


현재는 버킷 을 홈페이지처럼 운영할수는 없는가?

정적 호스팅 설정할수 있다.

DNS에 cname 으로 설정해서 사용할수 있다.

www.example.com.       CNAME    c.storage.googleapis.com.


https://cloud.google.com/storage/docs/hosting-static-website?hl=ko





<3>  CLI로  Bucket을 생성하고  파일을  업로드/다운로드해보자.


1.  Console 사용

오른쪽 위 버튼



2. gcloud 초기 설정


1) root@cloudshell:~$ gcloud   init

순차적으로 선택하며 설정하는 방법


또는


2) taeho_seo@cloudshell:~ (coastal-burner-254206)$ gcloud  config  set  project  coastal-burner-254206

Updated property [core/project].


3. 설정 상태 확인

taeho_seo@cloudshell:~ (coastal-burner-254206)$ gcloud config list

[component_manager]

disable_update_check = True

[compute]

gce_metadata_read_timeout_sec = 5

[core]

account = taeho.seo@gmail.com

disable_usage_reporting = False

project = coastal-burner-254206

[metrics]

environment = devshell

Your active configuration is: [cloudshell-16218]


4. 컴포넌트 업데이트

root@cloudshell:~$ sudo su

root@cloudshell:~$ gcloud   components   update


5.  Cli   gsutil 명령어로 버킷 조회, 생성, 파일 업로드 다운로드 해보기


권고

1) gsutil은  고객이 클라우드 환경이거나  고객사 회선이 고속일때 사용한다.

2) 고객사 회선이 저속일때는 어플라이언스장비를 통해 파일 업다운로드를 한다.

3) 파일 크기에 상관없이 gsuitl, 어플라이언스 장비 모두 사용 가능하다.



taeho_seo@cloudshell:~ (coastal-burner-254206)$ gsutil ls

gs://upload1.serverchk.com/


taeho_seo@cloudshell:~ (coastal-burner-254206)$ gsutil mb gs://upload2.serverchk.com

Creating gs://upload2.serverchk.com/...

AccessDeniedException: 403 The bucket you tried to create requires domain ownership verification. Please see https://cloud.google.com/storage/docs/naming?hl=en#verification for more details.



taeho_seo@cloudshell:~ (coastal-burner-254206)$ gsutil cp gs://upload1.serverchk.com/1.png .

Copying gs://upload1.serverchk.com/1.png...

- [1 files][ 25.4 KiB/ 25.4 KiB]

Operation completed over 1 objects/25.4 KiB.


taeho_seo@cloudshell:~ (coastal-burner-254206)$ ls

1.png  README-cloudshell.txt


taeho_seo@cloudshell:~ (coastal-burner-254206)$ pwd

/home/taeho_seo




6. 권한 주는법  2가지

1) 계정에 권한을 주어  업로드/ 다운로드하는 방법


2) Cloud Storage에 권한을 주어  업로드/ 다운로드하는 방법




<5>  Bucket이나 파일에 대해  읽을 수 있는 구성원 추가해보자



1. 버킷이나 파일에서 권한 수정하기


오른쪽 끝에서 수정



2. Storage > 브라우저 >   권한 에서 구성원 추가






<7>  확인


1. 스토리지 만들때 도메인에 대해 한번에 인증이 안되나?

도메인 자체 인증은 안되나?

root도메인에 대해  txt 레코더로 인증된다.

단지 txt 레코더 중복문제로 메일이 안될수 있으니 개별로 인증 받는것으로 한다.



2. CLI에서 버킷 생성시  도메인 인증 하라고 나오는데 웹에서 인증받고 만들어야 함.



3. 웹에서 직접 접속 안되나?  되는듯

정적 호스팅 가능하다.


https://storage.cloud.google.com/upload1.serverchk.com/1.png


단지 권한 조정이 필요한거 같다.

public으로, index.html 올리기, index.html로 지정하기





<8>  버킷의 수명 주기 관리


일 단위로  저장소 등급 단위로 수명을 주기적으로 관리할수 있다.

1달이면 30일을 입력한다.

30일 이상 데이터는 Coldline으로 보낸다.

30일 지나 불필요 하면  Delete 한다.






<9> 확인 사항


콘솔에서 도메인명 없는 버킷은 그냥 만들어 진다.

그러나 도메인을 가진 버킷은 dns txt 레코드 인증을 확인한다.


1

 (isms-vpc2)$ gsutil mb gs://seo-1

Creating gs://seo-1/...

topasvga@cloudshell:



2

(isms-vpc2)$ gsutil   mb   gs://seo-1.serverchk.com

Creating gs://seo-1.serverchk.com/...AccessDeniedException: 403 The bucket you tried to create requires domain ownership verification.

Please see https://cloud.google.com/storage/docs/naming?hl=en#verification for more details



serverchk.com 에 대해 인증을 받으면

에러 없이 만들어 진다

dns 네임서버에서 severchk.com 에 대해 인증 받자.


topasvga@cloudshell:~ (isms-vpc2)$ gsutil mb gs://seo-2.serverchk.com

Creating gs://seo-2.serverchk.com/...


topasvga@cloudshell:~ (isms-vpc2)$ gsutil mb gs://seo-3.serverchk.com

Creating gs://seo-3.serverchk.com/...


topasvga@cloudshell:~ (isms-vpc2)$ gsutil  ls

gs://seo-1/

gs://seo-2.serverchk.com/

gs://seo-3.serverchk.com/




<10>  참고 할만한 사이트


https://www.zenko.io/blog/four-differences-google-amazon-s3-api/



감사합니다.

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari