移除 API 管理

如果您在 Google Cloud上為應用程式啟用了 API 管理功能,但隨後決定不需要使用這類管理功能,則可以設定 Cloud Endpoints Frameworks 停止管理您的 API。

停用 API 管理功能不會導致系統停止提供您的 API。如要停止提供 API,您可以在 Google Cloud 控制台的「App Engine」的「Settings」(設定) 頁面停用應用程式,也可以刪除 Google Cloud 專案。詳情請參閱「停用應用程式和關閉專案」。

如何停用 API 管理功能:

  1. 備份 API 專案的 web.xmlappengine-web.xml 檔案。

  2. 在 API 專案的 web.xml 檔案中,移除下列項目:

    • endpoints-api-configuration 篩選器。
    • endpoints-api-controller 篩選器。
    • endpoints-api-configuration 篩選器對應。
    • endpoints-api-controller 篩選器對應。

    刪除篩選器和篩選器對應後,web.xml 應會類似於以下內容:

    <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
             http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
             version="3.1">
        <!-- Wrap the backend with Endpoints Frameworks v2. -->
        <servlet>
            <servlet-name>EndpointsServlet</servlet-name>
            <servlet-class>com.google.api.server.spi.EndpointsServlet</servlet-class>
            <init-param>
                <param-name>services</param-name>
                <param-value>com.example.skeleton.MyApi</param-value>
            </init-param>
        </servlet>
        <!-- Route API method requests to the backend. -->
        <servlet-mapping>
            <servlet-name>EndpointsServlet</servlet-name>
            <url-pattern>/_ah/api/*</url-pattern>
        </servlet-mapping>
    </web-app>
  3. appengine-web.xml 檔案中,移除定義 ENDPOINTS_SERVICE_NAME 環境變數的那一行。如果 ENDPOINTS_SERVICE_NAME 是您已定義的唯一環境變數,請移除整個 env-variables 區段。

  4. 清理專案,然後建構您的 API:

    Maven

        mvn clean
        mvn package

    Gradle

        gradle clean
        gradle build
  5. 重新部署應用程式:

    Maven

    mvn appengine:deploy

    Gradle

    gradle appengineDeploy

重新部署應用程式後,Cloud Endpoints Frameworks 就會停止管理您的 API。

確認停用 API 管理功能

如要確認 Endpoints Frameworks 是否已不再管理您的 API:

  1. 在 Google Cloud 控制台中,依序前往「Endpoints」 >「Services」頁面。

    前往 Endpoints 服務頁面

  2. 記下傳送到 API 中某個方法的要求數量。

  3. 按一下該方法的 View logs 連結。

  4. Produced API 記錄檔中,寫下最新記錄項目的日期和時間。

  5. 傳送一些要求至 API 中的方法。

  6. 在 Google Cloud 控制台中,依序前往「Endpoints」 >「Services」頁面。

    前往 Endpoints 服務頁面

    系統不會更新該方法的要求計數器。

  7. 按一下該方法的 View logs 連結。

    Produced API 記錄檔並未包含您傳送的要求記錄項目。

移除版本設定中的依附元件

您可以移除版本設定中的依附元件,不過這並非必要步驟。

如要移除版本設定中的依附元件:

  1. 備份您的 pom.xml 檔案或 build.gradle 檔案。

  2. 移除以下依附元件:

    • endpoints-management-control-appengine
    • endpoints-management-control-appengine-all
    • endpoints-framework-auth
  3. 清理專案,然後建構您的 API:

    Maven

        mvn clean
        mvn package

    Gradle

        gradle clean
        gradle build
  4. 重新部署應用程式:

    Maven

    mvn appengine:deploy

    Gradle

    gradle appengineDeploy

  5. 測試 API,確認 API 能正常運作。

刪除代管服務

Endpoints Frameworks 使用 Google 的 Service Management 來管理您的 API。使用 gcloud endpoints services deploy 指令部署 OpenAPI 文件時,此指令會使用 Service Management 來建立適用您 API 的代管服務。如果您不需要「Endpoints」>「Services」頁面和「Logs Viewer」頁面中「Produced API」記錄檔的資料,則可刪除 API 的代管服務,進而從 Google Cloud 主控台移除資料。

如要刪除代管服務:

  1. 確認 gcloud CLI (gcloud) 已獲授權,可在 Google Cloud上存取您的資料與服務:

    gcloud auth login
    
  2. 輸入以下指令,以顯示 Google Cloud專案的專案 ID:

    gcloud projects list
    
  3. 使用在上一個步驟中顯示的專案 ID,將預設Google Cloud 專案設為您的應用程式所屬專案:

    gcloud config set project [YOUR_PROJECT_ID]
    
  4. 取得 Google Cloud 專案中所有代管服務的名稱:

    gcloud endpoints services list
    
  5. 從 Service Management 中刪除該服務。將 SERVICE_NAME 替換為您要移除的服務名稱。

    gcloud endpoints services delete SERVICE_NAME
    

    執行 gcloud endpoints services delete 並不會立即刪除代管服務。Service Management 會先將該代管服務停用 30 天,在這段期間內您可以視需要將其還原。30 天後,Service Management 就會永久刪除該代管服務。

後續步驟