使用 Apigee 空间管理 API 资源

查看 Apigee Edge 文档。

本主题介绍了如何在空间中创建和管理 API 资源。您可以在一个空间中创建 API 代理、共享流和 API 产品。在空间中创建的资源会继承与空间相同的权限。

在空间中创建资源与在 Apigee 组织下创建资源相同,只是您可以在创建资源时选择空间。对于非公开正式版,您可以使用 Apigee API 从命令行创建 API 资源,也可以在 Cloud 控制台中使用 Apigee 创建 API 资源。

本指南概述了执行以下操作所需的步骤:

如需大致了解 Apigee 空间,请参阅 Apigee 空间

如需详细了解 Apigee API 资源类型,请参阅:

准备工作

开始在 Apigee 空间中创建 API 资源之前,请确保您已完成以下任务:

所需的角色和权限

随着 Apigee 空间的推出,IAM 检查对 API 资源执行某些操作所需的权限的方式发生了变化。如果 API 资源存在于空间中,IAM 会在空间级别检查执行操作的空间成员是否具有相应的权限。在 API 资源位于空间中的这些操作所需的权限如下所述:

操作 需要权限 范围
部署 API 代理
apigee.deployments.create
apigee.proxyrevisions.deploy
环境
 
API 代理
列出 API 代理的所有部署 apigee.proxies.get API 代理
列出 API 代理修订版本的所有部署 apigee.proxyrevisions.get API 代理修订版本
列出环境中 API 代理的所有部署
apigee.deployments.list
apigee.proxies.get
环境
 
API 代理
获取 API 代理修订版本的部署
apigee.deployments.get
apigee.proxyrevisions.get
API 代理修订版本
 
环境
删除 API 代理修订版本 apigee.deployments.delete API 代理修订版本和环境
部署共享流
apigee.deployments.create
apigee.sharedflows.deploy
环境
 
共享流
列出共享流的所有部署 apigee.sharedflows.get 共享流
列出共享流修订版本的所有部署 apigee.sharedflowrevisions.get 共享流修订版本
列出环境中共享流的所有部署
apigee.deployments.list
apigee.sharedflows.get
环境
 
共享流
获取共享流修订版本的部署
apigee.deployments.get
apigee.sharedflowrevisions.get
API 代理修订版本
 
共享流
删除共享流 apigee.deployments.delete 共享流和环境
为 API 代理修订版本创建调试会话 apigee.tracesessions.create API 代理修订版本和环境
检索调试会话 apigee.tracesessions.get API 代理和环境
从调试会话中删除数据 apigee.tracesessions.delete API 代理和环境
列出 API 代理修订版本中的活跃调试会话 apigee.tracesessions.list 环境或 API 代理修订版本
从事务中获取调试数据 apigee.tracesessions.get 环境和 API 代理修订版本
列出调试会话中的事务 ID apigee.tracesessions.get 环境和 API 代理修订版本

为空间成员分配角色和权限

上述各种权限包含在 apigee.apiAdminV2 角色或 apigee.environmentAdmin 角色中。如需了解详情,请参阅 Apigee 角色

如需向空间成员分配这些角色及其权限,您可以执行以下任一操作:

  • 使用 APIroles/apiAdminV2 角色添加到空间,并使用 APIroles/environmentAdmin 角色添加到目标环境。
  • 使用 IAM 界面将角色添加到项目中。

检查角色

  1. 在 Google Cloud 控制台中,转到 IAM 页面。

    转到 IAM
  2. 选择项目。
  3. 主账号列中,找到标识您或您所属群组的所有行。如需了解您属于哪些群组,请与您的管理员联系。

  4. 对于指定或包含您的所有行,请检查角色列以查看角色列表是否包含所需的角色。

授予角色

  1. 在 Google Cloud 控制台中,转到 IAM 页面。

    前往 IAM
  2. 选择项目。
  3. 点击 授予访问权限
  4. 新的主账号字段中,输入您的用户标识符。 这通常是 Google 账号的电子邮件地址。

  5. 选择角色列表中,选择一个角色。
  6. 如需授予其他角色,请点击 添加其他角色,然后添加其他各个角色。
  7. 点击保存

在 Google Cloud 控制台中访问 API 资源所需的角色

如需以空间团队成员身份访问 Cloud 控制台的 Apigee 界面,用户必须获得 ApigeeSpaceUser 角色。如需了解详情,请参阅 IAM 权限和角色

在空间中管理 API 代理

分配给空间的 Apigee 组织成员可以将 API 代理创建为空间资源、部署为空间资源以及取消其部署。仅分配给其他空间的成员将无法访问或管理这些代理。

将 API 代理创建为空间资源

