查看 Apigee Edge 文档。
本主题介绍了如何在 Apigee 组织中的 Apigee 空间之间移动 API 资源(API 代理、共享流和 API 产品)。用户可以在组织和空间级别之间或在空间之间移动资源。如需移动、管理或查看组织或空间中的 API 资源,用户必须拥有相关组织或空间的适当权限。
将 API 资源从组织迁移到空间
在 Apigee 组织中创建的 API 资源可以从组织级别移到空间,反之亦然。移动到某个空间的 API 资源会继承该空间的 IAM 政策。如需将 API 资源从组织级层移至空间,用户必须拥有以下权限:
- 针对源范围(资源当前所在的组织或空间)的
apigee.RESOURCE_TYPE.move
。RESOURCE_TYPE 的有效值包括
proxies
、sharedflows
或apiproducts
,具体取决于移动的 API 资源的类型。 - 针对目标范围(要移动资源所在的组织或空间)的
apigee.RESOURCE_TYPE.create
。RESOURCE_TYPE 的有效值包括
proxies
、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 代理、共享流或 API 产品的名称。
- SPACE_NAME 是您要移动资源的空间的名称。
例如,通过以下命令,拥有 acme 组织的 Apigee Organization Admin 角色的用户会将名为 demo 的 API 代理从组织级别移至 red 空间:
curl "https://apigee.googleapis.com/v1/organizations/acme/apis/demo:move?space=red" \ -X POST -H "Authorization: Bearer $TOKEN"
响应应类似如下所示:
{ "basepaths": ["/demo"], "revision": 1, "apiProxyId": "demo", "space_id": "red", "createTime": ..., "updateTime": ... }
将 demo API 代理移至 red 空间后,red 空间的成员可以访问该代理,即使他们没有访问组织级资源的权限也是如此。其他空间的成员(不是 red 空间的成员)无法查看或访问 demo 代理。
如果您没有正确的组织级或空间级权限,尝试访问 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 代理、共享流或 API 产品的名称。
在多个空间之间移动 API 资源
API 资源可以在 Apigee 组织中的各个空间之间移动。移动到某个空间的 API 资源会继承该空间的 IAM 政策。如需在 Apigee 组织中的各个空间之间移动 API 资源,用户必须拥有以下权限:
- 当前 API 资源所在的空间的
apigee.RESOURCE_TYPE.move
。RESOURCE_TYPE 的有效值包括
proxies
、sharedflows
或apiproducts
,具体取决于要移动的 API 资源的类型。 - 要将 API 资源移至的空间的
apigee.RESOURCE_TYPE.create
。RESOURCE_TYPE 的有效值包括
proxies
、sharedflows
或apiproducts
,具体取决于要移动的 API 资源的类型。
为这两个空间分配了 apigee.apiAdminV2
角色的用户将拥有所需的权限。
如需在 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 代理、共享流或 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
绑定设置的必需权限即可。
如果尝试在未获得两个空间的正确权限的情况下移动 demo API 代理,则会导致以下错误:
{ "error": { "code": 403, "message": "Permission denied on resource \"organizations\/acme\/apis\/demo\" (or it may not exist).", "status": "PERMISSION_DENIED" } }