在 Apigee Spaces 中移動 API 資源

本頁適用於 ApigeeApigee Hybrid

查看 Apigee Edge 說明文件。

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

將 API 資源從機構移至聊天室

在 Apigee 機構中建立的 API 資源,可以從機構層級移至聊天室,反之亦然。移至工作區的 API 資源會繼承該工作區的 IAM 政策。如要將 API 資源從機構層級移至聊天室,使用者必須具備下列權限:

  • apigee.RESOURCE_TYPE.move 在來源範圍 (資源目前所在的機構或工作區) 上。

    RESOURCE_TYPE 的有效值包括 proxiessharedflowsapiproducts,具體取決於移動的 API 資源類型。

  • apigee.RESOURCE_TYPE.create 在目標範圍 (資源遷移的機構或聊天室) 上。

    RESOURCE_TYPE 的有效值包括 proxiessharedflowsapiproducts,具體取決於移動的 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 是指要移動資源的聊天室名稱。

舉例來說,使用下列指令時,如果使用者具備 acme 組織的 Apigee 組織管理員角色,就可以將名為 demo 的 API Proxy 從組織層級移至 red 工作區:

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

demo API 代理程式移至紅色聊天室後,即使紅色聊天室成員沒有機構層級資源的存取權,也能存取代理程式。其他聊天室的成員如果不是紅色聊天室的成員,就無法查看或存取 demo proxy。

如果沒有正確的機構或工作區層級權限,嘗試存取 demo 代理伺服器會導致下列錯誤:

  {
    "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 資源的空間。

    RESOURCE_TYPE 的有效值包括 proxiessharedflowsapiproducts,具體取決於要移動的 API 資源類型。

  • apigee.RESOURCE_TYPE.create:要移動 API 資源的專案。

    RESOURCE_TYPE 的有效值包括 proxiessharedflowsapiproducts,具體取決於要移動的 API 資源類型。

使用者如果已為兩個聊天室指派 apigee.spaceContentEditor 角色,就會擁有必要的權限。

如要在 Apigee 機構的不同工作區之間移動 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 工作區的 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": ...
}

在這個範例中,使用者不需要具備機構層級權限,只需要各個工作區 setIamPolicy 繫結所設定的必要權限。

如果嘗試移動 API 代理程式,但未為兩個工作區設定正確的權限,就會發生以下錯誤:

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