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

リージョン ID

REGION_ID は、アプリの作成時に選択したリージョンに基づいて Google が割り当てる省略形のコードです。一部のリージョン ID は、一般的に使用されている国や州のコードと類似しているように見える場合がありますが、このコードは国または州に対応するものではありません。2020 年 2 月以降に作成されたアプリの場合、REGION_ID.r は App Engine の URL に含まれています。この日付より前に作成されたアプリの場合、URL のリージョン ID は省略可能です。

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

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

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

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

始める前に

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

  • Google Cloud プロジェクトを作成する、または既存の Google Cloud プロジェクトが存在する。
  • ターゲット Google Cloud プロジェクトのオーナーである。
  • Admin API にアクセスできる。

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

Google Cloud プロジェクトを作成するには、次の手順を行います。

API

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

コンソール

Google Cloud コンソールを使用して Google Cloud プロジェクトを作成するには:

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

gcloud

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

gcloud projects create

プロジェクトでサポートされる App Engine アプリケーションは 1 つのみであるため、既存の Google Cloud プロジェクトを使用する場合は、プロジェクトにすでに Application リソースが含まれていないことを確認する必要があります。Google 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 リソースとターゲット Google Cloud プロジェクトを定義します。次に例を示します。

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

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

    • id: App Engine アプリケーションを作成するターゲット Google 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 は、一般的に使用されている国や州のコードと類似しているように見える場合がありますが、このコードは国または州に対応するものではありません。2020 年 2 月以降に作成されたアプリの場合、REGION_ID.r が App Engine の URL に含まれています。この日付より前に作成されたアプリの場合、URL のリージョン ID は省略可能です。

次のステップ