使用 Apigee Spaces 管理 API 資源

本頁適用於 ApigeeApigee Hybrid

查看 Apigee Edge 說明文件。

本主題說明如何在工作區中建立及管理 API 資源。您可以在聊天室中建立 API Proxy、共用流程和 API 產品。在聊天室中建立的資源會繼承聊天室的權限。

在聊天室中建立資源的做法與在 Apigee 機構下建立資源相同,唯一的差異是您可以在建立資源時選取聊天室。您可以使用 Apigee API 透過指令列建立 API 資源,也可以使用 Apigee 在 Cloud 控制台。

本指南將概述下列步驟:

如要瞭解 Apigee Spaces,請參閱「Apigee Spaces」。

如要進一步瞭解 Apigee API 資源類型,請參閱:

事前準備

開始在 Apigee Spaces 中建立 API 資源前,請務必完成下列工作:

必要角色和權限

隨著 Apigee Spaces 的推出,IAM 檢查對 API 資源執行某些作業所需權限的方式已有所變更。如果 API 資源位於聊天室中,IAM 會檢查聊天室成員執行該項作業時,是否具備適當的聊天室層級權限。如需更多資訊,請參閱「 Apigee Spaces 的角色和權限」和「 Apigee Spaces 的 IAM 權限階層」。

為聊天室成員指派角色和權限

聊天室成員可使用的自訂角色有三種:

  • apigee.spaceContentEditor:可完整存取能與空間建立關聯的資源。這個角色應在空間層級授予。
  • apigee.spaceContentViewer:可讀取能與空間建立關聯的資源。這個角色應在空間層級授予。
  • apigee.spaceConsoleUser:提供使用 Google Cloud 控制台管理空間資源所需的最低權限。這個角色應在 Google Cloud 專案層級授予給有權存取該空間資源的使用者。

本節所述的自訂角色不會授予聊天室成員部署或取消部署 API Proxy 或共用流程的權限。如果您想允許聊天室成員管理部署作業,請在 Apigee 環境或 Google Cloud 專案層級設定 IAM 政策,將 apigee.environment.admin 角色授予聊天室成員。

你可以使用下列任一方法,為聊天室成員指派一個或多個角色:

  • 使用 APIapigee.spaceContentEditor 角色新增至工作區,並使用 APIapigee.environmentAdmin 角色新增至目標環境。
  • 使用 IAM 使用者介面將角色新增至專案。

如要檢查 Google Cloud 專案層級的角色,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「IAM」頁面。

    前往「身分與存取權管理」頁面
  2. 選取專案。
  3. 在「Principal」欄中,找出所有標示您或您所屬群組的資料列。如要瞭解您加入了哪些群組,請與管理員聯絡。

  4. 針對所有指定或包含您的資料列,檢查「角色」欄,確認角色清單是否包含必要的角色。

如何授予角色

  1. 前往 Google Cloud 控制台的「IAM」頁面。

    前往「IAM」頁面
  2. 選取專案。
  3. 按一下 「授予存取權」
  4. 在「New principals」(新增主體) 欄位中輸入使用者 ID。 通常是 Google 帳戶的電子郵件地址。

  5. 在「請選擇角色」清單中,選取角色。
  6. 如要授予其他角色,請按一下 「Add another role」(新增其他角色),然後新增其他角色。
  7. 按一下「儲存」

如要查看在聊天室層級套用的 IAM 政策,請參閱「 管理聊天室中的成員和角色」。

管理聊天室中的 API Proxy

指派給聊天室的 Apigee 機構成員可以建立 API Proxy 做為聊天室資源。僅指派至其他工作區的成員將無法存取或管理這些 Proxy。

如要將 API 代理程式設為 Space 資源,請使用 Cloud 控制台中的 Apigee 或 API,如以下各節所述。

Cloud 控制台中的 Apigee

如要使用 Cloud 控制台中的 Apigee 建立 API Proxy 做為 Space 資源,請按照下列步驟操作:

  1. 請按照「建立 API Proxy」一文中的步驟操作。
  2. 步驟 5中,您會在「Proxy details」下方看到額外的欄位,可為 API Proxy 選取「Space」。從清單方塊中選取一個聊天室。如果不想將 API 代理程式指派給聊天室,可以略過這個欄位。
  3. 按一下「Next」即可繼續執行 Proxy 建立作業的選用部署步驟,或按一下「Create」即可建立 Proxy 而無須部署。