使用 Cloud 控制台的 Apigee 或者使用 API 将 API 代理创建为空间资源,如以下部分所述。

Cloud 控制台的 Apigee

如需使用 Cloud 控制台的 Apigee 将 API 代理创建为空间资源,请执行以下操作:

  1. 按照创建 API 代理中所述的步骤操作。
  2. 第 5 步中,您会在代理详细信息下看到一个额外的字段,您可以在其中为 API 代理选择一个空间。从列表框中选择空间。如果您不想将 API 代理分配给空间,可以跳过此字段。
  3. 点击下一步以继续执行代理创建的可选部署步骤,或点击创建以创建代理而不进行部署。

Apigee API

如需使用 Apigee API 将 API 代理创建为空间资源,请使用以下命令:

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 代理的名称。该名称必须具有全局唯一性,而不仅仅在空间内唯一。
  • SPACE_NAME 是要在其中创建 API 代理的空间的名称。
  • PROXY_BUNDLE 是 API 代理软件包文件的名称。

例如,通过以下命令,red 团队成员会使用 proxy-bundle.zip 文件,在 acme 组织中将 API 代理 proxy-1 创建为 red 空间资源:

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

将 API 代理部署为空间资源

使用 Cloud 控制台的 Apigee 或使用 API 将 API 代理部署为空间资源,如以下部分所述。

Cloud 控制台的 Apigee

如需使用 Cloud 控制台的 Apigee 将 API 代理部署为空间资源,请按照部署 API 代理中所述的步骤操作。无需执行其他步骤或填写其他字段。

Apigee API

如需使用 Apigee API 将 API 代理部署为空间资源,请使用以下命令:

curl "https://apigee.googleapis.com/v1/organizations/ORG_NAME/environments/ENV_NAME/apis/PROXY_NAME/revisions/REVISION_NUMBER/deployments" \
          -X POST -H "Authorization: Bearer $TOKEN" \
          -H "Content-type: application/json"

其中:

  • ORG_NAME 是您的 Apigee 组织的名称。
  • ENV_NAME 是要在其中部署 API 代理的环境的名称。
  • PROXY_NAME 是要部署的 API 代理的名称。
  • REVISION_NUMBER 是要部署的 API 代理的修订版本号。

例如,通过以下命令,red 团队成员会将 acme 组织中的 API 代理 proxy-1(修订版本 1)部署到 prod 环境:

curl "https://apigee.googleapis.com/v1/organizations/acme/environments/prod/apis/proxy-1/revisions/1/deployments" \
          -X POST -H "Authorization: Bearer $TOKEN" \
          -H "Content-type: application/json"

以下示例展示了该命令的响应:

      {
        "environment": "prod",
        "revision": "1",
        "apiProxy": "proxy-1",
        ...
      }
      

取消部署与空间关联的 API 代理

使用 Cloud 控制台的 Apigee 或使用 API 取消部署与空间关联的 API 代理,如以下部分所述。

Cloud 控制台的 Apigee

如需使用 Cloud 控制台的 Apigee 取消部署与空间关联的 API 代理,请按照取消部署 API 代理中所述的步骤操作。无需执行其他步骤或填写其他字段。

Apigee API

如需使用 Apigee API 取消部署与空间关联的 API 代理,请使用以下命令:

curl "https://apigee.googleapis.com/v1/organizations/ORG_NAME/environments/ENV_NAME/apis/PROXY_NAME/revisions/REVISION_NUMBER/deployments" \
          -X DELETE -H "Authorization: Bearer $TOKEN" \
          -H "Content-type: application/json"

其中:

  • ORG_NAME 是您的 Apigee 组织的名称。
  • ENV_NAME 是要在其中取消部署 API 代理的环境的名称。
  • PROXY_NAME 是要取消部署的 API 代理的名称。
  • REVISION_NUMBER 是要取消部署的 API 代理的修订版本号。

例如,通过以下命令,red 团队成员会从 prod 环境中取消部署 acme 组织中的 API 代理 proxy-1(修订版本 1):

curl "https://apigee.googleapis.com/v1/organizations/acme/environments/prod/apis/proxy-1/revisions/1/deployments" \
          -X DELETE -H "Authorization: Bearer $TOKEN" \
          -H "Content-type: application/json"

以空间资源的形式管理共享流

分配给聊天室的成员还可以将共享流创建为空间资源、将共享流部署为空间资源和取消其部署。其他空间的成员将无法访问或管理这些共享工作流。

将共享流创建为空间资源

使用 Cloud 控制台的 Apigee 或使用 API 将共享流创建为空间资源,如以下部分所述。

Cloud 控制台的 Apigee

