在新的 Google Cloud Platform 專案中使用 Google App Engine Admin API,透過程式建構 App Engine 應用程式。只要搭配使用 Admin API 和 Cloud Resource Manager API,即可透過程式管理 GCP 專案和 App Engine 應用程式。
在您建構 App Engine 應用程式時,系統會為指定位置中的目標 GCP 專案建立 Application
資源。
如要在 GCP 專案中手動建構 App Engine 應用程式,請參閱標準環境或彈性環境中相應程式語言的「管理專案、應用程式和帳單」主題。
事前準備
您必須符合下列必要條件,才能使用 Admin API 建構 App Engine 應用程式:
- 您必須建立一個 GCP 專案,或使用現有的專案。
- 您必須是目標 GCP 專案的擁有者。
- 您必須能夠存取 Admin API。
GCP 專案擁有者必須先建立 Application
資源,其他使用者帳戶才能對該 App Engine 應用程式執行工作。舉例來說,您必須建構 App Engine 應用程式,具備 App Engine 部署者角色的使用者帳戶才能使用服務帳戶來部署應用程式。
如要建立 GCP 專案,請按照下列指示操作:
API
如要透過程式建立 GCP 專案,您可以使用 Cloud Resource Manager API。詳情請參閱建立新專案的相關說明。 查看簡短範例。
主控台
使用 GCP 主控台建立 GCP 專案的方法如下:
gcloud
安裝 Google Cloud SDK 之後,您可以執行下列 gcloud
工具指令來建立 GCP 專案:
gcloud projects create
使用 Cloud Resource Manager API 建立新的 GCP 專案
透過 Google Cloud Resource Manager 傳送要求之前,您必須在希望取得其他 GCP 專案建立權限的 GCP 專案中啟用這個 API。在 Google Cloud Platform 主控台中啟用 Cloud Resource Manager API
使用存取憑證傳送 HTTP
POST
要求:POST https://cloudresourcemanager.googleapis.com/v1/projects/ { "projectId": "[MY_PROJECT_ID]", "name": "[MY_PROJECT_NAME]" }
cURL 指令範例:
curl -X POST -d "{ 'projectId': '[MY_PROJECT_ID]', 'name': '[MY_PROJECT_NAME]' }" -H "Content-Type: application/json" -H "Authorization: Bearer [MY_ACCESS_TOKEN]" https://cloudresourcemanager.googleapis.com/v1/projects/
詳情請參閱 Cloud Resource Manager 的建立新專案主題。
如果您選擇使用現有 GCP 專案,就必須確保專案尚未含有 Application
資源,因為專案僅支援一個 App Engine 應用程式。如要確認 GCP 專案是否已有 Application
資源,您可以使用 apps.get
方法或執行 gcloud app describe
指令。
建構 App Engine 應用程式
如要使用 Admin API 建構 App Engine 應用程式,請按照下列指示操作:
授權 HTTP 要求,例如取得存取憑證。
視您的 API 應用程式需求而定,您可以透過多項 OAuth 流程授予 Admin API 的存取權限。詳情請參閱存取 API 的相關說明。
使用存取憑證傳送 HTTP
POST
要求,並透過 Admin API 建構 App Engine 應用程式。您可以在 HTTP
POST
要求中定義Application
資源和目標 GCP 專案。範例如下:POST https://appengine.googleapis.com/v1/apps { "id": "[MY_PROJECT_ID]", "locationId": "[MY_APP_LOCATION]" }
必要的 HTTP 要求欄位:
id
:您想在其中建構 App Engine 應用程式的目標 GCP 專案 ID。locationId
:App Engine 應用程式所在地理地區的名稱,如 App Engine 位置一文中所列,例如us-east1
。如需系統支援位置的完整清單,請使用
apps.locations.list
方法。範例:在 APIs Explorer 中授權並執行這項範例要求,以便查看系統目前支援的位置清單。
如需欄位選項的完整清單,請參閱
Application
資源。cURL 指令範例:
curl -X POST -d "{ 'id': '[MY_PROJECT_ID]', 'locationId': '[MY_APP_LOCATION]' }" -H "Content-Type: application/json" -H "Authorization: Bearer [MY_ACCESS_TOKEN]" https://appengine.googleapis.com/v1/apps
其中:
[MY_PROJECT_ID]
是您要建構 App Engine 應用程式的目標專案 ID。[MY_APP_LOCATION]
是您要建構 App Engine 應用程式的位置。[MY_ACCESS_TOKEN]
是您取得並用於授權 HTTP 要求的存取憑證。
回應範例:
{ "name": "apps/[MY_PROJECT_ID]/operations/0a37a032-be3f-4c20-98b4-e3300447450f", "metadata": { "@type": "type.googleapis.com/google.appengine.v1.OperationMetadataV1", "method": "google.appengine.v1.Applications.CreateApplication", "insertTime": "2016-10-03T20:48:02.099Z", "user": "me@example.com", "target": "apps/[MY_PROJECT_ID]" } }
確認您是否已建構 App Engine 應用程式:
查看實際建立作業的狀態:
您在上一個步驟中使用的 HTTP
POST
要求已透過name
欄位傳回作業名稱,您可以在apps.operations
集合的GET
方法中使用這個名稱來查看建立作業狀態。舉例來說,如果回應中的
name
欄位如下所示:"name": "apps/[MY_PROJECT_ID]/operations/0a37a032-be3f-4c20-98b4-e3300447450f"
您傳送的 HTTP
GET
要求就會如下所示:GET https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/operations/0a37a032-be3f-4c20-98b4-e3300447450f
cURL 指令範例:
curl -X GET -H "Authorization: Bearer [MY_ACCESS_TOKEN]" https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/operations/0a37a032-be3f-4c20-98b4-e3300447450f
其中的
[MY_ACCESS_TOKEN]
是存取憑證,[MY_PROJECT_ID]
則為目標專案的 ID。回應範例:
{ "name": "apps/[MY_PROJECT_ID]/operations/0a37a032-be3f-4c20-98b4-e3300447450f", "metadata": { "@type": "type.googleapis.com/google.appengine.v1.OperationMetadataV1", "method": "google.appengine.v1.Applications.CreateApplication", "insertTime": "2016-10-03T20:48:02.099Z", "endTime": "2016-10-03T20:48:18.272Z", "user": "me@example.com", "target": "apps/[MY_PROJECT_ID]" }, "done": true, "response": { "@type": "type.googleapis.com/google.appengine.v1.Application", "id": "[MY_PROJECT_ID]", "locationId": "[MY_APP_LOCATION]" } }
確認您是否已在專案中建構 App Engine 應用程式:
如要查看版本詳細資料,您可以使用
apps
集合中的GET
方法。您必須指定先前在 HTTPGET
要求中部署的專案。範例如下:GET https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]
cURL 指令範例:
curl -X GET -H "Authorization: Bearer [MY_ACCESS_TOKEN]" https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/
其中的
[MY_ACCESS_TOKEN]
是存取憑證,[MY_PROJECT_ID]
則為目標專案的 ID。回應範例:
{ "name": "apps/[MY_PROJECT_ID]", "id": "[MY_PROJECT_ID]", "authDomain": "gmail.com", "locationId": "us-central", "defaultHostname": "[MY_PROJECT_ID].appspot.com", "defaultBucket": "[MY_PROJECT_ID].appspot.com" }