第 4 步:创建组织

您已创建 Google Cloud 账号和项目并启用 API。现在,您可以创建您的组织。

前提条件

如需创建组织,您必须满足以下条件之一:

  • 拥有 Google Cloud 账号。默认情况下,Google Cloud 账号将允许您创建免费评估 Apigee 组织。评估组织在 60 天后过期。届时,该组织将被删除。
  • 拥有 Google Cloud 账号和已在 Google Cloud 项目和结算账号中启用的 Apigee 付费订阅。付费订阅可让您创建可扩缩的完整 Apigee 实现。联系 Apigee Sales以购买付费账号并启用订阅。

要创建新组织并为其预配,请执行以下操作

  1. 在命令行中,使用以下命令获取 gcloud 身份验证凭据:

    Linux / MacOS

    TOKEN=$(gcloud auth print-access-token)

    如需检查是否已填充令牌,请使用 echo,如以下示例所示:

    echo $TOKEN

    这应该会以编码字符串的形式显示令牌。

    Windows

    for /f "tokens=*" %a in ('gcloud auth print-access-token') do set TOKEN=%a

    如需检查是否已填充令牌,请使用 echo,如以下示例所示:

    echo %TOKEN%

    这应该会以编码字符串的形式显示令牌。

  2. 为组织元素创建以下环境变量。您将在命令中使用这些变量来创建组织。
    • PROJECT_ID (必需) 是您要绑定到启用混合模式的新组织的 Google Cloud 项目。这是 Google 在第 2 步:创建 Google Cloud 项目中为您生成的 ID。
      export PROJECT_ID=your_project_id

      末尾带有英文句点的项目 ID 名称

    • ORG_NAME (必需) 是您希望用于启用混合模式的组织的编程 ID。
      export ORG_NAME=$PROJECT_ID
    • ORG_DISPLAY_NAME(可选) 是您的组织的易记名称。此值不必是唯一的,并且可以包含空格和特殊字符。例如,“My Hybrid Organization”。
      ORG_DISPLAY_NAME="friendly_name"

      包含空格的变量名称内容必须用英文双引号括起来。例如:"My Organization"

    • ORGANIZATION_DESCRIPTION (可选)是您要用作其用途提醒的组织信息。例如,“我的第一个组织”。
      ORGANIZATION_DESCRIPTION="description_text"
    • ANALYTICS_REGION (必需)是存储分析数据的主要地区。
      export ANALYTICS_REGION=analytics_region

      其中 analytics_region 是以下值之一:

      asia-northeast1 asia-south1 asia-east1 asia-southeast1
      australia-southeast1 us-central1 us-east1 us-west1
      asia-southeast2 europe-west1 europe-west2

      选择地理位置接近的地区或符合组织存储要求的地区。

    • RUNTIMETYPE(必需) 是 Apigee 组织的运行时类型,其中 HYBRID 是用户管理的 Apigee 混合运行时。
      export RUNTIMETYPE=HYBRID
  3. Create organizations API 发出经过身份验证的 POST 请求。

    以下示例展示了创建组织的请求结构:

    curl -H "Authorization: Bearer $TOKEN" -X POST -H "content-type:application/json" \
      -d '{
        "name":"'"$ORG_NAME"'",
        "displayName":"'"$ORG_DISPLAY_NAME"'",
        "description":"'"$ORGANIZATION_DESCRIPTION"'",
        "runtimeType":"'"$RUNTIMETYPE"'",
        "analyticsRegion":"'"$ANALYTICS_REGION"'"
      }' \
      "https://apigee.googleapis.com/v1/organizations?parent=projects/$PROJECT_ID"

    成功创建请求后,organizations API 应返回类似于如下所示的消息作为响应:

    {
      "name": "organizations/org_name/operations/LONG_RUNNING_OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.apigee.v1.OperationMetadata",
        "operationType": "INSERT",
        "targetResourceName": "organizations/org_name",
        "state": "IN_PROGRESS"
      }
    }

    其中:

    • LONG_RUNNING_OPERATION_ID 是长时间运行的异步操作的 UUID。您可以使用此 ID 检查组织创建请求的状态(如第 5 步中所述)。
    • org_name 是当前创建的新组织的 ID。

    如响应中的 state 属性所示,Apigee 已开始创建新环境,因此状态为 IN_PROGRESS。此过程可能需要几分钟时间。

    如果收到错误消息,请参阅排查组织创建问题

  4. 将长时间运行的操作 ID 保存到环境变量。它适合用于未来的管理任务。

    语法

    export LONG_RUNNING_OPERATION_ID=long_running_operation_ID

    示例

    export LONG_RUNNING_OPERATION_ID=6abc8a72-46de-f9da-bcfe-70d9ab347e4f
  5. 您可以检查长时间运行的操作的状态,Apigee 在您的初始创建请求中返回了该操作的 ID。为此,请使用操作 API。例如:
    curl -H "Authorization: Bearer $TOKEN" \
      "https://apigee.googleapis.com/v1/organizations/$ORG_NAME/operations/$LONG_RUNNING_OPERATION_ID"

    以下示例展示了此请求的可能的响应:

    IN_PROGRESS

    如果 Apigee 仍在创建组织,Apigee 将返回 IN_PROGRESS 状态。例如:

    {
      "name": "organizations/ORG_NAME/operations/LONG_RUNNING_OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.apigee.v1.OperationMetadata",
        "operationType": "INSERT",
        "targetResourceName": "organizations/ORG_NAME",
        "state": "IN_PROGRESS"
      }
    }

    您应该再等待一段时间,然后再尝试验证创建过程是否完成。

    FINISHED

    预配组织后,长时间运行的操作的状态将为 FINISHED。例如:

    {
      "name": "organizations/ORG_NAME/operations/LONG_RUNNING_OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.apigee.v1.OperationMetadata",
        "operationType": "INSERT",
        "targetResourceName": "organizations/ORG_NAME",
        "state": "FINISHED"
      },
      "done": true,
      "response": {
        "@type": "type.googleapis.com/google.cloud.apigee.v1.Organization",
        "name": "ORG_NAME",
        "displayName": "ORG_DISPLAY_NAME",
        "description": "ORGANIZATION_DESCRIPTION",
        "createdAt": "1626237148461",
        "lastModifiedAt": "1626237149384",
        "properties": {
          "property": [
            {
              "name": "features.hybrid.enabled",
              "value": "true"
            },
            {
              "name": "features.mart.connect.enabled",
              "value": "true"
            }
          ]
        },
        "analyticsRegion": "ANALYTICS_REGION",
        "runtimeType": "HYBRID",
        "subscriptionType": "TRIAL",
        "state": "ACTIVE",
        "billingType": "EVALUATION",
        "expiresAt": "1631421073171",
        "addonsConfig": {
          "advancedApiOpsConfig": {},
          "integrationConfig": {},
          "monetizationConfig": {}
        }
      }
    }

    如果您没有输入说明,则该字段不会显示在响应中。

