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

リージョン ID

REGION_ID は、アプリの作成時に選択したリージョンに基づいて Google が割り当てる省略形のコードです。一部のリージョン ID は、一般的に使用されている国や州のコードと類似しているように見える場合がありますが、このコードは国または州に対応するものではありません。既存のアプリでは省略可能ですが、まもなく、新しいアプリのすべてにおいて App Engine の URL に REGION_ID.r を含めることが必須となる予定です。

移行がスムーズに行われるように、リージョン ID を使用するよう App Engine を徐々に更新しています。Google Cloud プロジェクトがまだ更新されていない場合、アプリにリージョン ID は表示されません。ID は既存のアプリでは省略可能なため、リージョン ID が既存のアプリで使用可能になったときに、URL の更新や他の変更を行う必要はありません。

詳しくは、リージョン ID をご覧ください。

Google App Engine Admin API を使用すると、新しい Google Cloud プロジェクトにプログラムで App Engine アプリケーションを作成できます。Admin API と Cloud Resource Manager API の両方を使用すると、プログラムによって Cloud プロジェクトと App Engine アプリケーションを管理できます。

App Engine アプリケーションを作成すると、指定したロケーションに、ターゲット Cloud プロジェクト用の Application リソースが作成されます。

Cloud プロジェクトで App Engine アプリケーションを手動で作成する方法については、ご使用の言語に対応する、スタンダード環境またはフレキシブル環境でのプロジェクト、アプリケーション、課金の管理に関するトピックをご覧ください。

始める前に

Admin API を使用して App Engine アプリケーションを作成するには、次の前提条件を満たす必要があります。

  • Cloud プロジェクトを作成するか、既存の Cloud プロジェクトが必要です。
  • 対象の Cloud プロジェクトのオーナーであることが必要です。
  • Admin API にアクセスできる。

他のユーザー アカウントが App Engine アプリケーションでタスクを実行できるようにするには、Cloud プロジェクトのオーナーがまず Application リソースを作成する必要があります。たとえば、App Engine デプロイ担当者のロールを持つユーザー アカウントがサービス アカウントを使用してアプリをデプロイできるようにするには、まず App Engine アプリケーションを作成する必要があります。

Cloud プロジェクトを作成するには:

API

プログラムで Cloud プロジェクトを作成するには、Cloud Resource Manager API を使用します。詳細については、新しいプロジェクトの作成をご覧ください。簡単な例を参照できます。

Console

Cloud Console を使用して Cloud プロジェクトを作成するには:

プロジェクト ページに移動

gcloud

Google Cloud SDK をインストールした後、gcloud ツールの次のコマンドを実行して Cloud プロジェクトを作成できます。

gcloud projects create

プロジェクトがサポートする App Engine アプリケーションは 1 つのみであるため、既存の Cloud プロジェクトを使用する場合は、プロジェクトに Application リソースが含まれていないことを確認する必要があります。Cloud プロジェクトにすでに Application リソースが含まれているかどうかを確認するには、apps.get メソッドを使用するか、gcloud app describe コマンドを実行します。

App Engine アプリケーションの作成

Admin API を使用して App Engine アプリケーションを作成するには:

  1. アクセス トークンの取得など、HTTP リクエストを承認します。

    Admin API へのアクセスの承認は、API アプリのニーズに応じてさまざまな OAuth フローを使用して行うことができます。詳細については、API へのアクセスをご覧ください。

  2. アクセス トークンと Admin API を使用して HTTP POST リクエストを送信し、App Engine アプリケーションを作成します。

    HTTP POST リクエストで Application リソースとターゲット Cloud プロジェクトを定義します。次に例を示します。

    POST https://appengine.googleapis.com/v1/apps { "id": "[MY_PROJECT_ID]", "locationId": "[MY_APP_LOCATION]" }
    

    必須の HTTP リクエスト フィールド:

    • id: App Engine アプリケーションを作成するターゲット Cloud プロジェクトのプロジェクト 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]"
      }
    }
    
  3. App Engine アプリケーションが作成されたことを確認します。

    1. 実際の作成オペレーションのステータスを表示します。

      前のステップで使用した 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]"
        }
      }
      
    2. プロジェクト内に App Engine アプリケーションが作成されたことを確認します。

      バージョンの詳細を表示するには、apps コレクションGET メソッドを使用します。HTTP GET リクエストにデプロイしたプロジェクトを指定する必要があります。次に例を示します。

      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].[REGION_ID].r.appspot.com",
        "defaultBucket": "[MY_PROJECT_ID].[REGION_ID].r.appspot.com"
      }
      

      REGION_ID は、アプリの作成時に選択したリージョンに基づいて Google が割り当てる省略形のコードです。一部のリージョン ID は、一般的に使用されている国や州のコードと類似しているように見える場合がありますが、このコードは国または州に対応するものではありません。既存のアプリでは省略可能ですが、まもなく、新しいアプリのすべてにおいて App Engine の URL に REGION_ID.r を含めることが必須となる予定です。

      移行がスムーズに行われるように、リージョン ID を使用するよう App Engine を徐々に更新しています。Google Cloud プロジェクトがまだ更新されていない場合、アプリにリージョン ID が表示されません。ID は既存のアプリでは省略可能なため、リージョン ID が既存のアプリで使用可能になったときに、URL の更新や他の変更を行う必要はありません。

次のステップ