Python Flask 웹 애플리케이션을 App Engine Flexible에 배포
Python Flask 웹 애플리케이션을 App Engine 가변형 환경에 배포하는 방법
예제 애플리케이션을 통해 사용자는 사람의 얼굴 사진을 업로드하고 그 사람이 행복 할 가능성이 얼마나되는지 알 수 있다.
Vision, Storage, Datastore에 Google Cloud API를 사용함
Google App Engine 애플리케이션
- 트래픽 및 데이터 저장소 요구 사항이 변경됨에 따라 쉽게 만들고 유지 관리 및 확장 쉬움
- App Engine을 사용하면 유지 관리 할 서버가 없음 애플리케이션을 업로드하기 만하면 바로 사용
App Engine 애플리케이션
- 수신 트래픽에 따라 자동으로 확장
- 로드 밸런싱, 마이크로 서비스, 권한 부여, SQL 및 NoSQL 데이터베이스, 트래픽 분할, 로깅, 검색, 버전 관리, 롤아웃 및 롤백, 보안 스캔은 모두 기본적으로 지원되며 고도로 사용자 지정이 가능
App Engine의 가변형 환경
자바, Python, PHP, NodeJS, Ruby, Go를 비롯한 다양한 프로그래밍 언어를 지원
App Engine의 표준 환경
Python을 포함한 특정 언어에 대한 추가 옵션
두 환경은 각 환경이 특정 강점을 가지고 있기 때문에 사용자에게 애플리케이션 작동 방식에 최대 유연성을 제공
학습목표
- App Engine 가변형 환경에 간단한 웹 애플리케이션을 배포하는 방법
- Vision, Storage, Datastore 용 Google Cloud 클라이언트 라이브러리에 액세스하는 방법
- Cloud Shell 사용 방법
샘플 코드 받기
명령줄의 cloud shell에서 명령어를 실행해 github 저장소를 복제함
git clone https://github.com/GooglesCloudPlatform/python-docs-samples.git |
디렉토리를 변경함
cd python-docs-samples/codelabs/flex_and_vision |
API 요청 인증
api를 사용하려면 서비스 계정 사용자 인증 정보다 필요함
cloud shell에서 gcloud를 사용하여 프로젝트에서 사용자 인증 정보를 생성할 수 있다
[YOUR_PROJECT_ID]부분을 자신의 프로젝트id로 변경해야한다
export PROJECT_ID=[YOUR_PROJECT_ID] |
로컬에서 테스트 할 때 Google Cloud API에 액세스 할 서비스 계정 생성
gcloud iam service-accounts create qwiklab \ --display-name "My Qwiklab Service Account" |
새로 생성 된 서비스 계정에 적절한 권한을 부여
gcloud projects add-iam-policy-binding ${PROJECT_ID} \ --member serviceAccount:qwiklab@${PROJECT_ID}.iam.gserviceaccount.com \ --role roles/owner |
서비스 계정을 만든 후 서비스 계정 키 생성
gcloud iam service-accounts keys create ~/key.json \ --iam-account qwiklab@${PROJECT_ID}.iam.gserviceaccount.com |
로컬에서 애플리케이션 테스트
'env'라는 이름의 격리 파이썬 환경 만들기
virtualenv -p python3 env |
새로 생성된 입력
source env/bin/activate |
requirements.txt파일 pip에서 프로젝트에 대한 종속성을 설치하는 데 사용
pip install -r requirements.txt |
App Engine 앱 만들기
App Engine 인스턴스를 만듦
스토리지 버킷 생성
환경 변수 CLOUD_STORAGE_BUCKET 를 PROJECT_ID 의 이름과 동일하게 설정
export CLOUD_STORAGE_BUCKET=${PROJECT_ID} |
다음 명령을 실행하여 PROJECT_ID 와 이름이 같은 버킷을 만듦
gsutil mb gs://${PROJECT_ID} |
응용 프로그램 실행
애플리테이션을 시작함
python main.py |
포트 8080에서 미리보기
브라우저의 탭이 열리고 방금 시작한 서버에 연결
[파일선택]버튼을 누르고 아무 사진을 선택해서 [제출]을 선택함
다시 cloud chell로 돌아가 ctrl+c를 해줘서 멈춤
App Engine Flexible에 앱 배포
App Engine Flexible은라는 파일을 사용 app.yaml하여 애플리케이션의 배포 구성을 설명합니다. 이 파일이 없으면 App Engine이 배포 구성을 추측
vim , nano 또는 emacsapp.yaml 의 편집기를 사용하여 수정
nano app.yaml |
<your-cloud-storage-bucket>클라우드 스토리지 버킷의 이름으로 변경함 (Cloud Storage 버킷의 이름을 잊어 버린 경우 Qwiklabs 탭에서 프로젝트 ID 를 복사)
env_variables섹션에서는 main.py애플리케이션이 배포 된 후 사용할 환경 변수를 설정
ctrl+x로 저장하고 나감
Cloud Build 시간 제한을 업데이트
gcloud config set app/cloud_build_timeout 1000 |
gcloud App Engine에 앱을 배포
gcloud app deploy |
애플리케이션이 배포 된 후 다음 URL을 사용하여 웹 브라우저에서 앱을 연다
https://[PROJECT_ID].appspot.com |
'GCP' 카테고리의 다른 글
Cloud Security Scanner: Qwik Start (0) | 2021.07.03 |
---|---|
Container-Optimized OS: Qwik Start (0) | 2021.07.03 |
Cloud SQL for MySQL: Qwik Start (0) | 2021.06.25 |
Datastore: Qwik Start (0) | 2021.06.25 |
Container-Optimized OS : Qwik Start (0) | 2021.06.25 |
댓글