Apigee API

如要使用 Apigee API 建立 API Proxy 做為 Space 資源,請使用下列指令:

curl "https://apigee.googleapis.com/v1/organizations/ORG_NAME/apis?name=PROXY_NAME&space=SPACE_NAME&action=import" \
    -X POST -H "Authorization: Bearer $TOKEN" \
    -H "Content-type: multipart/form-data" \
    -F "file=@PROXY_BUNDLE"

其中:

  • ORG_NAME 是 Apigee 機構的名稱。
  • PROXY_NAME 是您要建立的 API Proxy 名稱。名稱必須在全域範圍內不重複,而非僅在聊天室中不重複。
  • SPACE_NAME 是您要建立 API Proxy 的聊天室名稱。
  • PROXY_BUNDLE 是 API Proxy 套件檔案的名稱。

舉例來說,red 團隊成員可使用以下指令,將名為 proxy-1 的 API Proxy 設為 red 團隊資源,並儲存在 acme 組織中,使用 proxy-bundle.zip 檔案:

curl "https://apigee.googleapis.com/v1/organizations/acme/apis?name=proxy-1&space=red&action=import" \
    -X POST -H "Authorization: Bearer $TOKEN" \
    -H "Content-type: multipart/form-data \
    -F "file=@proxy-bundle.zip"

以下範例顯示指令的回應:

{
  "basepaths": ["/proxy-1"],
  "revision": 1,
  "apiProxyId": "proxy-1",
  "resourceName": "organizations/acme/apis/proxy-1/revisions/1",
  "space": "red",
  "createTime": ...,
  "updateTime": ...
}

以聊天室資源管理共用流程

指派至聊天室的成員也可以建立共用流程,做為聊天室資源。其他工作區的成員將無法存取或管理這些共用流程。

請使用 Cloud 控制台中的 Apigee 或 API,建立共用流程做為 Space 資源,詳情請參閱下文。

Cloud 控制台中的 Apigee

如要使用 Cloud 控制台中的 Apigee 建立共用流程做為空間資源,請按照下列步驟操作:
  1. 請按照「在 Apigee UI 中建立共用流程」一文中列出的步驟,從頭建立新的共用流程,或上傳現有的流程套件。
  2. 步驟 4 中,您會在「建立共用流程」對話方塊中看到額外的欄位,可為 API Proxy 選取聊天室。從清單方塊中選取一個聊天室。如果不想將 API 代理程式指派給聊天室,可以略過這個欄位。
  3. 按一下「建立」,建立共用流程。

Apigee API

如要使用 Apigee API 將共用資料流設為聊天室資源,請使用下列指令:

curl "https://apigee.googleapis.com/v1/organizations/ORG_NAME/sharedflows?name=FLOW_NAME&space=SPACE_NAME&action=import" \
    -X POST -H "Authorization: Bearer $TOKEN" \
    -H "Content-type: multipart/form-data" \
    -F "file=@SHARED_FLOW_BUNDLE"

其中:

  • ORG_NAME 是 Apigee 機構的名稱。
  • FLOW_NAME 是您要建立的共用動態資訊卡名稱。名稱必須在全域範圍內不重複,而非僅在聊天室中不重複。
  • SPACE_NAME 是建立共用流程的空間名稱。
  • SHARED_FLOW_BUNDLE 是共用流程套件檔案的名稱。

舉例來說,red 團隊成員可以使用下列指令,建立名為 flow-1 的共用流程,並與 acme 機構中的 red 工作區相關聯:

curl "https://apigee.googleapis.com/v1/organizations/acme/sharedflows?name=flow-1&space=red&action=import" \
    -X POST -H "Authorization: Bearer $TOKEN" \
    -H "Content-type: multipart/form-data" \
    -F "file=@sharedflow-bundle.zip"

以下範例顯示指令的回應:

