0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

GCP - App Engine アプリケーション構築チュートリアル改編

Last updated at Posted at 2020-05-19

App Engineを利用するために必要なサービスアカウントの権限や認証周りなどの設定方法からデプロイ手順を紹介します。

サービスアカウントの作成

まず初めに行いたいのがサービスアカウントの作成です。
サービスアカウントとはユーザーの代わりにシステムがGCP各サービスを利用するためのアカウントのこと。

アカウントの作成

今回はコンソール サービスアカウントから作成をします。

ユーザー名 ロール1 ロール2
minarai-app-engine App Engine 管理者 Cloud Buildサービスアカウント

捕捉:アクセス制御

  1. 基本ロールでEditor権限(アプリケーション コードのデプロイ)が必要なので設定してあげる。
    詳しくは「App Engine へのアクセスを許可する役割」を参照。

  2. [PROJECT_NUMBER]@cloudbuild.gserviceaccount.comにはApp Engine 管理者のロールとCloud Buildサービスアカウントのロールを 付与してあげる。
    詳しくは「App Engine へのデプロイ」及び「クイックスタート: デプロイ」を参照。

サービスアカウントの鍵を作成

サービスアカウント一覧にminarai-app-engine@****が表示されたら操作から**鍵を作成(json)**を選択すると鍵が生成されローカルPCにダウンロードされるので適切な場所に配置する

サービス実行アカウントを変更

作成したサービスアカウントをアクティブにする

  • 現在の設定一覧とアクティブなアカウントを確認する
% gcloud config configurations list
NAME     IS_ACTIVE  ACCOUNT                 PROJECT      COMPUTE_DEFAULT_ZONE  COMPUTE_DEFAULT_REGION
default  True       アカウント@gmail.com  プロジェクトID

# (省略化) ついでにCOMPUTE_DEFAULT_ZONEも追加した
gcloud config set compute/region asia-northeast1
gcloud config set compute/zone asia-northeast1-a

# (省略化) 改めて確認
% gcloud config configurations list               
NAME     IS_ACTIVE  ACCOUNT                 PROJECT      COMPUTE_DEFAULT_ZONE  COMPUTE_DEFAULT_REGION
default  True       アカウント@gmail.com  プロジェクトID  asia-northeast1-a     asia-northeast1

構文: gcloud config configurations create NAME FLAG

% gcloud config configurations create minarai-app-engine --activate

% gcloud config configurations list                                
NAME                IS_ACTIVE  ACCOUNT                 PROJECT      COMPUTE_DEFAULT_ZONE  COMPUTE_DEFAULT_REGION
default             False      アカウント@gmail.com  プロジェクトID  asia-northeast1-a     asia-northeast1

構文: gcloud config set core/project プロジェクトID
構文: gcloud config set core/account サービスアカウント
構文: gcloud config set compute/region リージョン
構文: gcloud config set compute/zone ゾーン

% gcloud config set core/project プロジェクトID
% gcloud config set core/account サービスアカウント
% gcloud config set compute/region asia-northeast1
% gcloud config set compute/zone asia-northeast1-a

% gcloud config configurations list 
NAME                IS_ACTIVE  ACCOUNT                                                 PROJECT      COMPUTE_DEFAULT_ZONE  COMPUTE_DEFAULT_REGION
default             False      アカウント@gmail.com                                  プロジェクトID  asia-northeast1-a     asia-northeast1
minarai-app-engine  True       minarai-app-engine@アカウント.iam.gserviceaccount.com  プロジェクトID  asia-northeast1-a     asia-northeast1
  • サービスアカウントの認証
% gcloud auth activate-service-account --key-file ~/Documents/key.json

App Engine 用の基本的なウェブサービスの作成

Cloud Build のドキュメント

App Engineはファイルのアップロード&ビルドを行います。
ビルドの際にCloud Buildサービスが利用されるため、Cloud Buildを有効にする必要があります。

Cloud Build は、Google Cloud Platform インフラストラクチャでビルドを行うサービスです。Cloud Build は、Google Cloud Storage、Cloud Source Repositories、GitHub、Bitbucket からソースコードをインポートし、仕様に合わせてビルドを実行して、Docker コンテナや Java アーカイブなどのアーティファクトを生成します。

Cloud Build は、一連のビルドステップとしてビルドを実行します。各ビルドステップは、Docker コンテナで実行されます。ビルドステップでは、環境に関係なく、コンテナから実行可能なすべての処理を実行できます。タスクを実施するには、Cloud Build が提供するサポート対象のビルドステップを使用するか、独自のビルドステップを作成します。

GAEではアプリケーションファイルをCloud Storageにアップロードし、Cloud Buildを使ってデプロイを行う。

App Engine アプリケーションを作成する

App Engineを利用するためにはまずApp Engineアプリケーション作成を行う。
アプリケーションの作成はコマンドからコンソールからの2つの作成方法がある。
作成するアカウントはプロジェクトのオーナーである必要があります。

  • コマンドから作成する
# プロジェクトが未作成の場合は次のコマンドを実行して Cloud プロジェクトを作成
gcloud projects create

# 次のコマンドを実行して、リージョンを選択し、App Engine アプリケーションを作成
gcloud app create

サンプルアプリケーションデプロイ

% git clone https://github.com/GoogleCloudPlatform/python-docs-samples
% cd python-docs-samples/appengine/standard_python37/building-an-app/building-an-app-1


% pip install -r requirements.txt
Could not build wheels for Flask, since package 'wheel' is not installed.
Could not build wheels for Jinja2, since package 'wheel' is not installed.
Could not build wheels for Werkzeug, since package 'wheel' is not installed.
Could not build wheels for itsdangerous, since package 'wheel' is not installed.
Could not build wheels for click, since package 'wheel' is not installed.
Could not build wheels for MarkupSafe, since package 'wheel' is not installed.
# 上記エラーが出たら下記を実行して再度インストール
% pip install wheel
% pip install -r requirements.txt

# ローカルでテスト
% python main.py

# appl サービス作成
% gcloud app create
# deploy
% gcloud app deploy

API [appengine.googleapis.com] not enabled on project [860884311409]. 
Would you like to enable and retry (this will take a few minutes)? 
(y/N)?  y

Enabling service [appengine.googleapis.com] on project [860884311409]...
ERROR: (gcloud.app.deploy) PERMISSION_DENIED: Service Usage API has not been used in project 860884311409 before or it is disabled. Enable it by visiting https://console.developers.google.com/apis/api/serviceusage.googleapis.com/overview?project=プロジェクトNumber then retry. If you enabled this API recently, wait a few minutes for the action to propagate to our systems and retry.
- '@type': type.googleapis.com/google.rpc.Help
  links:
  - description: Google developers console API activation
    url: https://console.developers.google.com/apis/api/serviceusage.googleapis.com/overview?project=プロジェクトNumber

Service Usage APIを有効にしてくださいと怒られたので有効にしてもう一度デプロイ実行します

% gcloud app deploy

今度はApp Engine Admin APIを有効にしてくださいと言われましたので有効にしてもう一度デプロイ実行します

% gcloud app deploy

File upload done.
Updating service [default]...done.                                                                                                                                                                                                           
Setting traffic split for service [default]...done.                                                                                                                                                                                          
Deployed service [default] to [https://minarai-gcp.an.r.appspot.com]

You can stream logs from the command line by running:
  $ gcloud app logs tail -s default

To view your application in the web browser run:
  $ gcloud app browse

サンプルサービスをブラウザで表示

下記コマンドでブラウザを起動し表示させることができる

gcloud app browse

GCP - App Engine アプリケーション構築チュートリアル GCS編へ続きます

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?