リージョン ID
REGION_ID
は、アプリの作成時に選択したリージョンに基づいて Google が割り当てる省略形のコードです。一部のリージョン ID は、一般的に使用されている国や州のコードと類似しているように見える場合がありますが、このコードは国または州に対応するものではありません。2020 年 2 月以降に作成されたアプリの場合、REGION_ID.r
は App Engine の URL に含まれています。この日付より前に作成されたアプリの場合、URL のリージョン ID は省略可能です。
詳しくは、リージョン ID をご覧ください。
App Engine Admin API を使用すると、HTTP POST
リクエストを通じて、アプリのバージョンを App Engine アプリケーションにプログラムでデプロイできます。
始める前に
HTTP デプロイ リクエストを送信する前に、HTTP リクエストを承認して、アプリのステージング済みファイルにアクセスし、JSON 形式の構成ファイルを用意する必要があります。これらの前提条件については、次のトピックをご覧ください。
Admin API を使用してアプリを App Engine にデプロイする
アプリのバージョンを App Engine のアプリケーションにデプロイするには:
アクセス トークンの取得など、HTTP リクエストを承認します。
Admin API へのアクセスの承認は、API アプリのニーズに応じてさまざまな OAuth フローを使用して行うことができます。詳細については、API へのアクセスをご覧ください。
アクセス トークンと Admin API を使用して HTTP
POST
リクエストを送信し、バージョンを App Engine アプリケーションにデプロイします。バージョンをデプロイするには HTTP
POST
リクエストを送信します。このリクエストで JSON 構成ファイルを指定し、ターゲット サービスと App Engine アプリケーションのVersion
リソースを定義します。たとえば、次の HTTP
POST
リクエストを使用して、JSON 構成ファイルで指定されたバージョンをMY_PROJECT_ID
アプリケーションのdefault
サービスにデプロイできます。POST https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/services/default/versions app.json
cURL コマンドの例:
curl -X POST -T "app.json" -H "Content-Type: application/json" -H "Authorization: Bearer [MY_ACCESS_TOKEN]" https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/services/default/versions
ここで
[MY_ACCESS_TOKEN]
は、HTTP リクエストを承認するために取得したアクセス トークンです。[MY_PROJECT_ID]
は、バージョンをデプロイするプロジェクトの ID です。
レスポンスの例:
{ "metadata": { "@type": "type.googleapis.com/google.appengine.v1.OperationMetadataV1", "insertTime": "2015-05-29T17:12:44.679Z", "method": "google.appengine.v1.Versions.CreateVersion", "target": "apps/[MY_PROJECT_ID]/services/default/versions/v1", "user": "me@example.com" } "name": "apps/[MY_PROJECT_ID]/operations/89729825-ef1f-4ffa-b3e3-e2c25eb66a85" }
バージョンが App Engine アプリケーションにデプロイされたことを確認します。
実際のデプロイ オペレーションのステータスを表示します。
前のステップで使用した HTTP
POST
リクエストに対するレスポンスのname
フィールドにはオペレーション名が含まれています。このオペレーション名をapps.operations
コレクションのGET
メソッドで使用して、デプロイ オペレーションのステータスを確認します。たとえば、レスポンスの
name
フィールドが次のとおりであるとします。"name": "apps/[MY_PROJECT_ID]/operations/89729825-ef1f-4ffa-b3e3-e2c25eb66a85"
この場合、次の HTTP
GET
リクエストを送信します。GET https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/operations/89729825-ef1f-4ffa-b3e3-e2c25eb66a85
cURL コマンドの例:
curl -H "Authorization: Bearer [MY_ACCESS_TOKEN]" https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/operations/89729825-ef1f-4ffa-b3e3-e2c25eb66a85
ここで、
[MY_ACCESS_TOKEN]
はアクセス トークンです。[MY_PROJECT_ID]
はバージョンをデプロイしたプロジェクトの ID です。レスポンスの例:
{ "done": true, "metadata": { "@type": "type.googleapis.com/google.appengine.v1.OperationMetadataV1", "endTime": "2015-05-29T17:13:20.424Z", "insertTime": "2015-05-29T17:12:44.679Z", "method": "google.appengine.v1.Versions.CreateVersion", "target": "apps/[MY_PROJECT_ID]/services/default/versions/v1", "user": "me@example.com" }, "name": "apps/[MY_PROJECT_ID]/operations/89729825-ef1f-4ffa-b3e3-e2c25eb66a85", "response": { "@type": "type.googleapis.com/google.appengine.v1.Version", "creationTime": "2015-05-29T17:12:46.000Z", "deployer": "me@example.com", "id": "v1", "name": "apps/[MY_PROJECT_ID]/services/default/versions/v1", "runtime": "python27", "servingStatus": "SERVING", "threadsafe": true, } }
実行時間が長いオペレーションのポーリングの詳細については、google.longrunning の RPC リファレンスをご覧ください。
バージョンが App Engine アプリケーションに作成されたことを確認します。
バージョンの詳細を表示するには、
apps.services.versions
コレクションのGET
メソッドを使用します。HTTPGET
リクエストでデプロイしたバージョンを指定する必要があります。次に例を示します。GET https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/services/default/versions/v1
cURL コマンドの例:
curl -H "Authorization: Bearer [MY_ACCESS_TOKEN]" https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/services/default/versions/v1
ここで、
[MY_ACCESS_TOKEN]
はアクセス トークンです。[MY_PROJECT_ID]
はバージョンをデプロイしたプロジェクトの ID です。レスポンスの例:
{ "creationTime": "2015-05-29T17:12:46.000Z", "deployer": "me@example.com", "deployment": { "files": { "my-python-app.py": { "sha1Sum": "7cffbdaa9fcfa46e5e58269bfe336dd815de0566", "sourceUrl": "https://storage.googleapis.com/[YOUR_BUCKET_ID]/my-application/logo.jpg", }, "logo.jpg": { "sha1Sum": "13f7ea1e24f7cd2de5c66660525f2b509da37c14", "sourceUrl": "https://storage.googleapis.com/[YOUR_BUCKET_ID]/my-application/my-python-app.py" } } }, "handlers": [ { "authFailAction": "AUTH_FAIL_ACTION_REDIRECT", "login": "LOGIN_OPTIONAL", "script": { "scriptPath": "my-python-app.application", }, "securityLevel": "SECURE_OPTIONAL", "urlRegex": "/.*" } ] "id": "v1", "name": "apps/[MY_PROJECT_ID]/services/default/versions/v1", "runtime": "python27", "servingStatus": "SERVING", "threadsafe": true, }
GET https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/services/default/versions/v1?view=FULL
省略可: ブラウザを起動して
https://VERSION_ID-dot-default-dot-PROJECT_ID.REGION_ID.r.appspot.com
でアプリを表示するには、次のコマンドを実行します。gcloud app browse -v [MY_VERSION_ID]
デプロイしたバージョンで受信するトラフィック量を構成します。
デフォルトでは、App Engine アプリケーションにデプロイする最初のバージョンがトラフィックの 100% を受信するように自動的に構成されます。ただし、同じ App Engine アプリケーションにデプロイするそれ以降のバージョンはすべて手動で構成する必要があります。構成しなかった場合、それらのバージョンはトラフィックを受信しません。
バージョンのトラフィックを構成する方法の詳細については、トラフィックの移行と分割をご覧ください。
追加のバージョンとサービスをデプロイする
追加サービスの作成を含め、アプリの後続バージョンをデプロイする手順は、このタスクで説明しているデプロイ手順とほぼ同じです。App Engine アプリケーションで実行されている現在のバージョンを置き換えたい場合や、サービスを追加したい場合は、構成ファイルをわずかに変更した後で新しいバージョンをデプロイします。
App Engine アプリケーションに追加のバージョンをデプロイする方法については、次の例を参照してください。バージョンをデプロイした後、トラフィックを構成する必要があることを忘れないでください。
例: 追加のバージョンをデプロイする
古いバージョンや問題のあるバージョンが App Engine で実行されている場合、それらのバージョンを置き換えるには、別のバージョンを App Engine アプリケーションにデプロイしてから、そのバージョンにトラフィックをルーティングします。たとえば、アプリのソースコードを変更してから、app.yaml
ファイルの version
の値を変更し、新しい app.json
ファイルを作成してアプリの v2
バージョンを別の HTTP POST
リクエストを使用してデプロイできます。
更新された app.yaml
ファイルの例:
service: default
version: v2
runtime: python27
threadsafe: true
handlers:
- url: /.*
script: my-python-app.application
バージョン v2
用の HTTP POST
リクエストの例:
POST https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/services/default/versions app.json
バージョンが正常にデプロイされたことを確認する手順を実行した後、HTTP PATCH
リクエストを送信して、すべてのトラフィックを新しいバージョンに転送できます。次に例を示します。
PATCH https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/services/default/?updateMask=split {"split": { "allocations": { "v2": "1" } } }
トラフィックのルーティングの詳細については、トラフィックの移行と分割をご覧ください。
例: 複数のサービスをデプロイする
v1
バージョンを App Engine アプリケーションで実行している場合に、backend
などの追加のサービスをデプロイする場合も、同じデプロイ手順を行います。
たとえば、backend
サービスを作成する v1
バージョンをデプロイするには、次のようにします。
backend
サービスの新しいコードとソースファイルを作成します。backend
サービスのアプリケーション リソースを Cloud Storage バケットにステージングします。backend/app.json
構成ファイルを作成します。HTTP リクエストを使用して、
backend
サービスのv1
バージョンを App Engine アプリケーションにデプロイします。HTTP
POST
リクエストの例:POST https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/services/backend/versions backend/app.json
backend
サービスのv1
バージョンが作成されたことを確認する HTTPGET
リクエストの例:GET https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/services
レスポンスの例:
{ "services": [ { "name": "apps/[MY_PROJECT_ID]/services/default", "id": "default", "split": { "allocations": { "v2": 1 } } }, { "name": "apps/[MY_PROJECT_ID]/services/backend", "id": "backend", "split": { "allocations": { "v1": 1 } } } ] }