使用 VPC 对等互连预配付费组织

本页面适用于 Apigee,但不适用于 Apigee Hybrid

查看 Apigee Edge 文档。

本文档介绍如何在使用 VPC 对等互连的情况下通过命令行安装和配置 Apigee。这些步骤适用于启用或未启用数据驻留的付费组织的订阅和随用随付价格模式。

步骤摘要

预配步骤如下:

第 1 步:定义环境变量

设置 gcloud 并定义环境变量,以供后续步骤使用:

  1. 请确保已完成准备工作中列出的设置要求。
  2. 您必须已安装 Cloud SDK。如果您需要安装,请参阅安装 Cloud SDK
  3. 初始化 Cloud SDK(如初始化 gcloud CLI 中所述),否则请确保您在前提条件中创建的 Google Cloud 项目是 gcloud 的默认项目。
  4. 在命令终端中定义以下环境变量。选择与所需组织类型对应的标签页:无数据驻留有数据驻留

    无数据驻留

    AUTH="$(gcloud auth print-access-token)"
    PROJECT_ID="YOUR_PROJECT_ID"
    PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")
    RUNTIME_LOCATION="YOUR_RUNTIME_LOCATION"
    ANALYTICS_REGION="YOUR_ANALYTICS_REGION"
    BILLING_TYPE="YOUR_BILLING_TYPE"

    其中:

    • AUTH 使用不记名令牌定义 Authentication 标头。 您将在调用 Apigee API 时使用此标头。请注意,令牌会在一段时间后过期,并且在令牌过期后,您可以使用同一命令重新生成令牌。如需了解详情,请参阅 print-access-token 命令参考页面。
    • PROJECT_ID 是您在前提条件中创建的 Cloud 项目 ID。
    • PROJECT_NUMBER 是您在前提条件中创建的 Cloud 项目编号。
    • RUNTIME_LOCATION 是您稍后创建的 Apigee 实例所在的物理位置。如需查看可用运行时位置的列表,请参阅 Apigee 位置

    • ANALYTICS_REGION 是存储 Apigee 分析数据的物理位置。如需查看可用的 Apigee API Analytics 区域列表,请参阅 Apigee 位置

      RUNTIME_LOCATIONRUNTIME_LOCATION 可以位于同一区域,但这不是必须的。

    • BILLING_TYPE 是您创建的组织的结算类型。有效值包括:

    数据驻留

    AUTH="$(gcloud auth print-access-token)"
    PROJECT_ID="YOUR_PROJECT_ID"
    PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")
    RUNTIME_LOCATION="YOUR_RUNTIME_LOCATION"
    CONTROL_PLANE_LOCATION="YOUR_CONTROL_PLANE_LOCATION"
    CONSUMER_DATA_REGION="YOUR_CONSUMER_DATA_REGION"
    BILLING_TYPE="YOUR_BILLING_TYPE"

    其中:

    • AUTH 使用不记名令牌定义 Authentication 标头。 您将在调用 Apigee API 时使用此标头。请注意,令牌会在一段时间后过期,并且在令牌过期后,您可以使用同一命令重新生成令牌。如需了解详情,请参阅 print-access-token 命令参考页面。
    • PROJECT_ID 是您在前提条件中创建的 Cloud 项目 ID。
    • PROJECT_NUMBER 是您在前提条件中创建的 Cloud 项目编号。
    • RUNTIME_LOCATION 是您稍后创建的 Apigee 实例所在的物理位置。如需查看可用运行时位置的列表,请参阅 Apigee 位置

      运行时位置必须位于控制平面位置。
    • CONTROL_PLANE_LOCATION 是存储 Apigee 控制平面数据的物理位置。如需查看可用的控制平面位置列表,请参阅 Apigee 位置
    • CONSUMER_DATA_REGION 是控制平面区域的子区域。您必须同时指定 CONTROL_PLANE_LOCATION 和 CONSUMER_DATA_REGION。如需查看可用的使用方数据区域的列表,请参阅 Apigee 位置
    • BILLING_TYPE 是您创建的组织的结算类型。有效值包括:

  5. (可选)通过回送您刚刚设置的值来检查您的工作。请注意,要在命令中使用变量,请在变量名称前面加上美元符号 ($)。

    无数据驻留

    echo $AUTH
    echo $PROJECT_ID
    echo $PROJECT_NUMBER
    echo $RUNTIME_LOCATION
    echo $ANALYTICS_REGION
    echo $BILLING_TYPE
    

    echo 命令的响应应如下所示:

    YOUR_TOKEN
    my-cloud-project
    1234567890
    us-west1
    us-west1
    SUBSCRIPTION
    

    数据驻留

    echo $AUTH
    echo $PROJECT_ID
    echo $PROJECT_NUMBER
    echo $RUNTIME_LOCATION
    echo $CONTROL_PLANE_LOCATION
    echo $CONSUMER_DATA_REGION
    echo $BILLING_TYPE
    

    echo 命令的响应应如下所示:

    YOUR_TOKEN
    my-cloud-project
    1234567890
    us-west1
    us
    us-west1
    SUBSCRIPTION
    

