리전 ID
REGION_ID
는 앱을 만들 때 선택한 리전을 기준으로 Google에서 할당하는 축약된 코드입니다. 일부 리전 ID는 일반적으로 사용되는 국가 및 주/도 코드와 비슷하게 표시될 수 있지만 코드는 국가 또는 주/도와 일치하지 않습니다. 2020년 2월 이후에 생성된 앱의 경우 REGION_ID.r
이 App Engine URL에 포함됩니다. 이 날짜 이전에 만든 기존 앱의 경우 URL에서 리전 ID는 선택사항입니다.
리전 ID에 대해 자세히 알아보세요.
App Engine Python 앱에 대한 Cloud Storage 액세스를 사용 설정하고, Cloud Storage 버킷에서 파일을 생성, 쓰기, 나열하는 방법을 알아봅니다.
이 가이드에서는 개발자가 Python에 익숙하고 개발 환경을 설정했다고 가정합니다.
이 샘플이 실행되면 스크립트를 실행하고 브라우저에 출력을 씁니다. 이 스크립트는 Cloud Storage 클라이언트 라이브러리의 다음 기능을 보여줍니다.
- 파일 만들기 및 파일을 버킷에 쓰기
- 파일 읽기 및 해당 파일의 메타데이터 가져오기
- 여러 파일을 만든 후 버킷에서 나열
- 방금 버킷에 추가한 파일 나열
- 같은 파일 집합 읽기
- 파일 집합 삭제
목표
- Python 프로젝트를 살펴보며 필수 레이아웃과 파일 확인
- Cloud Storage 연결을 위한 코드 이해
- 파일 만들기, 쓰기, 읽기, 나열, 삭제를 위한 코드 이해
- 재시도를 위한 코드 이해
- 로컬 개발 서버에서 앱 빌드 및 테스트
- Google App Engine에서 앱을 프로덕션에 배포
비용
App Engine에는 무료로 제공되는 사용량이 있습니다. App Engine의 총 사용량이 App Engine 무료 할당량에 지정된 한도보다 낮을 경우 이 가이드를 완료하는 데 비용이 들지 않습니다.
시작하기 전에
이 샘플을 실행하려면 프로젝트 ID, gcloud
명령줄 도구, Cloud Storage 버킷이 필요합니다.
새 Google Cloud 콘솔 프로젝트를 만들거나 Google Cloud 콘솔에서 기존 프로젝트의 프로젝트 ID를 가져옵니다.
Google Cloud CLI를 설치하고 초기화합니다.
gcloud
로 Google Cloud 콘솔 프로젝트 ID 나열
명령줄에서 다음을 실행합니다.
gcloud projects list
가이드 프로젝트 클론
프로젝트를 복제하려면 다음 단계를 따르세요.
클라이언트 라이브러리와 샘플(데모) 앱을 로컬 머신에 복제합니다.
git clone https://github.com/GoogleCloudPlatform/python-docs-samples
또는 zip 파일로 샘플을 다운로드하고 압축을 풀 수도 있습니다.
복제 또는 다운로드한 프로젝트에서 해당 디렉토리로 이동합니다.
cd python-docs-samples/appengine/standard/storage/appengine-client
종속 항목 설치
virtualenv
도구를 사용하면 시스템에 정상적인 Python 환경을 만들 수 있습니다.
이렇게 하면 App Engine 개발 시 코드를 테스트하는 로컬 환경과 코드를 배포할 대상 환경을 유사하게 만들 수 있습니다. 자세한 내용은 타사 라이브러리 사용을 참조하세요.
virtualenv
와 샘플의 종속 항목을 설치하려면 다음 안내를 따르세요.
Mac OS/Linux
- virtualenv가 없으면
pip
를 사용하여 시스템 전체에 설치합니다.sudo pip install virtualenv
- 격리된 Python 환경을 만듭니다.
virtualenv env
source env/bin/activate
- 현재 위치가 샘플 코드가 있는 디렉터리가 아니면
hello_world
샘플 코드가 포함된 디렉터리로 이동합니다. 그런 후 종속 항목을 설치합니다.cd YOUR_SAMPLE_CODE_DIR
pip install -t lib -r requirements.txt
Windows
Google Cloud CLI를 설치한 경우 Python 2.7이 이미 설치되어 있어야 합니다. 64비트 시스템의 경우 일반적으로 C:\python27_x64\
에 설치됩니다. PowerShell을 사용하여 Python 패키지를 실행합니다.
- PowerShell 설치 위치를 찾습니다.
- PowerShell 바로가기를 마우스 오른쪽 버튼으로 클릭하고 관리자 권한으로 시작합니다.
-
python
명령어를 실행해 봅니다. Python을 찾지 못한 경우 환경의PATH
에 Python 폴더를 추가합니다.$env:Path += ";C:\python27_x64\"
- virtualenv가 없으면
pip
를 사용하여 시스템 전체에 설치합니다.python -m pip install virtualenv
- 격리된 Python 환경을 만듭니다.
python -m virtualenv env
. env\Scripts\activate
- 프로젝트 디렉터리로 이동하여 종속 항목을 설치합니다. 현재 위치가 샘플 코드가 있는 디렉터리가 아니면
hello_world
샘플 코드가 포함된 디렉터리로 이동합니다. 그런 후 종속 항목을 설치합니다.cd YOUR_SAMPLE_CODE_DIR
python -m pip install -t lib -r requirements.txt
클론 또는 다운로드한 샘플 코드에는 이미 appengine_config.py
파일이 포함되어 있습니다. 이 파일은 App Engine이 로컬에서 그리고 배포 시 종속 항목을 로드할 때 lib
폴더를 사용하도록 지시하는 데 필요합니다.
로컬에서 실행
샘플을 로컬에서 실행하려면 다음 안내를 따르세요.
프로젝트 하위 디렉터리
python-docs-samples/appengine/standard/storage/appengine-client
에서 로컬 개발 서버의 앱을 실행합니다.python3 CLOUD_SDK_ROOT/bin/dev_appserver.py .
다음과 같은 성공 메시지를 기다립니다.
INFO 2016-04-12 21:33:35,446 api_server.py:205] Starting API server at: http://localhost:36884 INFO 2016-04-12 21:33:35,449 dispatcher.py:197] Starting module "default" running at: http://localhost:8080 INFO 2016-04-12 21:33:35,449 admin_server.py:116] Starting admin server at: http://localhost:8000
브라우저에서 다음 URL을 방문합니다.
페이지 로드 시 애플리케이션이 실행되고 브라우저에 실행 결과를 나타내는 출력이 표시됩니다. 출력 형식은 다음과 같습니다.
Control-C를 눌러 개발 서버를 중지합니다.
app.yaml 둘러보기
app.yaml
파일은 애플리케이션 구성 세부정보를 지정합니다.
이 파일에서 사용 가능한 구성 옵션에 대한 자세한 내용은 app.yaml 참조 문서를 확인하세요.
가져오기 둘러보기
main.py
파일에는 클라이언트 라이브러리를 통해 Cloud Storage에 액세스하는 데 사용되는 일반적인 가져오기가 포함되어 있습니다.
런타임에서 기본 버킷 이름을 가져오려면 os
모듈과 app_identity
API가 필요합니다. 모든 Cloud Storage 액세스 작업에 이 버킷 이름이 필요합니다.
이 샘플은 webapp2
웹 프레임워크도 사용합니다.
Cloud Storage 버킷 지정
Cloud Storage에서 작업을 수행하기 전에 버킷 이름을 제공해야 합니다. 가장 간편한 방법은 프로젝트의 기본 버킷을 사용하는 것으로, 기본 버킷은 다음과 같은 방법으로 얻을 수 있습니다.
Cloud Storage에 파일 쓰기
다음 샘플은 버킷에 쓰는 방법을 보여줍니다.
쓰기 위해 파일을 open
하는 호출에서 이 샘플은 파일의 커스텀 메타데이터를 쓰는 특정 Cloud Storage 헤더를 지정합니다. cloudstorage.stat
을 사용하여 이 메타데이터를 검색할 수 있습니다. cloudstorage.open
참조 문서에서 지원되는 헤더 목록을 확인할 수 있습니다.
x-goog-acl
헤더가 설정되지 않았다는 것도 알 수 있습니다. 즉, 기본 Cloud Storage ACL의 공개 읽기는 버킷에 기록될 때 객체에 적용됩니다.
마지막으로 쓰기를 마친 후에 파일을 close
하기 위한 호출을 확인합니다. 그렇지 않으면 파일이 Cloud Storage에 기록되지 않습니다. close
를 호출한 후에는 파일에 아무 것도 추가할 수 없습니다. 파일을 수정해야 하는 경우 쓰기 모드에서 파일을 다시 열어야 하며, 이 경우 파일을 추가하지 않고 덮어씁니다.
Cloud Storage에서 파일 읽기
다음 샘플은 버킷에서 파일을 읽는 방법을 보여줍니다.
이 샘플은 seek
을 사용하여 읽는 파일에서 선택한 줄(이 경우 시작 줄과 마지막 1,000개의 줄)을 표시하는 방법을 보여줍니다.
파일을 읽기 위해 연 경우 위 코드에 지정된 모드가 없습니다. open
의 기본값은 읽기 전용 모드입니다.
버킷 콘텐츠 나열
이 샘플 코드는 marker
를 사용하여 다수의 파일이 있는 버킷을 통해 페이지를 지정하는 방법과 max_keys
매개변수를 사용하여 버킷의 콘텐츠 목록을 통해 페이지를 지정하는 방법을 보여줍니다.
전체 파일 이름은 디렉터리 구분 기호 없이 문자열 하나로 표시됩니다.
보기 쉽게 디렉터리 계층 구조로 파일을 표시하려면 사용할 디렉터리 구분 기호로 delimiter
매개변수를 설정합니다.
파일 삭제
이 코드 샘플은 파일 삭제를 보여줍니다. 이 경우에는 애플리케이션 실행 중에 추가된 모든 파일을 삭제합니다. 이 샘플의 정리 기능일 뿐이므로, 사용자 코드에서는 이를 수행하지 않습니다.
샘플 배포
샘플을 App Engine에 배포하고 실행하려면 다음 안내를 따르세요.
app.yaml
파일이 있는python-docs-samples/appengine/standard/storage/appengine-client
디렉터리에서 다음 명령어를 실행하여 샘플 앱을 업로드합니다.gcloud app deploy
선택적 플래그:
--project
플래그를 포함하여 gcloud CLI에서 기본값으로 초기화한 값으로 대체 Google Cloud 콘솔 프로젝트 ID를 지정합니다. 예:--project [YOUR_PROJECT_ID]
- 버전 ID를 지정하려면
-v
플래그를 포함하세요. 그렇지 않으면 버전 ID가 자동으로 생성됩니다. 예를 들면-v [YOUR_VERSION_ID]
입니다.
배포 프로세스가 완료되면 다음 명령어를 실행하여
https://PROJECT_ID.REGION_ID.r.appspot.com
에서 애플리케이션을 볼 수 있습니다.gcloud app browse
demo
앱은 로컬에서 실행할 때와 마찬가지로 페이지 로드 시 실행됩니다. 하지만 이제는 앱이 실제로 Cloud Storage 버킷에서 읽고 씁니다.
명령줄에서 앱을 배포하는 방법에 대한 자세한 내용은 Python 2 앱 배포를 참조하세요.
다음 단계
- 핵심 Cloud Storage 개념에 대해 알아보기
- Cloud Storage 클라이언트 라이브러리 함수 참조 문서 읽기
- RetryParams 클래스 참조 문서 읽기
- 오류 처리 참조 읽어보기
- Google Cloud에 대한 참조 아키텍처, 다이어그램, 권장사항 살펴보기 Cloud 아키텍처 센터 살펴보기