API 管理の追加

Cloud Endpoints Frameworks は、Extensible Service Proxy(ESP)が Cloud Endpoints に提供する機能に匹敵する API 管理機能を提供します。Endpoints Frameworks には、API バックエンドにリクエストを転送する前にすべてのリクエストを傍受し、必要なチェック(認証など)を行う組み込みの API ゲートウェイが含まれています。バックエンドが応答すると、Endpoints Frameworks はテレメトリーを収集して報告します。API の指標は、Google Cloud Platform Console の [エンドポイント] > [サービス] ページで確認できます。

Endpoints Frameworks で利用できる API 管理機能には次のものがあります。

API を Endpoints で管理するには、OpenAPI 仕様のバージョン 2.0 を使用して API を記述した OpenAPI ドキュメントをデプロイする必要があります。このページでは、Endpoints による API 管理を可能にする OpenAPI ドキュメントを生成してデプロイする方法について説明します。

API 管理を追加しなくても API でリクエストを処理することはできますが、その場合、API は GCP Console の [エンドポイント] > [サービス] ページに表示されず、Endpoints によって提供される機能(ロギング、モニタリング、割り当ての設定など)を使用できません。

API に API 管理を追加するには:

  1. API プロジェクトの web.xml ファイルで、API 管理サーブレットのフィルタ構成を追加します。

    <!-- Add a filter that fetches the service config from service management. -->
    <filter>
        <filter-name>endpoints-api-configuration</filter-name>
        <filter-class>com.google.api.control.ServiceManagementConfigFilter</filter-class>
    </filter>
    
    <!-- Add a filter that performs Endpoints logging and monitoring. -->
    <filter>
        <filter-name>endpoints-api-controller</filter-name>
        <filter-class>com.google.api.control.extensions.appengine.GoogleAppEngineControlFilter</filter-class>
        <init-param>
            <param-name>endpoints.projectId</param-name>
            <param-value>${endpoints.project.id}</param-value>
        </init-param>
        <init-param>
            <param-name>endpoints.serviceName</param-name>
            <param-value>${endpoints.project.id}.appspot.com</param-value>
        </init-param>
    </filter>
    
    <filter-mapping>
        <filter-name>endpoints-api-configuration</filter-name>
        <servlet-name>EndpointsServlet</servlet-name>
    </filter-mapping>
    
    <filter-mapping>
        <filter-name>endpoints-api-controller</filter-name>
        <servlet-name>EndpointsServlet</servlet-name>
    </filter-mapping>
  2. API プロジェクトのビルド構成を変更します。

    Maven

    1. API 管理の依存関係を追加します。

      <dependency>
        <groupId>com.google.endpoints</groupId>
        <artifactId>endpoints-management-control-appengine-all</artifactId>
        <version>1.0.11</version>
      </dependency>
    2. クライアント ライブラリの生成に使用できるプラグインと OpenAPI ドキュメント openapi.json を追加します。

      <plugin>
        <groupId>com.google.cloud.tools</groupId>
        <artifactId>endpoints-framework-maven-plugin</artifactId>
        <version>1.0.2</version>
        <configuration>
          <!-- plugin configuration -->
          <hostname>${endpoints.project.id}.appspot.com</hostname>
        </configuration>
      </plugin>

    Gradle

    1. API 管理の依存関係を追加します。

      compile 'com.google.endpoints:endpoints-management-control-appengine:1.0.5'
      compile 'com.google.endpoints:endpoints-framework-auth:1.0.5'
    2. プラグインを Maven Central から取得するように外部依存関係を宣言します。

      classpath 'com.google.cloud.tools:endpoints-framework-gradle-plugin:1.0.2'
    3. サーバー側の Endpoints Frameworks Gradle プラグインを使用します。このプラグインは Open API ドキュメントを生成します。

      apply plugin: 'com.google.cloud.tools.endpoints-framework-server'
    4. Endpoints サービスの名前を構成します。

      endpointsServer {
        // Endpoints Framework Plugin server-side configuration
        hostname = "${projectId}.appspot.com"
      }
  3. 依存関係を変更した後、プロジェクトをクリーンアップして API をビルドします。

    Maven

        mvn clean
        mvn package

    Gradle

        gradle clean
        gradle build
  4. OpenAPI ドキュメント openapi.json を生成します。

    Maven

    mvn endpoints-framework:openApiDocs

    Gradle

    gradle endpointsOpenApiDocs
  5. OpenAPI ドキュメントをデプロイします。

     gcloud endpoints services deploy openapi.json
    

    openapi.json を初めてデプロイすると、新しい Endpoints サービスが YOUR_PROJECT_ID.appspot.com という名前で作成されます。正常に完了すると、次のような行にサービス構成 ID とサービス名が表示されます。

    Service Configuration 2017-02-13r0 uploaded for service example-project-12345.appspot.com
    

    前述の例では、2017-02-13r0 がサービス構成 ID です。この ID は、日付スタンプとそれに続くリビジョン番号で構成されます。openapi.json を再度デプロイすると、サービス構成 ID のリビジョン番号が大きくなります。

    サービス構成 ID をもう一度表示する必要がある場合は、次のコマンドを実行します。ただし、YOUR_PROJECT_ID を実際の GCP プロジェクトのプロジェクト ID に置き換えてください。

    gcloud endpoints configs list --service=YOUR_PROJECT_ID.appspot.com
    

    生成されたドキュメントを使用するのではなく、独自の OpenAPI ドキュメントを作成してデプロイできます。その場合は、上記の openapi.json を独自の OpenAPI ドキュメントへのパスに置き換えるだけです。OpenAPI ドキュメントの作成方法の詳細については、OpenAPI の概要をご覧ください。

  6. appengine-web.xml ファイルを編集して、環境変数の値を設定します。

    <env-variables>
        <env-var name="ENDPOINTS_SERVICE_NAME" value="${endpoints.project.id}.appspot.com" />
    </env-variables>

    ${endpoints.project.id} は実際の GCP プロジェクト ID に置き換えてください。次に例を示します。

    <env-var name="ENDPOINTS_SERVICE_NAME" value="example-project-12345.appspot.com" />
    
  7. アプリケーションを再デプロイします。

    Maven

    mvn appengine:deploy

    Gradle

    gradle appengineDeploy

  8. API にリクエストを送信して、API をテストします。

  9. API の指標を表示するには、GCP Console で Endpoints のプロジェクトの [エンドポイント] > [サービス] ページを開きます。

    [エンドポイント サービス] ページに移動

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

App Engine 用 Cloud Endpoints Frameworks
ご不明な点がありましたら、Google のサポートページをご覧ください。