第 2 步:创建组织

在此步骤中,您将创建一个 Apigee 组织

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

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

    Linux / MacOS

    export 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. 第 1 步中,您创建了 PROJECT_ID 环境变量。添加以下环境变量。选择与所需组织类型对应的标签页:无数据驻留或有数据驻留

    无数据驻留

    Linux / MacOS

    export ORG_NAME=$PROJECT_ID
    export ANALYTICS_REGION="ANALYTICS_REGION"
    export RUNTIMETYPE=HYBRID

    Windows

    set ORG_NAME=$PROJECT_ID
    set ANALYTICS_REGION="ANALYTICS_REGION"
    set RUNTIMETYPE=HYBRID

    其中:

    • ORG_NAME (必需):此值必须与 PROJECT_ID 匹配。
    • ANALYTICS_REGION (必需):用于分析数据存储的主要区域。如需查看可用的 Apigee API Analytics 区域列表,请参阅 Apigee 位置
    • RUNTIMETYPE (必需):必须设置为 HYBRID

    数据驻留

    Linux / MacOS

    export ORG_NAME=$PROJECT_ID
    export ANALYTICS_REGION="ANALYTICS_REGION"
    export RUNTIMETYPE=HYBRID
    export CONTROL_PLANE_LOCATION="YOUR_CONTROL_PLANE_LOCATION"
    export CONSUMER_DATA_REGION="YOUR_CONSUMER_DATA_REGION"
    export BILLING_TYPE="SUBSCRIPTION"

    Windows

    set ORG_NAME=$PROJECT_ID
    set ANALYTICS_REGION="ANALYTICS_REGION"
    set RUNTIMETYPE=HYBRID
    set CONTROL_PLANE_LOCATION="YOUR_CONTROL_PLANE_LOCATION"
    set CONSUMER_DATA_REGION="YOUR_CONSUMER_DATA_REGION"
    set BILLING_TYPE="SUBSCRIPTION"

    其中:

    • ORG_NAME:此值必须与 PROJECT_ID 匹配。
    • ANALYTICS_REGION:用于分析数据存储的主要区域。如需查看可用的 Apigee API Analytics 区域列表,请参阅 Apigee 位置
    • RUNTIMETYPE:必须设置为 HYBRID
    • CONTROL_PLANE_LOCATION:存储客户核心内容(例如代理软件包)的位置。如需查看列表,请参阅可用的 Apigee API 控制平面区域
    • CONSUMER_DATA_REGION:控制平面区域的子区域。您必须同时指定 CONTROL_PLANE_LOCATIONCONSUMER_DATA_REGION。如需查看可用的使用方数据区域列表,请参阅 Apigee 位置
    • BILLING_TYPE:必须设置为 "SUBSCRIPTION"。这是 Apigee Hybrid 组织的结算类型。如需了解详情,请参阅订阅权益

    例如:

    export ORG_NAME=$PROJECT_ID
    export ANALYTICS_REGION="us-west1"
    export RUNTIMETYPE=HYBRID
    export CONSUMER_DATA_REGION="us-west1"
    export CONTROL_PLANE_LOCATION="us"
    export BILLING_TYPE="SUBSCRIPTION"
    
  3. 调用以下 Apigee API 以创建组织:

    无数据驻留

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

    数据驻留

    curl -H "Authorization: Bearer $TOKEN" -X POST -H "content-type:application/json" \
      -d '{
        "name":"'"$ORG_NAME"'",
        "billingType":"'"$BILLING_TYPE"'",
        "runtimeType":"'"$RUNTIMETYPE"'",
        "apiConsumerDataLocation":"'"$CONSUMER_DATA_REGION"'"
      }' \
      "https://$CONTROL_PLANE_LOCATION-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. 您可以检查长时间运行的操作的状态,其 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",
        "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": {}
        }
      }
    }

    数据驻留

    curl -H "Authorization: Bearer $TOKEN" \
      "https://$CONTROL_PLANE_LOCATION-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",
        "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": "SUBSCRIPTION",
        "apiConsumerDataLocation": "CONSUMER_DATA_REGION",
        "expiresAt": "1631421073171",
        "addonsConfig": {
          "advancedApiOpsConfig": {},
          "integrationConfig": {},
          "monetizationConfig": {}
        }
      }
    }
  6. 创建组织后,您可以使用 Apigee organizations API 检索组织的相关信息。

    例如:

    无数据驻留

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

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

    {
      "name": "apigee-example",
      "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": "PAID",
      "projectId": "apigee-example",
      "state": "ACTIVE",
      "billingType": "SUBSCRIPTION",
      "expiresAt": "1631421073171",
      "addonsConfig": {
        "advancedApiOpsConfig": {},
        "integrationConfig": {},
        "monetizationConfig": {}
      }
    }

    数据驻留

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

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

    {
      "name": "apigee-example",
      "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": "PAID",
      "projectId": "apigee-example",
      "state": "ACTIVE",
      "billingType": "SUBSCRIPTION",
      "expiresAt": "1631421073171",
      "addonsConfig": {
        "advancedApiOpsConfig": {},
        "integrationConfig": {},
        "monetizationConfig": {}
      }
    }

排查组织创建问题

使用 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"
      }
    ]
  }
}

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

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 您的 Google Cloud 项目尚未启用混合模式。这可能表示您的结算出现问题,或者存在与您的 Google Cloud 账号相关的一些其他错误。如需了解详情,请与 Apigee 销售人员联系。
400 'global' violates constraint in constraints/gcp.resourceLocations on the resource projects/PROJECT_ID, Control Plane Region 您尝试创建的组织可能没有付费订阅权益。类型为 EVAL 的 Apigee Hybrid 组织不支持 数据驻留
400 runtimeType HYBRID is not supported for PAYG_V2, use CLOUD instead: invalid argument 您尝试在具有“随用随付”(PAYG) 权利的项目中创建组织。如有有关组织权益的问题,请与您的 Google Cloud 客户代表联系。
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 步中所述。
403 Permission denied on resource project organizations/PROJECT_ID/deployedIngressConfig 您尝试创建组织,但该组织没有正确的权益。如有有关组织权益的问题,请与您的 Google Cloud 客户代表联系。
409 Organization already exists 您已尝试为 Google Cloud 项目创建多个组织。您只能为每个项目创建一个组织。
409 Org PROPOSED_ORG_NAME already exists 您尝试创建的组织与已存在的组织具有相同的 ID。所有混合客户中的组织 ID 都必须是唯一的。使用建议的新组织 ID 重新提交;例如,在您尝试的最后一个 ID 的末尾附加一个数字。

下一步

转到第 3 步:创建环境组