查看组织详细信息

您可以查看您使用 Apigee API 创建的组织的元数据详细信息。您还可以使用 API 列出您的 Google Cloud 账号有权访问的所有组织。如需执行这些操作,请使用 organizations API

在试用这些 API 之前,请刷新您的授权令牌:

TOKEN=$(gcloud auth print-access-token)

获取组织详细信息

如需获取单个组织的详细信息,请执行以下操作:

向以下 Get organizations API 端点发送 GET 请求(无正文):

https://apigee.googleapis.com/v1/organizations/org_name

以下示例会获取有关 $ORG_NAME 组织的详细信息:在此示例中,$ORG_NAME 被设置为“apigee-example”。

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

对您的请求的响应中包含了有关指定组织的详细信息(采用 JSON 格式)。

以下示例显示了有关组织 apigee-example 的详细信息的响应:

{
  "name": "apigee-example",
  "displayName": "apigee-example-org",
  "description": "Apigee Example Org",
  "createdAt": "1626237148461",
  "lastModifiedAt": "1626237149384",
  "properties": {
    "property": [
      {
        "name": "features.hybrid.enabled",
        "value": "true"
      },
      {
        "name": "features.mart.connect.enabled",
        "value": "true"
      }
    ]
  },
  "analyticsRegion": "us-west1",
  "runtimeType": "HYBRID",
  "subscriptionType": "TRIAL",
  "projectId": "apigee-example",
  "state": "ACTIVE",
  "billingType": "EVALUATION",
  "expiresAt": "1631421073171",
  "addonsConfig": {
    "advancedApiOpsConfig": {},
    "integrationConfig": {},
    "monetizationConfig": {}
  }
}