如需使用 Cloud 控制台的 Apigee 将共享流创建为空间资源,请执行以下操作:
  1. 按照在 Apigee 界面中创建共享流中的步骤从头开始创建新的共享流或上传现有的流软件包。
  2. 第 4 步中,您会在创建共享流对话框中看到一个额外的字段,您可以在其中为 API 代理选择一个空间。从列表框中选择空间。如果您不想将 API 代理分配给空间,可以跳过此字段。
  3. 点击创建以创建共享流。

Apigee API

如需使用 Apigee API 将共享流创建为空间资源,请使用以下命令:

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 是要在其中创建共享流的空间的名称。
  • 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": ...
      }
      

将共享流部署为空间资源

使用 Cloud 控制台的 Apigee 或使用 API 将共享流部署为空间资源,如以下部分所述。

Cloud 控制台的 Apigee

如需使用 Cloud 控制台的 Apigee 将共享流部署为空间资源,请执行以下操作:

  1. 登录 Cloud 控制台的 Apigee 界面
  2. 选择包含共享流的组织。请参阅在组织之间切换
  3. 在左侧导航栏中,依次选择代理开发 > 共享流
  4. 共享流概览页面上,点击要部署的共享流的名称。系统会显示共享流的详情页面。
  5. 点击部署以打开部署对话框。
  6. 输入以下内容:
    • 修订版本:您要部署的共享流的修订版本号。
    • 环境:要在其中部署共享流的环境。
    • 服务账号(可选):共享流的服务账号
  7. 点击部署

Apigee API

如需使用 Apigee API 将共享流部署为空间资源,请使用以下命令:

curl "https://apigee.googleapis.com/v1/organizations/ORG_NAME/environments/ENV_NAME/sharedflows/FLOW_NAME/revisions/REVISION_NUMBER/deployments" \
          -X POST -H "Authorization: Bearer $TOKEN" \
          -H "Content-type: application/json"

其中:

  • ORG_NAME 是您的 Apigee 组织的名称。
  • ENV_NAME 是要在其中部署共享流的环境的名称。
  • FLOW_NAME 是要部署的共享流的名称。
  • REVISION_NUMBER 是要部署的共享流的修订版本号。

例如,通过以下命令,red 团队成员会将 acme 组织中的共享流 flow-1(修订版本号 1)部署到 prod 环境:

curl "https://apigee.googleapis.com/v1/organizations/acme/environments/prod/sharedflows/flow-1/revisions/1/deployments" \
          -X POST -H "Authorization: Bearer $TOKEN" \
          -H "Content-type: application/json"

以下示例展示了该命令的响应:

      {
        "environment": "prod",
        "revision": "1",
        "sharedFlow": "flow-1",
        ...
      }
      

取消部署与空间关联的共享流

使用 Cloud 控制台的 Apigee 或使用 API 取消部署与空间关联的共享流,如以下部分所述。

Cloud 控制台的 Apigee

如需在 Cloud 控制台的 Apigee 中取消部署与空间关联的共享流,请执行以下操作:

  1. 登录 Cloud 控制台的 Apigee 界面
  2. 选择包含共享流的组织。请参阅在组织之间切换
  3. 在左侧导航栏中,依次选择代理开发 > 共享流
  4. 共享流概览页面上,点击要取消部署的共享流的名称。系统会显示共享流的详情页面。
  5. 部署下,点击取消部署

Apigee API

如需使用 Apigee API 取消部署与空间关联的共享流,请使用以下命令:

curl "https://apigee.googleapis.com/v1/organizations/ORG_NAME/environments/ENV_NAME/sharedflows/FLOW_NAME/revisions/REVISION_NUMBER/deployments" \
          -X DELETE -H "Authorization: Bearer $TOKEN" \
          -H "Content-type: application/json"

其中:

  • ORG_NAME 是您的 Apigee 组织的名称。
  • ENV_NAME 是要在其中取消部署共享流的环境的名称。
  • FLOW_NAME 是要取消部署的共享流的名称。
  • REVISION_NUMBER 是要取消部署的共享流的修订版本号。

以空间资源的形式管理 API 产品

分配给空间的成员可以创建 API 产品来捆绑其 API 代理。创建 API 产品时,空间成员可以选择他们可以访问的任何 API 代理,包括直接在组织下创建的代理,以及在他们拥有成员资格的空间中创建为资源的 API 代理。其他空间的成员将无法访问或管理这些 API 产品。

使用 Cloud 控制台的 Apigee 或使用 API 将 API 产品创建为空间资源,如以下部分所述。

Cloud 控制台的 Apigee

如需使用 Cloud 控制台的 Apigee 将 API 产品创建为空间资源,请执行以下操作:

  1. 按照创建 API 产品中的步骤操作。
  2. 第 4 步中,您会在产品详情页面中看到一个额外的字段,您可以在其中为 API 产品选择空间。从列表框中选择空间。如果您不想将 API 产品分配给空间,可以跳过此字段。
  3. 填写其余配置信息,然后点击保存

