使用虛擬私有雲對等互連佈建付費機構

透過虛擬私有雲對等互連佈建付費機構

本頁內容適用於 Apigee,但不適用於 Apigee Hybrid

查看 Apigee Edge 說明文件。

本文說明如何透過指令列 使用 VPC 對等互連安裝及設定 Apigee。這些步驟適用於付費機構的訂閱制和隨用隨付計費模式,無論是否啟用資料落地功能都適用。

步驟摘要

佈建步驟如下:

步驟 1:定義環境變數

設定 gcloud 並定義環境變數,以供後續步驟使用:

  1. 請務必先完成「 事前準備」一文列出的設定需求。
  2. 您必須安裝 Cloud SDK。如需安裝,請參閱「 安裝 Cloud SDK」。
  3. 如「初始化 gcloud CLI」一文所述,初始化 Cloud SDK,或確保您在「必要條件」中建立的 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_LOCATIONANALYTICS_REGION 可以是相同區域,但並非必要。

    • 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 指令來啟用這些 API:

    gcloud services enable apigee.googleapis.com \
        servicenetworking.googleapis.com \
        apihub.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:設定服務網路

在這個步驟中,您會為 Apigee 指派一對 IP 位址範圍 (一個 /22 和一個 /28 CIDR 範圍),並在您的網路和 Apigee 的網路之間執行 VPC 對等互連。每個 Apigee 執行個體都需要不重疊的 /22 和 /28 CIDR 範圍。系統會從這個 CIDR 範圍內指派 IP 位址給 Apigee 執行階段層。因此,請務必為 Apigee 保留該範圍,不要讓虛擬私有雲網路中的其他應用程式使用。如需更多資訊和重要注意事項,請參閱「瞭解對等互連範圍」。

請注意,您要為一個 Apigee 執行個體建立足夠的網路 IP 範圍。如果您打算建立其他 Apigee 執行個體,則必須為每個執行個體重複執行這個步驟。執行個體之間無法共用範圍。另請參閱將 Apigee 擴展至多個區域

  1. 建立下列環境變數:
    RANGE_NAME=YOUR_RANGE_NAME
    NETWORK_NAME=YOUR_NETWORK_NAME
    

    其中:

    • RANGE_NAME 是您要建立的 IP 位址範圍名稱。 範圍名稱不限。例如:google-svcs
    • 「NETWORK_NAME」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 服務代理人使用新金鑰的權限:

      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 服務代理。

      成功完成這項要求後,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」CONTROL_PLANE_KEY_NAME是您用來識別控制平面加密金鑰的金鑰名稱。
      • CONSUMER_DATA_KEY_RING_NAME 是用來識別消費者資料區域加密金鑰環的金鑰環名稱。
      • 「CONSUMER_DATA_KEY_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 服務代理人使用新金鑰的權限:
      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 服務代理。成功完成這項要求後,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 機構 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:指定要儲存 Analytics 資料的實體位置。

      • 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. 如要查看建立要求狀態,您可以將 GET 要求傳送至 Apigee List organizations API,如下列範例所示:

    沒有資料落地

    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 機構