VPC ピアリングを使用して有料組織をプロビジョニングする

このページの内容は Apigee に適用されます。Apigee ハイブリッドには適用されません。

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 APIs を有効にする必要があります。次の 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 サービス ID を作成する

  1. Apigee サービス ID を作成します。

    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 CIDR 範囲と /28 CIDR 範囲が必要です。Apigee ランタイム プレーンには、この CIDR 範囲内の IP アドレスが割り当てられます。このため、範囲が Apigee 用に予約されており、VPC ネットワークの他のアプリケーションで使用されないようにする必要があります。詳細と重要な考慮事項については、ピアリングの範囲についてもご覧ください。

1 つの Apigee インスタンスに対して十分なネットワーク IP 範囲を作成しています。追加の Apigee インスタンスを作成する場合は、インスタンスごとにこの手順を繰り返す必要があります。インスタンス間で範囲を共有することはできません。複数リージョンへの Apigee の拡張もご覧ください。

  1. 次の環境変数を作成します。
    RANGE_NAME=YOUR_RANGE_NAME
    NETWORK_NAME=YOUR_NETWORK_NAME
    

    ここで

    • RANGE_NAME は、作成する IP アドレス範囲の名前です。範囲の名前は自由に設定できます。例: google-svcs
    • NETWORK_NAME は、アドレスが予約されたネットワーク リソースの名前です。

      Google により、新しいプロジェクトごとにデフォルト ネットワーク(名前は default)が作成されるため、このネットワークを使用できます。ただし、テスト以外のネットワークには、デフォルト ネットワークの使用はおすすめしません。

  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 範囲が /22 の長さの CIDR で作成されていることを確認します。
    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 範囲が /28 の長さの CIDR で作成されていることを確認します。
    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 のサービスの間の接続を作成します。具体的には、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. ランタイム データベースの暗号化リングと鍵のロケーションの環境変数を定義します。これにより、環境変数の作成時に一貫性を保つことができ、ドキュメントの手順に沿った操作が容易になります。

      値は、ランタイム データベースの暗号化キーリングと鍵が保存される物理的なロケーションです。

      シングル リージョン

      シングル リージョン構成(1 つのリージョンに 1 つのインスタンスのみが存在): サポートされている KMS リージョン ロケーションから選択します。

      次に例を示します。

      RUNTIMEDBKEY_LOCATION="us-west1"

      $RUNTIME_LOCATION と(またリージョンとも)同じ値を設定できますが、同一である必要はありません。ただし、同じであれば、パフォーマンス上のメリットが得られることがあります。

      マルチリージョン

      マルチリージョン構成: サポートされているマルチリージョンのロケーションuseurope など)またはデュアルリージョンのロケーションから選択します。

      次に例を示します。

      RUNTIMEDBKEY_LOCATION="us"

      米国内にマルチリージョン構成がある場合は、可能であれば、ロケーションに us を使用することをおすすめします。それ以外の場合は、nam4 を使用します。

    2. データベース キーリングと鍵名の環境変数を定義します。

      キーリングの名前は組織に固有のものである必要があります。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 は、コントロール プレーンの暗号鍵の識別に使用する鍵の名前です。
      • 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. 作成リクエストのステータスを確認するには、次の例のように Apigee List organizations APIGET リクエストを送信します。

    データ所在地を使用しない場合

    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 組織を作成するをご覧ください。