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

本頁面適用於 Apigee,但不適用於 Apigee Hybrid

查看 Apigee Edge 說明文件。

本文說明如何透過指令列 搭配虛擬私有雲網路對等互連安裝及設定 Apigee。這些步驟適用於付費機構的訂閱和隨用付費計費模式,無論是否已啟用資料儲存地點

步驟摘要

佈建步驟如下:

步驟 1:定義環境變數

設定 gcloud,並定義後續步驟中會用到的環境變數:

  1. 請務必完成「 事前準備」一節中列出的設定規定。
  2. 您必須先安裝 Cloud SDK。如果您需要安裝 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 指令即可啟用:

    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: [email protected]

步驟 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」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 會透過 虛擬私有雲對等互連,將您的專案連結至 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:[email protected]
        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 服務代理使用新金鑰的存取權:
      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 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. 如要查看建立要求的狀態,您可以將 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 機構」一文。