{
  "name": "organizations/acme/sharedflows/flow-1",
  "revision": 1,
  "sharedFlowId": "flow-1",
  "space": "red",
  "createTime": ...,
  "updateTime": ...
}

將 API 產品視為聊天室資源進行管理

指派至聊天室的成員可以建立 API 產品,將 API Proxy 整合在一起。建立 API 產品時,聊天室成員可以選取任何可存取的 API 代理程式,包括直接在機構下方建立的代理程式,以及在他們擁有成員資格的聊天室中,做為資源建立的 API 代理程式。其他聊天室的成員將無法存取或管理這些 API 產品。

如要將 API 產品做為 Space 資源,請使用 Cloud 控制台中的 Apigee 或 API 建立,詳情請參閱下列各節。

Cloud 控制台中的 Apigee

如要使用 Cloud 控制台中的 Apigee 建立 API 產品做為 Space 資源,請按照下列步驟操作:

  1. 請按照「建立 API 產品」中的步驟操作。
  2. 步驟 4中,您會在「產品詳細資料」頁面中看到額外的欄位,可為 API 產品選取空間。從清單方塊中選取一個聊天室。如果不想將 API 產品指派至聊天室,可以略過這個欄位。
  3. 填寫其餘設定資訊,然後按一下「儲存」

Apigee API

如要使用 API 將 API 產品建立為 Space 資源,請傳送要求至 apiproducts/create 端點,並新增 space 屬性。

舉例來說,下列指令會在 acme 組織中建立名為 product-1 的 API 產品,並與「紅色」工作區建立關聯:

