在 Apigee Spaces 中移動 API 資源

本頁內容適用於 ApigeeApigee Hybrid

查看 Apigee Edge 說明文件。

本主題說明如何在 Apigee 機構中,將 API 資源 (API Proxy、共用流程和 API 產品) 從一個 Apigee Space 移至另一個 Space。使用者可以在機構和空間層級之間移動資源,或在空間之間移動資源。如要在機構或 Space 中移動、管理或查看 API 資源,使用者必須擁有相關機構或 Space 的適當權限。

將 API 資源從機構移至 Space

在 Apigee 機構中建立的 API 資源可以從機構層級移至空間,反之亦然。 API 資源移至空間後,會沿用該空間的 IAM 政策。如要將 API 資源從機構層級移至空間,使用者必須具備下列權限:

  • 來源範圍 (資源目前所在的機構或空間) 的 apigee.RESOURCE_TYPE.move 權限。

    RESOURCE_TYPE 的有效值包括 apissharedflowsapiproducts,視移動的 API 資源類型而定。

  • 目標範圍 (資源要移往的機構或空間) 的 apigee.RESOURCE_TYPE.create 權限。

    RESOURCE_TYPE 的有效值包括 apissharedflowsapiproducts,視移動的 API 資源類型而定。

如要將機構層級的 API 資源移至 Space,請使用下列指令:

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

其中:

  • ORG_NAME 是指 Apigee 機構的名稱。
  • RESOURCE_TYPE 是您要列出的資源類型。有效值包括:
    • apis
    • sharedflows
    • apiproducts
  • RESOURCE_ID 是您要移動的 API Proxy、共用流程或 API 產品名稱。
  • SPACE_NAME 是要將資源移往的空間名稱。

舉例來說,如果使用者在 acme 機構中具有 Apigee 機構管理員角色,則可使用下列指令,將名為 demo 的 API Proxy 從機構層級移至 red Space:

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

回覆內容應如下所示:

{
  "metaData": {
    "createdAt": "1739489725993",
    "lastModifiedAt": "1741724822852",
    "subType": "Proxy"
  },
  "name": "demo",
  "revision": [
    "1",
    "2"
  ],
  "apiProxyType": "PROGRAMMABLE",
  "space": "red"
}

示範 API 代理伺服器移至「red」空間後,即使成員沒有存取機構層級資源的權限,也能存取該代理伺服器。其他聊天室的成員 (非「red」聊天室成員) 無法查看或存取「demo」 Proxy。

如果沒有正確的機構或空間層級權限,嘗試存取示範 Proxy 時,會發生下列錯誤:

  {
    "error": {
      "code": 403,
      "message": "Permission denied on resource \"organizations\/acme\/apis\/demo\" (or it may not exist).",
      "status": "PERMISSION_DENIED"
    }
  }

如要將 API 資源從空間移至機構層級,請使用下列指令,並省略 space 查詢參數:

curl "https://apigee.googleapis.com/v1/organizations/ORG_NAME/RESOURCE_TYPE/RESOURCE_ID:move" \
  -X POST -H "Authorization: Bearer $TOKEN"

其中:

  • ORG_NAME 是指 Apigee 機構的名稱。
  • RESOURCE_TYPE 是您要列出的資源類型。有效值包括:
    • apis
    • sharedflows
    • apiproducts
  • RESOURCE_ID 是您要移動的 API Proxy、共用流程或 API 產品名稱。

在工作空間之間移動 API 資源

API 資源可在 Apigee 機構的空間之間移動。API 資源移至空間後,會沿用該空間的 IAM 政策。如要在 Apigee 機構的空間之間移動 API 資源,使用者必須具備下列權限:

  • apigee.RESOURCE_TYPE.move,其中包含目前 API 資源所在的 Space。

    RESOURCE_TYPE 的有效值包括 apissharedflowsapiproducts,視要移動的 API 資源類型而定。

  • apigee.RESOURCE_TYPE.create,這是要將 API 資源移至的 Space。

    RESOURCE_TYPE 的有效值包括 apissharedflowsapiproducts,視要移動的 API 資源類型而定。

如果使用者在兩個 Space 中都獲派 apigee.spaceContentEditor 角色,就會擁有必要權限。

如要在 Apigee 機構的 Space 之間移動 API 資源,請使用下列指令:

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

其中:

  • ORG_NAME 是指 Apigee 機構的名稱。
  • RESOURCE_TYPE 是您要列出的資源類型。有效值包括:
    • apis
    • sharedflows
    • apiproducts
  • RESOURCE_ID 是您要移動的 API Proxy、共用流程或 API 產品名稱。
  • SPACE_NAME 是新 Space 的名稱。

舉例來說,如果使用者擁有「red」空間的 apigee.proxies.move 權限,以及「blue」空間的 apigee.proxies.create 權限,可以使用下列指令將「demo」 API 代理從「red」空間移至「blue」空間:

curl "https://apigee.googleapis.com/v1/organizations/acme/apis/demo:move?space=blue" \
  -X POST -H "Authorization: Bearer $TOKEN"

回覆內容應如下所示:

{
  "basepaths": ["/demo"],
  "revision": 1,
  "apiProxyId": "demo",
  "space_id": "blue",
  "createTime": ...,
  "updateTime": ...
}

在本例中,使用者不需要具備機構層級的權限,只要擁有各個 Space setIamPolicy 繫結設定的必要權限即可。

如果沒有兩個空間的正確權限,嘗試移動 demo API 代理項目會導致下列錯誤:

  {
    "error": {
      "code": 403,
      "message": "Permission denied on resource \"organizations\/acme\/apis\/demo\" (or it may not exist).",
      "status": "PERMISSION_DENIED"
    }
  }