使用 Apigee Spaces 管理 API 資源

本頁內容適用於 ApigeeApigee Hybrid

查看 Apigee Edge 說明文件。

本主題說明如何在 Space 中建立及管理 API 資源。您可以在空間中建立 API Proxy、共用流程和 API 產品。在空間中建立的資源會沿用空間的權限。

在 Space 中建立資源與在 Apigee 機構下建立資源相同,但您可以在建立資源時選取 Space。您可以使用 Apigee API 從指令列建立 API 資源,也可以使用 Apigee in 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 專案層級授予這個角色,讓使用者存取該空間中的資源。

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

您可以透過下列任一方法,將一或多個角色指派給 Space 成員:

  • 使用 API 將 apigee.spaceContentEditor 角色新增至 Space ,並使用 API 將 apigee.environmentAdmin 角色新增至目標環境
  • 使用 IAM 使用者介面將角色新增至專案。

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

  1. 前往 Google Cloud 控制台的「IAM」(身分與存取權管理)IAM 頁面。

    前往「IAM」頁面
  2. 選取專案。
  3. 在「主體」欄中,找出所有識別您或您所屬群組的資料列。如要瞭解自己所屬的群組,請與管理員聯絡。

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

如何授予角色

  1. 前往 Google Cloud 控制台的「IAM」(身分與存取權管理)IAM 頁面。

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

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

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

管理空間中的 API Proxy

指派給 Space 的 Apigee 機構成員可以建立 API Proxy 做為 Space 資源。如果成員只獲派其他工作區,就無法存取或管理這些 Proxy。

使用 Apigee in Cloud 控制台或 API,以 Space 資源的形式建立 API 代理項目,詳情請參閱下列各節。

Cloud 控制台中的 Apigee

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

  1. 請按照「建立 API Proxy」一文中的步驟操作。
  2. 步驟 5 中,您會在「Proxy 詳細資料」下方看到額外欄位,可為 API Proxy 選取「空間」。從清單方塊中選取所需空間。如果不想將 API Proxy 指派給空間,可以略過這個欄位。
  3. 按一下「下一步」,繼續進行 Proxy 建立作業的選用部署步驟,或按一下「建立」,建立 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 的 Space 名稱。
  • PROXY_BUNDLE 是 API Proxy 套件檔案的名稱。

舉例來說,使用下列指令時,red 團隊成員會使用 proxy-bundle.zip 檔案,在 acme 機構中建立名為 proxy-1 的 API Proxy,做為 red Space 資源:

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": ...
}

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

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

如要建立共用流程做為 Space 資源,請使用 Apigee in Cloud 控制台或 API,詳情請參閱下列章節。

Cloud 控制台中的 Apigee

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

Apigee API

如要使用 Apigee API 將共用流程建立為 Space 資源,請使用下列指令:

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 是您要建立共用流程的 Space 名稱。
  • SHARED_FLOW_BUNDLE 是共用流程套件檔案的名稱。

舉例來說,使用下列指令時,red 團隊成員會在 acme 機構中,建立與 red 空間相關聯的共用流程,並將該流程命名為「flow-1」

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 產品視為 Space 資源進行管理

指派給 Space 的成員可以建立 API 產品,將 API Proxy 組合在一起。 建立 API 產品時,聊天室成員可以選取任何可存取的 API Proxy,包括直接在機構下建立的 Proxy,以及在他們所屬聊天室中建立的 Proxy。其他工作區的成員無法存取或管理這些 API 產品。

使用 Apigee in Cloud 控制台或 API,以 Space 資源的形式建立 API 產品,詳情請參閱下列章節。

Cloud 控制台中的 Apigee

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

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

Apigee API

如要使用 API 建立 API 產品做為 Space 資源,請對 apiproducts/create 端點發出要求,並新增 space 屬性。

舉例來說,下列指令會在 acme 機構中建立名為 product-1 的 API 產品,並與 red Space 建立關聯:

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),您可以指定聊天室名稱,列出與該聊天室相關聯的所有資源。如果未指定 Space 名稱,清單作業會傳回您有權存取的機構中所有資源,無論這些資源是否與 Space 相關聯。

請注意,使用 Apigee Spaces 功能時,指派給 Space 的 API 資源 list 作業結果,僅限於主體可存取的 Space 結果。舉例來說,如果為「紅色」空間指派 apigee.spaceContentEditor 角色,團隊成員使用 list 作業時,只會看到與「紅色」空間相關聯的 API 代理,而不會看到機構中的「所有」API 代理。acme-team@acme.comacme-teamlist

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

列出與特定空間相關聯的 API 資源

如要列出與 Apigee in Cloud 控制台中特定空間相關聯的所有 API 資源,請按照下列章節的說明操作。

Cloud 控制台中的 Apigee

如要在 Apigee in Cloud 控制台中列出與特定 Space 相關聯的所有 API 資源,請開啟相關資源類型 (API Proxy、共用流程或 API 產品) 的總覽頁面。在「篩選器」方塊中,從清單選取「空間」選項,然後輸入空間名稱。系統會顯示指派給該空間的資源清單。請注意,系統只會顯示與使用者所屬的 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 是列出資源的 Space 名稱。

舉例來說,red 團隊成員可使用下列指令,列出與 acme 機構中 red 空間相關聯的所有 API Proxy:

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": ...,
      ....
    }
  ]
}

列出 API 資源,但不指定 Space

如要列出所有 API 資源,請勿在 Cloud 控制台的 Apigee 中指定 Space,或使用 API,詳情請參閱下列章節。

Cloud 控制台中的 Apigee

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

Apigee API

您也可以使用下列指令列出 API 資源,而不必指定 Space:

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": ...,
      ....
    }
  ]
}

如果另一個使用者只具有空間 red 中資源的 apiAdmin 存取權,並使用相同指令,則該指令只會傳回 proxy-1 的詳細資料。回應內容如下所示:

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

後續步驟