curl -X POST "https://apigee.googleapis.com/v1/organizations/acme/apiproducts" \
    -H "Authorization: Bearer $TOKEN" \
    -H "Content-type: application/json" -d \
      `{
        "name": "product-1",
        "displayName": "product-1",
        "approvalType": "auto",
        "attributes": [
          {
            "name": "access",
            "value": "internal"
          }
        ],
        "environments": [
          "test"
        ],
        "operationGroup": {
          "operationConfigs": [
            {
              "apiSource": "proxy-1",
              "operations": [
                {
                  "resource": "/",
                  "methods": [
                    "GET"
                  ]
                }
              ]
            }
          ],
          "operationConfigType": "proxy"
        },
        "space": "red"
      }'

以下範例顯示指令的回應:

{
  "name": "product-1",
  "displayName": "product-1",
  "approvalType": "auto",
    "attributes": [
      {
        "name": "access",
        "value": "internal"
      }
    ],
    "environments": [
    "test"
  ],
  "createdAt": "1741977778448",
  "lastModifiedAt": "1741977778448",
  "operationGroup": {
    "operationConfigs": [
      {
        "apiSource": "proxy-1",
        "operations": [
          {
            "resource": "/",
            "methods": [
              "GET"
            ]
          }
        ]
      }
    ],
    "operationConfigType": "proxy"
  },
  "space": "red"
}

列出與空間相關聯的所有 API 資源

對於所有清單作業 (包括 ListApiProxiesListSharedFlowsListApiProducts),您可以指定聊天室名稱,列出與該聊天室相關聯的所有資源。如果您未指定聊天室名稱,清單作業會傳回您有權存取的機構內所有資源,無論這些資源是否與聊天室相關聯皆可。

請注意,使用 Apigee Spaces 功能時,指派給空間的 API 資源 list 作業結果,僅限於主要對象可存取的空間結果。舉例來說,如果 acme-team@acme.com 獲得 red 空間的 apigee.spaceContentEditor 角色,使用 list 作業的團隊 acme-team 成員就只會看到與 red 空間相關聯的 API 代理程式,而不會看到組織中的所有 API #proxy。

如要執行這項工作,您必須具備 apigee.apiResources.list 權限。此權限包含在 Apigee > Apigee Organization Admin 角色中。

列出與特定工作區相關聯的 API 資源

在 Cloud 控制台的 Apigee 中列出與特定工作區相關聯的所有 API 資源,或使用 API 列出這些資源,詳情請參閱下文。

Cloud 控制台中的 Apigee

如要列出與 Cloud 控制台 Apigee 中特定工作區相關聯的所有 API 資源,請開啟相關資源類型 (API Proxy、共用流程或 API 產品) 的總覽頁面。在「Filter」方塊中,從清單中選取「Space」選項,然後輸入聊天室名稱。系統會顯示指派給該聊天室的資源清單。請注意,系統只會顯示與使用者所屬聊天室相關聯的資源。

Apigee API

如要列出與指定工作區相關聯的所有 API 資源,請使用下列指令:

curl -H "Authorization: Bearer $TOKEN" "https://apigee.googleapis.com/v1/organizations/ORG_NAME/RESOURCE_TYPE?space=SPACE_NAME"

其中:

  • ORG_NAME 是 Apigee 機構的名稱。
  • RESOURCE_TYPE 是您要列出的資源類型。有效值包括:
    • apis
    • sharedFlows
    • apiProducts
  • SPACE_NAME 是您要列出資源的聊天室名稱。

舉例來說,red 團隊成員可使用下列指令,列出與 acme 組織中的 red 工作區相關聯的所有 API 代理程式:

curl -H  "Authorization: Bearer $TOKEN" "https://apigee.googleapis.com/v1/organizations/acme/apis?space=red"

以下範例顯示指令的回應:

{
  "proxies": [
    {
      "basepaths": "/proxy-1",
      "revision": "1",
      "apiProxyId": "proxy-1",
      "resourceName": "organizations/acme/apis/proxy-1/revisions/1",
      "space": "red",
      "createTime": ...,
      ....
    }
  ]
}

不指定 Space 就列出 API 資源

在 Cloud 控制台的 Apigee 中列出所有 API 資源,但不指定空間,或使用 API,如以下各節所述。

Cloud 控制台中的 Apigee

如要查看 Cloud 控制台中 Apigee 中特定類型的所有 API 資源清單 (不論是否已與工作區建立關聯),請開啟相關資源類型 (API 代理程式、共用流程或 API 產品) 的總覽頁面。系統會顯示所有可用資源的清單。請注意,系統只會顯示使用者有權查看的資源。這包括與使用者所屬聊天室或聊天室相關聯的資源,或是與聊天室無關的資源。

Apigee API

您也可以使用下列指令,不指定工作區就能列出 API 資源:

curl -H "Authorization: Bearer $TOKEN" "https://apigee.googleapis.com/v1/organizations/ORG_NAME/RESOURCE_TYPE"

其中:

  • ORG_NAME 是 Apigee 機構的名稱。
  • RESOURCE_TYPE 是您要列出的資源類型。有效值包括:
    • apis
    • sharedFlows
    • apiProducts

舉例來說,如果使用者擁有 Organization Admin 存取權,可以使用下列指令列出 acme 機構中的所有 API Proxy:

curl -H  "Authorization: Bearer $TOKEN" "https://apigee.googleapis.com/v1/organizations/acme/apis"

如果 acme 機構有三個 Proxy,這個指令會傳回所有三個 Proxy 的詳細資料。例如:

{
  "proxies": [
    {
      "basepaths": "/proxy-1",
      "revision": "1",
      "apiProxyId": "proxy-1",
      "resourceName": "organizations/acme/apis/proxy-1/revisions/1",
      "space": "red",
      "createTime": ...,
      ....
    },
    {
      "basepaths": "/proxy-2",
      "revision": "1",
      "apiProxyId": "proxy-2",
      "resourceName": "organizations/acme/apis/proxy-2/revisions/1",
      "space": "blue",
      "createTime": ...,
      ....
    },
    {
      "basepaths": "/proxy-3",
      "revision": "1",
      "apiProxyId": "proxy-3",
      "resourceName": "organizations/acme/apis/proxy-3/revisions/1",
      "space": "green",
      "createTime": ...,
      ....
    }
  ]
}

如果其他使用者只具備 apiAdminred 空間資源的存取權,並使用相同指令,則該指令只會傳回 proxy-1 的詳細資料。回應如下所示:

{
  "proxies": [
    {
      "basepaths": "/proxy-1",
      "revision": "1",
      "apiProxyId": "proxy-1",
      "resourceName": "organizations/acme/apis/proxy-1/revisions/1",
      "space": "red",
      "createTime": ...,
      ....
    }
  ]
}

後續步驟