列出组织

如需获取您的 Google Cloud 账号有权访问的所有组织的列表,请执行以下操作:

向以下 List organizations API 端点发送 GET 请求(无正文):

https://apigee.googleapis.com/v1/organizations

例如:

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

对您的请求的响应中包含有可供您访问的所有混合启用组织的数组(采用 JSON 格式)。

以下示例显示了单个组织 apigee-example 的响应:

{
  "organizations": [
    {
      "organization": "apigee-example",
      "projectIds": [
        "apigee-example"
      ]
    },
    {
      "organization": "apigee-example-2",
      "projectIds": [
        "apigee-example-2"
      ]
    }
  ]
}

排查组织创建问题

使用 Create organizations API 创建组织时,您可能会收到错误响应。响应如下所示:

{
  "error": {
    "code": HTTP_error_code,
    "message": "short_error_message",
    "status": "high_level_error_type",
    "details": [
      {
        "@type": "specific_error_type",
        "detail": "expanded_error_description"
      }
    ]
  }
}

以下示例显示了常见错误的响应 - 组织 ID 包含非法字符(组织 ID 中不允许使用大写字符):

{
  "error": {
    "code": 400,
    "message": "invalid Organization ID \"MY-ORG\": \"MY-ORG\" is an invalid Organization ID",
    "status": "INVALID_ARGUMENT",
    "details": [
      {
        "@type": "",
        "detail": "[ORIGINAL ERROR] generic::invalid_argument: invalid Organization ID \"MY-ORG\":
          \"My-ORG\" is an invalid Organization ID [google.rpc.error_details_ext]
          { message: \"invalid Organization ID \\\"MY-ORG\\\": \\\"MY-ORG\\\" is an invalid
          Organization ID\" }"
      }
    ]
  }
}

在这种情况下,您可以使用小写字母来给组织重命名,然后重新发送请求。

下表列出了您在创建新组织时可能会遇到的错误以及可能的解决方法:

HTTP 错误代码 HTTP 错误 说明
400 Invalid JSON payload received 请求中的数据结构包含语法错误,或者端点路径不正确。
400 Invalid organization ID 您请求的组织 ID 不能包含大写字母或除连字符以外的任何其他特殊字符。只能包含小写字母、数字和/或连字符。最多可包含 32 个字符。
400 Unsupported analytics region 您在请求正文中未指定 analyticsRegion 的值,或者您指定的值不是一个有效的选项。
400 Does not have an Apigee entitlement 您在第 2 步:创建 Google Cloud 项目中创建的 Google Cloud 项目尚未启用混合模式。这可能表示您的结算出现问题,或者存在与您的 Google Cloud 账号相关的一些其他错误。如需了解详情,请与 Apigee 销售人员联系。
401 Request had invalid authentication credentials 您的 gcloud 身份验证令牌无效或已过时,或者您没有在请求中包含一个令牌。生成新令牌并重新发送地址。
403 Permission denied on resource project project_ID 您可能发送了包含错误项目 ID 或路径的请求。
403 Unable to retrieve project information 尚未创建或配置该组织。您可以向 Operations API 发出请求,以检查长时间运行的操作的状态,如第 5 步中所述。
409 Organization already exists 您已尝试为 Google Cloud 项目创建多个组织。您只能为每个项目创建一个组织。
409 Org proposed_org_name already exists 您尝试创建的组织与已存在的组织具有相同的 ID。所有混合客户中的组织 ID 都必须是唯一的。使用建议的新组织 ID 重新提交;例如,在您尝试的最后一个 ID 的末尾附加一个数字。
1 2 3 4 (下一步)第 5 步:创建环境组