第 2 步:启用 API

  1. Apigee 要求您启用多个 Google Cloud API。通过执行以下 services enable 命令启用它们:

    gcloud services enable apigee.googleapis.com \
        servicenetworking.googleapis.com \
        compute.googleapis.com \
        cloudkms.googleapis.com --project=$PROJECT_ID
  2. (可选)如需查看您的工作,请使用 services list 命令显示所有已启用的 API:

    gcloud services list

    该响应会显示所有已启用的服务,包括您刚刚启用的 API。

第 3 步:创建 Apigee 服务身份

  1. 创建 Apigee 服务身份

    gcloud beta services identity create --service=apigee.googleapis.com \
      --project=$PROJECT_ID
  2. 验证代理已成功创建。响应应按以下格式显示代理的名称:service-PROJECT_NUMBER@gcp-sa-apigee.iam.gserviceaccount.com。例如:

    Service identity created: service-1234567890@gcp-sa-apigee.iam.gserviceaccount.com

第 4 步:配置服务网络

在此步骤中,您将一对 IP 地址范围(/22 和 /28 CIDR 范围)分配给 Apigee,并在您的网络与 Apigee 网络之间执行 VPC 对等互连。每个 Apigee 实例都需要一个非重叠的 /22 和 /28 CIDR 范围。系统会向 Apigee 运行时平面分配此 CIDR 范围内的 IP 地址。因此,请务必为 Apigee 预留该范围,确保它不会被您的 VPC 网络中的其他应用使用。如需了解详情和重要注意事项,请参阅了解对等互连范围