Apigee API

如需将 API 产品创建为空间资源,请使用以下命令:

curl "https://apigee.googleapis.com/v1/organizations/ORG_NAME/apiproducts" \
            -X POST -H "Authorization: Bearer $TOKEN" \
            -H "Content-type: application/json" \
            -d  \
              `{
                "name": "PRODUCT_NAME",
                "displayName": "DISPLAY_NAME",
                "description": "PRODUCT_DESCRIPTION",
                "approvalType": "auto",
                "apiResources": [
                  {
                    "apiproduct": "PRODUCT_NAME",
                    "apiResource": "PROXY_NAME",
                    "operations": [
                      {
                        "method": "GET",
                        "path": "/"
                      }
                    ]
                  }
                ],
                "space": "SPACE_NAME"
              }`

其中:

  • ORG_NAME 是您的 Apigee 组织的名称。
  • PRODUCT_NAME 是要创建的 API 产品的名称。该名称必须具有全局唯一性,而不仅仅在空间内唯一。
  • DISPLAY_NAME 是要创建的 API 产品的名称,该名称会显示在界面中。
  • PRODUCT_DESCRIPTION 是要创建的 API 产品的说明。
  • SPACE_NAME 是要在其中创建 API 产品的空间的名称。
  • PROXY_NAME 是要添加到 API 产品的 API 代理的名称。

例如,通过以下命令,red 团队成员会在 acme 组织中创建与 red 空间关联的 API 产品 product-1

curl "https://apigee.googleapis.com/v1/organizations/acme/apiproducts?name=product-1&space=red&action=import" \
            -X POST -H "Authorization: Bearer $TOKEN" \
            -X "Content-type: application/json" \
            -d  \
              `{
                "name": "product-1",
                "displayName": "product-1",
                "description": "Product 1",
                "apiResources": [
                  {
                    "apiproduct": "product-1",
                    "apiResource": "proxy-1",
                    "operations": [
                      {
                        "method": "GET",
                        "path": "/"
                      }
                    ]
                  }
                ],
                "space": "red"
              }`

以下示例展示了该命令的响应:

        {
          "name": "organizations/acme/apiproducts/product-1",
          "displayName": "product-1",
          "description": "Product 1",
          "apiResources": [
            {
              "apiproduct": "product-1",
              "apiResource": "proxy-1",
              "operations": [
                {
                  "method": "GET",
                  "path": "/"
                }
              ]
            }
          ],
          "space": "red",
          "createTime": ...,
          "updateTime": ...
        }

列出与空间关联的所有 API 资源

对于所有列出操作(包括 ListApiProxiesListSharedFlowsListApiProducts),您可以指定空间名称以列出与该空间关联的所有资源。如果您未指定空间名称,列出操作会返回您有权访问的组织中的所有资源,无论这些资源是否与空间关联。

如需执行此任务,您必须拥有 apigee.apiResources.list 权限。Apigee > Apigee Organization Admin 角色可提供此权限。

列出与特定空间关联的 API 资源

使用 Cloud 控制台的 Apigee 或使用 API 列出与特定空间关联的所有 API 资源,如以下部分所述。

Cloud 控制台的 Apigee

如需在 Cloud 控制台的 Apigee 中列出与特定空间关联的所有 API 资源,请打开相关资源类型(API 代理、共享流或 API 产品)的概览页面。在过滤条件框中,从列表中选择空间选项,然后输入空间的名称。系统会显示分配给该空间的资源列表。请注意,系统只会显示与用户所属空间关联的资源。

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 是要列出其中的资源的空间名称。

例如,通过以下命令,red 团队成员会列出 acme 组织中,与 red 空间关联的所有 API 代理:

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 资源而不指定空间

使用 Cloud 控制台的 Apigee 或使用 API 列出所有 API 资源,而不指定空间,如以下部分所述。

Cloud 控制台的 Apigee

如需使用 Cloud 控制台的 Apigee 列出给定类型的所有 API 资源(无论是否与空间关联),请打开相关资源类型(API 代理、共享流或 API 产品)的概览页面。系统会显示所有可用资源的列表。请注意,系统只会显示用户有权查看的资源。这包括与用户是成员的空间关联的资源,或与空间无关的资源。

Apigee API

您还可以使用以下命令列出 API 资源,而不指定空间:

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 代理:

curl -H  "Authorization: Bearer $TOKEN" "https://apigee.googleapis.com/v1/organizations/acme/apis"

如果 acme 组织有三个代理,该命令会返回这三个代理的详细信息。例如:

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

后续步骤