您已创建 Google Cloud 账号和项目并启用 API。现在,您可以创建您的组织。
前提条件
如需创建组织,您必须满足以下条件之一:
- 拥有评估账号。评估账号会在 60 天后过期。届时,该组织将被删除。
- 拥有付费账号
如果以上方式均不选择,您必须先与 Apigee Sales 联系,然后才能继续。
要创建新组织并为其预配,请执行以下操作:
-
在命令行中,获取
gcloud
身份验证凭据,如以下示例所示:TOKEN=$(gcloud auth print-access-token)
如需检查是否已填充令牌,请使用
echo
,如以下示例所示:echo $TOKEN
这应该会以编码字符串的形式显示令牌。
如需了解详情,请参阅 gcloud 命令行工具概览。
- 向 Create organizations API 发出经过身份验证的
POST
请求。以下示例展示了创建组织的请求结构:
curl -H "Authorization: Bearer $TOKEN" -X POST -H "content-type:application/json" \ -d '{ "name":"org_name", "displayName":"display_name", "description":"organization_description", "runtimeType":"runtime_type", "analyticsRegion":"analytics_region" }' \ "https://apigee.googleapis.com/v1/organizations?parent=projects/project_ID"
其中:
- (必需) org_name 是您希望用于启用混合模式的组织的编程 ID。组织 ID 必须与您在第 2 步:创建 Google Cloud 项目中创建的 Google Cloud 项目 ID 一致。例如
hybrid-42
。 - (必需)runtime_type 是 Apigee 组织的运行时类型,其中 HYBRID 是用户管理的 Apigee 混合运行时。
- (必需) analytics_region 是存储分析数据的主要地区。请按以下方式之一操作:
asia-northeast1
australia-southeast1
us-west1
us-central1
us-east1
europe-west1
europe-west2
我们提供此选项,以便您可以选择地理位置接近的地区,或者如果您的组织有其他存储需求。
- (必需) project_ID 是您要绑定到启用混合模式的新组织的 Google Cloud 项目。这是 Google 在第 2 步:创建 Google Cloud 项目中为您生成的 ID。
- (可选)display_name 是简单易懂的组织名称。此值不必是唯一的,并且可以包含空格和特殊字符。例如,“My Hybrid Organization”。
- (可选)organization_description 是您要用作其用途提醒的组织的信息。例如,“我的第一个组织”。
成功创建请求后,Organizations API 应返回类似于如下所示的消息:
{ "name": "organizations/organization_ID/operations/long_running_operation_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.apigee.v1.OperationMetadata", "operationType": "INSERT", "targetResourceName": "organizations/organization_ID", "state": "IN_PROGRESS" } }
其中:
- long_running_operation_ID 是长时间运行的异步操作的 UUID。您可以使用此 ID 查看组织创建请求的状态(稍后介绍)。
- organization_ID 是当前创建的新组织的 ID。
如响应中的
state
属性所示,Apigee 已开始创建新组织,因此状态为IN_PROGRESS
。此过程可能需要几分钟时间。如果收到错误消息,请参阅排查组织创建问题。
- (必需) org_name 是您希望用于启用混合模式的组织的编程 ID。组织 ID 必须与您在第 2 步:创建 Google Cloud 项目中创建的 Google Cloud 项目 ID 一致。例如
- 您可以检查长时间运行的操作的状态,Apigee 在您的初始创建请求中返回了该操作的 ID。为此,请使用 Operations API,如以下示例所示:
curl -H "Authorization: Bearer $TOKEN" \ "https://apigee.googleapis.com/v1/organizations/organization_ID/operations/long_running_operation_ID"
以下示例展示了此请求的可能的响应:
FINISHED
预配组织后,长时间运行的操作的状态为
FINISHED
,如以下示例所示:{ "operations": [ { "name": "organizations/organization_ID/operations/long_running_operation_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.apigee.v1.OperationMetadata", "operationType": "INSERT", "targetResourceName": "organizations/organization_ID", "state": "FINISHED" }, "done": true, "response": { "@type": "type.googleapis.com/google.cloud.apigee.v1.Organization", "name": "organization_ID", "createdAt": "1572550611", "lastModifiedAt": "1572550611", "displayName": "display_name" "description": "description" "properties": { "property": [ { "name": "features.hybrid.enabled", "value": "true" } ] }, "analyticsRegion": "us-east1" "runtimeType": "HYBRID", } } ] }
如果您没有输入说明,则该字段不会显示在响应中。
恭喜!您已创建了一个新组织,可以开始使用了。您可以继续执行第 5 步:添加环境。
IN_PROGRESS
如果 Apigee 仍在创建组织,Apigee 将返回
IN_PROGRESS
状态,如以下示例所示:{ "name": "organizations/organization_ID/operations/long_running_operation_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.apigee.v1.OperationMetadata", "operationType": "INSERT", "targetResourceName": "organizations/organization_ID", "state": "IN_PROGRESS" } }
您应该再等待一段时间,然后再尝试验证创建过程是否完成。
排查组织创建问题
使用 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": "type.googleapis.com/google.rpc.DebugInfo", "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 发出请求,以检查长时间运行的操作的状态,如上面的过程所述。 |
409 |
Organization already exists |
您已尝试为 Google Cloud 项目创建多个组织。您只能为每个项目创建一个组织。 |
409 |
Org proposed_organization_ID already exists |
您尝试创建的组织与已存在的组织具有相同的 ID。所有混合客户中的组织 ID 都必须是唯一的。使用建议的新组织 ID 重新提交;例如,在您尝试的最后一个 ID 的末尾附加一个数字。 |
获取组织信息
您可以获取您的账号有权访问的所有组织的列表,也可以按 ID 获取特定组织的详细信息。如需执行这些操作,请使用 organizations API。
列出组织
如需获取所有组织的列表,请执行以下操作:
向以下 List organizations API 端点发送 GET
请求(无正文):
https://apigee.googleapis.com/v1/organizations
例如:
curl -H "Authorization: Bearer $TOKEN" "https://apigee.googleapis.com/v1/organizations"
对您的请求的响应中包含有可供您访问的所有混合启用组织的数组(采用 JSON 格式)。
以下示例显示了一个包含单个组织“my-org-42”的响应:
{ "organizations": [ { "organization": "my-org-42", "projectIds": [ "my-project" ] } ] }
查看详情
如需获取单个组织的详细信息,请执行以下操作:
向以下 Get organizations API 端点发送 GET
请求(无正文):
https://apigee.googleapis.com/v1/organizations/organization_ID
以下示例将获取有关“my-org-42”组织的详细信息:
curl -H "Authorization: Bearer $TOKEN" "https://apigee.googleapis.com/v1/organizations/my-org-42"
对您的请求的响应中包含了有关指定组织的详细信息(采用 JSON 格式)。
以下示例显示了一个包含“my-org-42”组织的详细信息的响应:
{ "name": "my-org-42", "createdAt": "1572550611", "lastModifiedAt": "1572550611", "environments": [ "my-environment" ], "analyticsRegion": "us-east1" }