请注意,您要为一个 Apigee 实例创建足够的网络 IP 范围。如果您计划创建其他 Apigee 实例,则必须对每个实例重复此步骤。这些范围无法在实例之间共享。另请参阅将 Apigee 扩展到多个区域

  1. 创建以下环境变量:
    RANGE_NAME=YOUR_RANGE_NAME
    NETWORK_NAME=YOUR_NETWORK_NAME
    

    其中:

    • RANGE_NAME 是您正在创建的 IP 地址范围的名称。您可以随意为范围命名。例如:google-svcs
    • NETWORK_NAME 是应在其中预留地址的网络资源的名称。

      Google 会为每个新项目创建一个默认网络(名为 default),以便您使用该网络。但是,Google 不建议将默认网络用于测试以外的其他用途。

  2. 创建 CIDR 长度为 /22 的网络 IP 地址范围:
    gcloud compute addresses create $RANGE_NAME \
      --global \
      --prefix-length=22 \
      --description="Peering range for Apigee services" \
      --network=$NETWORK_NAME \
      --purpose=VPC_PEERING \
      --addresses=OPTIONAL_ADDRESSES \
      --project=$PROJECT_ID

    其中,--addresses 可让您选择指定地址范围。例如,如需分配 CIDR 地址块 192.168.0.0/22,请将地址指定为 192.168.0.0,并将前缀长度指定为 22。另请参阅创建 IP 地址分配

    如果您未提供 --addresses 参数,则 gcloud 会为您选择一个可用地址范围。

    成功后,gcloud 会返回以下内容:

    Created [https://www.googleapis.com/compute/v1/projects/PROJECT_NAME/global/addresses/google-svcs].

    创建 IP 地址范围后,地址便会与项目关联,直到您将地址释放。

  3. 验证已创建的网络 IP 地址范围的 CIDR 长度是否为 /22:
    gcloud compute addresses list --global --project=$PROJECT_ID
    gcloud compute addresses describe $RANGE_NAME --global --project=$PROJECT_ID
  4. 创建 CIDR 长度为 /28 的网络 IP 地址范围。此范围是必需的,供 Apigee 用于问题排查,不能自定义或更改。
    gcloud compute addresses create google-managed-services-support-1 \
      --global \
      --prefix-length=28 \
      --description="Peering range for supporting Apigee services" \
      --network=$NETWORK_NAME \
      --purpose=VPC_PEERING \
      --addresses=OPTIONAL_ADDRESSES \
      --project=$PROJECT_ID

    其中,--addresses 可让您选择指定地址范围。例如,如需分配 CIDR 地址块 192.168.0.0/28,请将地址指定为 192.168.0.0,并将前缀长度指定为 28。另请参阅创建 IP 地址分配

    如果您未提供 --addresses 参数,则 gcloud 会为您选择一个可用地址范围。

  5. 验证已创建的网络 IP 地址范围的 CIDR 长度是否为 /28:
    gcloud compute addresses list --global --project=$PROJECT_ID
    gcloud compute addresses describe google-managed-services-support-1 --global \
      --project=$PROJECT_ID
  6. 使用以下命令将您的服务连接到网络:
    gcloud services vpc-peerings connect \
      --service=servicenetworking.googleapis.com \
      --network=$NETWORK_NAME \
      --ranges=$RANGE_NAME,google-managed-services-support-1 \
      --project=$PROJECT_ID

    此操作可能需要几分钟才能完成。在成功后,gcloud 会返回以下内容,其中 OPERATION_IDLRO 的 UUID。

    Operation "operations/OPERATION_ID" finished successfully.
  7. Apigee 在您的网络与 Google 服务之间建立连接;具体而言,Apigee 通过 VPC 对等互连将您的项目连接到 Service Networking API。Apigee 还会将 IP 地址与您的项目关联。

  8. 几分钟后,验证 VPC 对等互连是否成功:
    gcloud services vpc-peerings list \
      --network=$NETWORK_NAME \
      --service=servicenetworking.googleapis.com \
      --project=$PROJECT_ID

第 5 步:创建组织

您必须先创建运行时数据库加密密钥环和密钥,然后才能创建组织(请参阅步骤 1),并且如果您使用数据驻留,还必须创建控制平面加密密钥环和钥匙(请参阅步骤 2)。这些 Cloud KMS 密钥会对跨运行时和控制平面位置存储和复制的数据进行加密。Apigee 使用这些实体来加密应用数据,例如 KVM、缓存和客户端密钥,这些数据随后存储在数据库中。如需了解详情,请参阅 Apigee 加密密钥简介

  1. 创建运行时数据库加密密钥环和密钥。

    1. 为运行时数据库加密密钥环和密钥位置定义一个环境变量。这有助于在创建时确保一致性,并让您能够更轻松地在文档中执行操作。

      该值是存储运行时数据库加密密钥环和密钥的物理位置。

      单区域

      单区域配置(在一个区域中只有一个实例):从支持的 KMS 区域位置中进行选择。

      例如:

      RUNTIMEDBKEY_LOCATION="us-west1"

      该值可以与 $RUNTIME_LOCATION(也是一个区域)相同,但不一定要相同。不过,如果两者相同,则可能会获得性能优势。

      多区域

      多区域配置:从支持的多区域位置(例如 useurope)或双区域位置中进行选择。

      例如:

      RUNTIMEDBKEY_LOCATION="us"

      我们建议您在美国使用多区域配置。如果可能,请使用 us 作为您的位置。否则,请使用 nam4

    2. 定义数据库密钥环和密钥名称的环境变量。

      密钥环的名称在您的组织中必须是唯一的。如果您创建第二个或后续区域,则名称不能与其他密钥环名称相同。

      RUNTIMEDB_KEY_RING_NAME=YOUR_DB_KEY_RING_NAME
      RUNTIMEDB_KEY_NAME=YOUR_DB_KEY_NAME
    3. (可选)通过回送您刚刚设置的值来检查您的工作。请注意,要在命令中使用变量,请在变量名称前面加上美元符号 ($)。
      echo $RUNTIMEDBKEY_LOCATION
      echo $RUNTIMEDB_KEY_RING_NAME
      echo $RUNTIMEDB_KEY_NAME
    4. 创建新的密钥环:
      gcloud kms keyrings create $RUNTIMEDB_KEY_RING_NAME \
        --location $RUNTIMEDBKEY_LOCATION --project $PROJECT_ID

      Apigee 运行时数据库加密密钥的位置支持所有支持 Cloud HSMCloud EKM 的 Cloud KMS 位置。

    5. 创建密钥:

      gcloud kms keys create $RUNTIMEDB_KEY_NAME \
        --keyring $RUNTIMEDB_KEY_RING_NAME \
        --location $RUNTIMEDBKEY_LOCATION \
        --purpose "encryption" \
        --project $PROJECT_ID

      此命令会创建密钥并将其添加到密钥环中。

      获取密钥 ID:

      gcloud kms keys list \
        --location=$RUNTIMEDBKEY_LOCATION \
        --keyring=$RUNTIMEDB_KEY_RING_NAME \
        --project=$PROJECT_ID

      密钥 ID 的语法如下所示(类似于文件路径):

      projects/PROJECT_ID/locations/RUNTIMEDBKEY_LOCATION/keyRings/RUNTIMEDB_KEY_RING_NAME/cryptoKeys/RUNTIMEDB_KEY_NAME
    6. 将密钥 ID 放入环境变量中。您将在后面的命令中使用此变量:

      RUNTIMEDB_KEY_ID=YOUR_RUNTIMEDB_KEY_ID
    7. 向 Apigee Service Agent 授予访问权限以使用新的密钥:

      gcloud kms keys add-iam-policy-binding $RUNTIMEDB_KEY_NAME \
        --location $RUNTIMEDBKEY_LOCATION \
        --keyring $RUNTIMEDB_KEY_RING_NAME \
        --member serviceAccount:service-$PROJECT_NUMBER@gcp-sa-apigee.iam.gserviceaccount.com \
        --role roles/cloudkms.cryptoKeyEncrypterDecrypter \
        --project $PROJECT_ID

      此命令将密钥绑定到 Apigee Service Agent。

      成功完成此请求后,gcloud 的响应将如下所示:

      Updated IAM policy for key [runtime].
      bindings:
      - members:
        - serviceAccount:service-1234567890@gcp-sa-apigee.iam.gserviceaccount.com
        role: roles/cloudkms.cryptoKeyEncrypterDecrypter
      etag: BwWqgEuCuwk=
      version: 1

      如果出现如下错误:

      INVALID_ARGUMENT: Role roles/cloudkms.cryptokms.cryptoKeyEncrypterDecrypter is not supported for this resource.

      请务必使用项目编号,而不是服务账号电子邮件地址中的项目名称。

  2. 如果您使用的是数据驻留,请创建控制平面加密密钥环和密钥。如果您不使用数据驻留,请转到第 3 步
  3. 执行以下步骤以创建控制平面加密密钥环和密钥。

    1. 为控制平面数据库加密环和密钥的位置定义一个环境变量:
      CONTROL_PLANE_LOCATION=YOUR_CONTROL_PLANE_LOCATION
      CONSUMER_DATA_REGION=YOUR_CONSUMER_DATA_REGION

      其中:

      • CONTROL_PLANE_LOCATION 是存储 Apigee 控制平面数据的物理位置。如需查看可用的控制平面位置列表,请参阅 Apigee 位置
      • CONSUMER_DATA_REGION 是控制平面区域的子区域。您必须同时指定 CONTROL_PLANE_LOCATION 和 CONSUMER_DATA_REGION。如需查看可用的使用方数据区域的列表,请参阅 Apigee 位置
    2. 为控制平面数据库密钥环和密钥名称定义环境变量。

      密钥环的名称在您的组织中必须是唯一的。

      CONTROL_PLANE_KEY_RING_NAME=YOUR_CONTROL_PLANE_KEY_RING_NAME
      CONTROL_PLANE_KEY_NAME=YOUR_CONTROL_PLANE_KEY_NAME
      CONSUMER_DATA_KEY_RING_NAME=YOUR_CONSUMER_DATA_KEY_RING_NAME
      CONSUMER_DATA_KEY_NAME=YOUR_CONSUMER_DATA_REGION_KEY_NAME

      其中:

      • CONTROL_PLANE_KEY_RING_NAME 是用于标识控制平面加密密钥环的密钥环名称。
      • CONTROL_PLANE_KEY_NAME 是用于标识控制平面加密密钥的密钥名称。
      • CONSUMER_DATA_KEY_RING_NAME 是用于标识使用方数据区域加密密钥环的密钥环名称。
      • CONSUMER_DATA_KEY_NAME 是用于标识使用方数据区域加密密钥的密钥名称。
    3. 创建新的密钥环:
      gcloud kms keyrings create $CONTROL_PLANE_KEY_RING_NAME \
        --location $CONTROL_PLANE_LOCATION \
        --project $PROJECT_ID
      gcloud kms keyrings create $CONSUMER_DATA_KEY_RING_NAME \
        --location $CONSUMER_DATA_REGION \
        --project $PROJECT_ID
    4. 创建密钥:
      gcloud kms keys create $CONTROL_PLANE_KEY_NAME \
        --keyring $CONTROL_PLANE_KEY_RING_NAME \
        --location $CONTROL_PLANE_LOCATION \
        --purpose "encryption" \
        --project $PROJECT_ID
      gcloud kms keys create $CONSUMER_DATA_KEY_NAME \
        --keyring $CONSUMER_DATA_KEY_RING_NAME \
        --location $CONSUMER_DATA_REGION \
        --purpose "encryption" \
        --project $PROJECT_ID

      此命令会创建密钥并将其添加到密钥环中。

      获取密钥 ID:

      gcloud kms keys list \
      --location=$CONTROL_PLANE_LOCATION \
      --keyring=$CONTROL_PLANE_KEY_RING_NAME \
      --project=$PROJECT_ID
      gcloud kms keys list \
      --location=$CONSUMER_DATA_REGION \
      --keyring=$CONSUMER_DATA_KEY_RING_NAME \
      --project=$PROJECT_ID

      密钥 ID 的语法如下所示(类似于文件路径):

      projects/PROJECT_ID/locations/CONTROL_PLANE_LOCATION/keyRings/CONTROL_PLANE_KEY_RING_NAME/cryptoKeys/CONTROL_PLANE_KEY_NAME
      projects/PROJECT_ID/locations/CONSUMER_DATA_REGION/keyRings/CONSUMER_DATA_KEY_RING_NAME/cryptoKeys/CONSUMER_DATA_KEY_NAME
    5. 将密钥 ID 放入环境变量中。您将在后面的命令中使用此变量:
      CONTROL_PLANE_KEY_ID=YOUR_CONTROL_PLANE_KEY_ID
      
      CONSUMER_DATA_KEY_ID=YOUR_CONSUMER_DATA_KEY_ID
    6. 向 Apigee Service Agent 授予访问权限以使用新的密钥:
      gcloud kms keys add-iam-policy-binding $CONTROL_PLANE_KEY_NAME \
        --location $CONTROL_PLANE_LOCATION \
        --keyring $CONTROL_PLANE_KEY_RING_NAME \
        --member "serviceAccount:service-$PROJECT_NUMBER@gcp-sa-apigee.iam.gserviceaccount.com" \
        --role roles/cloudkms.cryptoKeyEncrypterDecrypter \
        --project $PROJECT_ID
      
      gcloud kms keys add-iam-policy-binding $CONSUMER_DATA_KEY_NAME \
       --location $CONSUMER_DATA_REGION \
       --keyring $CONSUMER_DATA_KEY_RING_NAME \
       --member "serviceAccount:service-$PROJECT_NUMBER@gcp-sa-apigee.iam.gserviceaccount.com" \
       --role roles/cloudkms.cryptoKeyEncrypterDecrypter \
       --project $PROJECT_ID
      

      此命令将密钥绑定到 Apigee Service Agent。成功完成此请求后,gcloud 的响应将如下所示:

      Updated IAM policy for key [runtime].
      bindings:
      - members:
        - serviceAccount:service-1234567890@gcp-sa-apigee.iam.gserviceaccount.com
        role: roles/cloudkms.cryptoKeyEncrypterDecrypter
      etag: BwWqgEuCuwk=
      version: 1

      如果出现如下错误:

      INVALID_ARGUMENT: Role roles/cloudkms.cryptokms.cryptoKeyEncrypterDecrypter is not supported for this resource.

      请务必使用项目编号,而不是服务账号电子邮件地址中的项目名称。

    另请参阅:CMEK 问题排查

  4. 将以下请求发送到 Apigee organizations API 以创建组织:

    无数据驻留

    curl "https://apigee.googleapis.com/v1/organizations?parent=projects/$PROJECT_ID"  \
      -H "Authorization: Bearer $AUTH" \
      -X POST \
      -H "Content-Type:application/json" \
      -d '{
        "name":"'"$PROJECT_ID"'",
        "analyticsRegion":"'"$ANALYTICS_REGION"'",
        "runtimeType":"CLOUD",
        "billingType":"'"$BILLING_TYPE"'",
        "authorizedNetwork":"'"$NETWORK_NAME"'",
        "runtimeDatabaseEncryptionKeyName":"'"$RUNTIMEDB_KEY_ID"'"
      }'

    其中:

    • -d 定义请求的数据载荷。此载荷必须包含以下内容:
      • name:标识您的新组织。它必须与您的项目 ID 相同。

      • analyticsRegion:指定用于存储分析数据的物理位置。

      • runtimeType:将此值设为 CLOUD
      • billingType:指定已创建组织的结算类型。
      • authorizedNetwork:标识您在配置服务网络中指定的对等互连网络。
      • runtimeDatabaseEncryptionKeyName:您在上一步中创建的应用加密密钥的 ID。回想一下,ID 的结构类似于文件路径。例如:
        projects/my-project/locations/us-west1/keyRings/my-key-ring/cryptoKeys/my-key

    数据驻留

    使用 API 创建组织

    curl "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations?parent=projects/$PROJECT_ID"  \
      -H "Authorization: Bearer $AUTH" \
      -X POST \
      -H "Content-Type:application/json" \
      -d '{
        "name":"'"$PROJECT_ID"'",
        "runtimeType":"CLOUD",
        "billingType":"'"$BILLING_TYPE"'",
        "controlPlaneEncryptionKeyName":"'"$CONTROL_PLANE_KEY_ID"'",
        "apiConsumerDataLocation":"'"$CONSUMER_DATA_REGION"'",
        "apiConsumerDataEncryptionKeyName":"'"$CONSUMER_DATA_KEY_ID"'",
        "authorizedNetwork":"'"$NETWORK_NAME"'",
        "runtimeDatabaseEncryptionKeyName":"'"$RUNTIMEDB_KEY_ID"'"
      }'

    其中:

    -d 定义请求的数据载荷。此载荷必须包含以下内容:

    • name:标识您的新组织。它必须与您的项目 ID 相同。
    • runtimeType:将此值设为 CLOUD
    • billingType:指定已创建组织的结算类型。
    • controlPlaneEncryptionKeyName:您的控制平面密钥 ID。
    • apiConsumerDataLocation:您还必须指定内部资源使用的子区域。如需了解支持的值,请参阅数据驻留区域
    • apiConsumerDataEncryptionKeyName:您的使用方数据区域密钥 ID。
    • authorizedNetwork:标识您在配置服务网络中指定的对等互连网络。
    • runtimeDatabaseEncryptionKeyName:您在上一步中创建的应用加密密钥的 ID。回想一下,ID 的结构类似于文件路径。例如:
      projects/my-project/locations/us-west1/keyRings/my-key-ring/cryptoKeys/my-key

    执行此命令后,Apigee 会启动一项“长时间运行的操作”,该操作可能需要几分钟才能完成。

    如果您收到错误消息,请检查数据载荷中变量值前后的引号的使用。请确保 $PROJECT_ID 变量由双引号-单引号-双引号括起,如以下示例所示:

    "'"$PROJECT_ID"'"

    如果您对请求值使用纯文本字符串(而不是环境变量),则可以在用英文单引号括起的载荷字符串中用英文双引号括住它们,如以下示例所示:

    '{ "name":"my-gcp-project", ... }'
  5. 请稍等几分钟。
  6. 如需检查创建请求的状态,您可以向 Apigee List Organizations API 发送 GET 请求,如以下示例所示:

    无数据驻留

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

    数据驻留

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

    如果您看到此响应,则表示组织创建尚未完成:

    {
      "error": {
        "code": 403,
        "message": "Permission denied on resource \"organizations/apigee-docs-m\" (or it may not exist)",
        "status": "PERMISSION_DENIED"
      }
    }

    如果 Apigee 成功创建了新组织,您将收到类似于以下内容的响应:

    无数据驻留

    {
      "name": "my-cloud-project",
      "createdAt": "1592586495539",
      "lastModifiedAt": "1592586495539",
      "environments": [],
      "properties": {
        "property": [
          {
            "name": "features.hybrid.enabled",
            "value": "true"
          },
          {
            "name": "features.mart.connect.enabled",
            "value": "true"
          }
        ]
      },
      "analyticsRegion": "us-west1",
      "runtimeType": "CLOUD",
      "subscriptionType": "PAID",
      "caCertificate": "YOUR_CERTIFICATE",
      "authorizedNetwork": "my-network",
      "projectId": "my-cloud-project"
    }

    数据驻留

      {
        "name": "my-cloud-project",
        "createdAt": "1681412783749",
        "lastModifiedAt": "1681412783749",
        "environments": [
          "test-env"
        ],
        "properties": {
          "property": [
            {
              "name": "features.mart.connect.enabled",
              "value": "true"
            },
            {
              "name": "features.hybrid.enabled",
              "value": "true"
            }
          ]
        },
        "authorizedNetwork": "default",
        "runtimeType": "CLOUD",
        "subscriptionType": "PAID",
        "caCertificate": "YOUR_CERTIFICATE",
        "runtimeDatabaseEncryptionKeyName": "projects/my-cloud-project/locations/us/keyRings/my-key-ring/cryptoKeys/my-key-name",
        "projectId": "my-cloud-project",
        "state": "ACTIVE",
        "billingType": "PAYG",
        "addonsConfig": {
          "advancedApiOpsConfig": {},
          "integrationConfig": {},
          "monetizationConfig": {},
          "connectorsPlatformConfig": {}
        },
        "apiConsumerDataEncryptionKeyName": "projects/my-cloud-project/locations/us-central1/keyRings/my-key-ring/cryptoKeys/my-key-name",
        "controlPlaneEncryptionKeyName": "projects/my-cloud-project/locations/us/keyRings/my-key-ring/cryptoKeys/my-key-name",
        "apiConsumerDataLocation": "us-central1",
        "apigeeProjectId": "i0c2a37e80f9850ab-tp"
      }
    
    

    如果 Apigee 返回 HTTP 错误响应,请参阅创建 Apigee 组织