在 Apigee Spaces 中移動 API 資源

本頁內容適用於 Apigee 和 Apigee 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 的有效值包括 apis、sharedflows 或 apiproducts,視移動的 API 資源類型而定。

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

    RESOURCE_TYPE 的有效值包括 apis、sharedflows 或 apiproducts,視移動的 API 資源類型而定。

如要將機構層級的 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 名稱。

舉例來說,如果使用者具備 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 Proxy 移至「紅色」空間後,即使成員沒有存取機構層級資源的權限,也能存取該 Proxy。其他聊天室的成員 (非「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 移至機構層級,請使用下列指令,並省略 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 的有效值包括 apis、sharedflows 或 apiproducts,視要移動的 API 資源類型而定。

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

    RESOURCE_TYPE 的有效值包括 apis、sharedflows 或 apiproducts,視要移動的 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 是新聊天室的名稱。

舉例來說,假設使用者擁有 red Space 的 apigee.proxies.move 權限,以及 blue Space 的 apigee.proxies.create 權限,則可使用下列指令,將 demo API Proxy 從 red Space 移至 blue Space:

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 Proxy 時,會導致下列錯誤:

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