この例では、ソースコードがすでにステージングされているバージョンをデプロイします。
最初に、次の内容で “helloworld.json” というファイルを作ります。
{
"deployment": {
"files": {
"main.py": {
"sourceUrl": "https://storage.googleapis.com/admin-api-public-samples/hello_world/main.py"
},
}
},
"handlers": [
{
"script": {
"scriptPath": "main.app"
},
"urlRegex": "/.*"
}
],
"runtime": "python27",
"threadsafe": true,
"id": "appengine-helloworld",
"inboundServices": [
"INBOUND_SERVICE_WARMUP"
]
}
次に、Admin API に HTTP POST 要求を送って新バージョンを作ります。
POST
https://appengine.googleapis.com/v1/apps/my-application/services/def
ault/versions helloworld.json
(実際にこの要求を送るためには、認証トークンをセットアップする必要があります。詳細は
Getting Started ガイドを参照してください)
応答には長時間実行されるオペレーションの ID が含まれているので、それを使ってポーリングすれば、デプロイがいつ終わったかがわかります。
バージョン間でトラフィックを分割するには、少なくとも別のバージョンが 1 つ必要です。別バージョンは、バージョン ID を変更した同じアプリケーションをデプロイすることで作成できます。
たとえば、次の JSON マニフェストを使い、上と同じ手順に従って “appengine-goodbyeworld” バージョンをデプロイしてください。
{
"deployment": {
"files": {
"main.py": {
"sourceUrl": "https://storage.googleapis.com/admin-api-public-samples/goodbye_world/main.py"
},
}
},
"handlers": [
{
"script": {
"scriptPath": "main.app"
},
"urlRegex": "/.*"
}
],
"runtime": "python27",
"threadsafe": true,
"id": "appengine-goodbyeworld",
"inboundServices": [
"INBOUND_SERVICE_WARMUP"
]
}
バージョンのデプロイに成功したら、次の要求でトラフィックの 50 % をこのバージョンにルーティングします。
PATCH
https://appengine.googleapis.com/v1/apps/my-application/services/def
ault/?updateMask=split { "split": { "shardBy": "IP", "allocations {
"appengine-helloworld": 0.5, "appengine-goodbyeworld": 0.5 } } }
それでは http://<your-project-id>.appspot.com にアクセスしてアプリケーションを見てみましょう。ページをリロードすると、要求がどちらのバージョンのアプリケーションにルーティングされたかによって表示内容が変わります。
バージョン間でトラフィックを移行するもう 1 つの方法は、App Engine の
Traffic Migration 機能を使用することです。そうすれば、新インスタンスに十分なウォームアップのための時間を与えながら、次第にトラフィックを移して、できるだけ早く新バージョンに全面的に移行できます。
PATCH
https://appengine.googleapis.com/v1/apps/my-application/services/def
ault/?updateMask=split&migrateTraffic=true {"split": { "shardBy": "IP", "allocations": {
<"appengine-goodbyeworld": 1 } } }
その他の情報
App Engine Admin API ドキュメントには、API の認証獲得、特定のプログラミング言語から API を呼び出すための
クライアント ライブラリなど、Admin API の使い方が完全な形で掲載されています。
Admin API により、ご使用のツールで App Engine アプリケーションを管理できるようにして、日常のワークフローを単純化していただければと思います。
- Posted by Karolina Netolicka, Product Manager
0 件のコメント :
コメントを投稿