Aprovisionar una organización de pago con emparejamiento de VPC

Aprovisionar una organización de pago con emparejamiento de VPC

Esta página se aplica a Apigee, pero no a Apigee Hybrid.

Consulta la documentación de Apigee Edge.

En este documento se describe cómo instalar y configurar Apigee desde la línea de comandos con el emparejamiento de VPC. Estos pasos se aplican a los modelos de precios de suscripción y de pago por uso de las organizaciones de pago con o sin la residencia de datos habilitada.

Resumen de los pasos

Los pasos de aprovisionamiento son los siguientes:

Paso 1: Define las variables del entorno

Configura gcloud y define las variables de entorno que se usarán en pasos posteriores:

  1. Asegúrate de que has completado los requisitos de configuración que se indican en la sección Antes de empezar.
  2. Debes tener instalado el SDK de Google Cloud. Si necesitas instalarlo, consulta el artículo sobre instalar el SDK de Google Cloud.
  3. Inicializa el SDK de Cloud, tal como se describe en Inicializar la CLI de gcloud, o asegúrate de que el proyecto de Google Cloud que has creado en Requisitos sea el proyecto predeterminado de gcloud.
  4. Define las siguientes variables de entorno en el terminal de comandos. Selecciona la pestaña que corresponda al tipo de organización que necesites: Sin residencia de datos o con Residencia de datos:

    Sin residencia de datos

    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"

    Donde:

    • AUTH define el encabezado Authentication con un token de portador. Usarás este encabezado al llamar a las APIs de Apigee. Ten en cuenta que el token caduca al cabo de un periodo y, cuando lo haga, puedes volver a generarlo con el mismo comando. Para obtener más información, consulta la página de referencia del comando print-access-token.
    • PROJECT_ID es el ID del proyecto de Cloud que has creado en los requisitos previos.
    • PROJECT_NUMBER es el número del proyecto de Cloud que has creado en la sección Requisitos.
    • RUNTIME_LOCATION es la ubicación física en la que se encuentra la instancia de Apigee que crearás más adelante. Para ver una lista de las ubicaciones de tiempo de ejecución disponibles, consulta Ubicaciones de Apigee.

    • ANALYTICS_REGION es la ubicación física en la que se almacenarán los datos de analíticas de Apigee. Para ver una lista de las regiones disponibles de Apigee API Analytics, consulta Ubicaciones de Apigee.

      Tanto RUNTIME_LOCATION como ANALYTICS_REGION pueden ser la misma región, pero no es obligatorio.

    • BILLING_TYPE es el tipo de facturación de la organización que crees. Los valores válidos son estos:

    Residencia de datos

    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"

    Donde:

    • AUTH define el encabezado Authentication con un token de portador. Usarás este encabezado al llamar a las APIs de Apigee. Ten en cuenta que el token caduca al cabo de un periodo y, cuando lo haga, puedes volver a generarlo con el mismo comando. Para obtener más información, consulta la página de referencia del comando print-access-token.
    • PROJECT_ID es el ID del proyecto de Cloud que has creado en los requisitos previos.
    • PROJECT_NUMBER es el número del proyecto de Cloud que has creado en la sección Requisitos.
    • RUNTIME_LOCATION es la ubicación física en la que se encuentra la instancia de Apigee que crearás más adelante. Para ver una lista de las ubicaciones de tiempo de ejecución disponibles, consulta Ubicaciones de Apigee.

      La ubicación del tiempo de ejecución debe estar dentro de la ubicación del plano de control.
    • CONTROL_PLANE_LOCATION es la ubicación física en la que se almacenarán los datos del plano de control de Apigee. Para ver una lista de las ubicaciones del plano de control disponibles, consulta Ubicaciones de Apigee.
    • CONSUMER_DATA_REGION es una subregión de la región del plano de control. Debes especificar tanto CONTROL_PLANE_LOCATION como CONSUMER_DATA_REGION. Para ver una lista de las regiones de datos de consumidores disponibles, consulta Ubicaciones de Apigee.
    • BILLING_TYPE es el tipo de facturación de la organización que crees. Los valores válidos son estos:

  5. (Opcional) Comprueba tu trabajo repitiendo los valores que acabas de definir. Ten en cuenta que, si quieres usar una variable en tus comandos, debes escribir el nombre de la variable precedido del signo de dólar ($).

    Sin residencia de datos

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

    Las respuestas a tus comandos de echo deberían tener un aspecto similar al siguiente:

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

    Residencia de datos

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

    Las respuestas a tus comandos de echo deberían tener un aspecto similar al siguiente:

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

Paso 2: Habilita las API

  1. Apigee requiere que habilites varias APIs de Google Cloud. Para habilitarlos, ejecuta el siguiente comando services enable:

    gcloud services enable apigee.googleapis.com \
        servicenetworking.googleapis.com \
        apihub.googleapis.com \
        compute.googleapis.com \
        cloudkms.googleapis.com --project=$PROJECT_ID
  2. (Opcional) Para comprobar tu trabajo, usa el comando services list para mostrar todas las APIs habilitadas:

    gcloud services list

    En la respuesta se muestran todos los servicios habilitados, incluidas las APIs que acabas de habilitar.

Paso 3: Crea la identidad de servicio de Apigee

  1. Crea la identidad de servicio de Apigee:

    gcloud beta services identity create --service=apigee.googleapis.com \
      --project=$PROJECT_ID
  2. Comprueba que el agente se haya creado correctamente. En la respuesta se debe mostrar el nombre del agente con el siguiente formato: service-PROJECT_NUMBER@gcp-sa-apigee.iam.gserviceaccount.com. por ejemplo:

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

Paso 4: Configura las redes de servicios

En este paso, asignas un par de intervalos de direcciones IP (un intervalo CIDR /22 y otro /28) a Apigee y realizas el emparejamiento de VPC entre tu red y la de Apigee. Cada instancia de Apigee requiere un intervalo CIDR de /22 y /28 que no se solape. Al plano de ejecución de Apigee se le asignan direcciones IP de este intervalo CIDR. Por lo tanto, es importante que el intervalo se reserve para Apigee y que no lo utilicen otras aplicaciones de tu red de VPC. Para obtener más información y conocer las consideraciones importantes, consulta Información sobre los intervalos de emparejamiento.

Ten en cuenta que estás creando un intervalo de IP de red suficiente para una instancia de Apigee. Si tienes previsto crear más instancias de Apigee, debes repetir este paso con cada una de ellas. Los intervalos no se pueden compartir entre instancias. Consulta también Ampliar Apigee a varias regiones.

  1. Crea estas variables de entorno:
    RANGE_NAME=YOUR_RANGE_NAME
    NETWORK_NAME=YOUR_NETWORK_NAME
    

    Donde:

    • RANGE_NAME es el nombre del intervalo de direcciones IP que vas a crear. Puedes asignar el nombre que quieras al intervalo. Por ejemplo: google-svcs
    • NETWORK_NAME es el nombre del recurso de red en el que se deben reservar las direcciones.

      Google crea una red predeterminada (llamada default) para cada proyecto nuevo, por lo que puedes usarla. Sin embargo, Google no recomienda usar la red predeterminada para otra cosa que no sean pruebas.

  2. Crea un intervalo de IP de red con una longitud CIDR de /22:
    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

    Donde --addresses te permite especificar de forma opcional un intervalo de direcciones. Por ejemplo, para asignar el bloque CIDR 192.168.0.0/22, especifica 192.168.0.0 para la dirección y 22 para la longitud del prefijo. Consulta también Crear una asignación de IP.

    Si no proporcionas el parámetro --addresses, gcloud seleccionará un intervalo de direcciones disponible.

    Si la solicitud se realiza correctamente, gcloud responde con lo siguiente:

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

    Una vez que creas un intervalo de direcciones IP, estas se asocian al proyecto hasta que las liberas.

  3. Comprueba que el intervalo de IP de la red se haya creado con una longitud CIDR de /22:
    gcloud compute addresses list --global --project=$PROJECT_ID
    gcloud compute addresses describe $RANGE_NAME --global --project=$PROJECT_ID
  4. Crea un intervalo de IP de red con una longitud CIDR de /28. Este intervalo es obligatorio y Apigee lo usa para solucionar problemas. No se puede personalizar ni cambiar.
    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

    Donde --addresses te permite especificar de forma opcional un intervalo de direcciones. Por ejemplo, para asignar el bloque CIDR 192.168.0.0/28, especifica 192.168.0.0 para la dirección y 28 para la longitud del prefijo. Consulta también Crear una asignación de IP.

    Si no proporcionas el parámetro --addresses, gcloud seleccionará un intervalo de direcciones disponible.

  5. Comprueba que el intervalo de IP de la red se haya creado con una longitud CIDR de /28:
    gcloud compute addresses list --global --project=$PROJECT_ID
    gcloud compute addresses describe google-managed-services-support-1 --global \
      --project=$PROJECT_ID
  6. Conecta tus servicios a la red con el siguiente comando:
    gcloud services vpc-peerings connect \
      --service=servicenetworking.googleapis.com \
      --network=$NETWORK_NAME \
      --ranges=$RANGE_NAME,google-managed-services-support-1 \
      --project=$PROJECT_ID

    Esta operación puede tardar varios minutos en completarse. Si la solicitud se completa correctamente, gcloud responde con lo siguiente, donde OPERATION_ID es el UUID de la operación de larga duración.

    Operation "operations/OPERATION_ID" finished successfully.
  7. Apigee crea una conexión entre tu red y los servicios de Google. En concreto, Apigee conecta tu proyecto a la API Service Networking mediante el emparejamiento de VPC. Apigee también asocia direcciones IP a tu proyecto.

  8. Al cabo de unos minutos, comprueba si el peering de VPC se ha realizado correctamente:
    gcloud services vpc-peerings list \
      --network=$NETWORK_NAME \
      --service=servicenetworking.googleapis.com \
      --project=$PROJECT_ID

Paso 5: Crea una organización

Antes de crear una organización, debes crear un conjunto de claves y una clave de cifrado de la base de datos de tiempo de ejecución (consulta el paso 1) y, si usas la residencia de datos, conjuntos de claves y claves de cifrado del plano de control (consulta el paso 2). Estas claves de Cloud KMS cifran los datos que se almacenan y replican en las ubicaciones del tiempo de ejecución y del plano de control. Apigee usa estas entidades para cifrar datos de aplicaciones, como KVMs, caché y secretos de clientes, que se almacenan en la base de datos. Para obtener más información, consulta el artículo Acerca de las claves de cifrado de Apigee.

  1. Crea un conjunto de claves y una clave de encriptado de la base de datos de tiempo de ejecución.

    1. Define una variable de entorno para la ubicación del anillo y la clave de cifrado de tu base de datos de tiempo de ejecución. De esta forma, se mantiene la coherencia al crearlos y te resulta más fácil seguir la documentación.

      El valor es la ubicación física donde se almacenan el conjunto de claves y la clave de cifrado de la base de datos de tiempo de ejecución.

      Una sola región

      Configuraciones de una sola región: en las que solo tienes una instancia en una región. Elige entre las ubicaciones regionales de KMS admitidas.

      Por ejemplo:

      RUNTIMEDBKEY_LOCATION="us-west1"

      El valor puede ser el mismo que el de $RUNTIME_LOCATION (también una región), pero no es obligatorio. Sin embargo, puede que el rendimiento mejore si son iguales.

      Multirregional

      Configuraciones multirregionales: elige entre las ubicaciones multirregionales admitidas (como us o europe) o las ubicaciones birregionales.

      Por ejemplo:

      RUNTIMEDBKEY_LOCATION="us"

      Si tienes una configuración multirregional en EE. UU., te recomendamos que uses us para tu ubicación, si es posible. Si no, usa nam4.

    2. Define variables de entorno para los conjuntos de claves y los nombres de las claves de la base de datos.

      El nombre del conjunto de claves debe ser único en tu organización. Si creas una segunda región o una posterior, el nombre no puede ser el mismo que el de otros conjuntos de claves.

      RUNTIMEDB_KEY_RING_NAME=YOUR_DB_KEY_RING_NAME
      RUNTIMEDB_KEY_NAME=YOUR_DB_KEY_NAME
    3. (Opcional) Comprueba tu trabajo repitiendo los valores que acabas de definir. Recuerda que, si quieres usar una variable en tus comandos, debes escribir el nombre de la variable precedido de un signo de dólar ($).
      echo $RUNTIMEDBKEY_LOCATION
      echo $RUNTIMEDB_KEY_RING_NAME
      echo $RUNTIMEDB_KEY_NAME
    4. Para crear un conjunto de claves:
      gcloud kms keyrings create $RUNTIMEDB_KEY_RING_NAME \
        --location $RUNTIMEDBKEY_LOCATION --project $PROJECT_ID

      La ubicación de la clave de cifrado de la base de datos de tiempo de ejecución de Apigee admite todas las ubicaciones de Cloud KMS que admiten Cloud HSM y Cloud EKM.

    5. Para crear una clave, sigue estos pasos:

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

      Este comando crea la clave y la añade al conjunto de claves.

      Obtén el ID de la clave:

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

      El ID de clave tiene la siguiente sintaxis (similar a una ruta de archivo):

      projects/PROJECT_ID/locations/RUNTIMEDBKEY_LOCATION/keyRings/RUNTIMEDB_KEY_RING_NAME/cryptoKeys/RUNTIMEDB_KEY_NAME
    6. Coloca el ID de la clave en una variable de entorno. Usarás esta variable en un comando posterior:

      RUNTIMEDB_KEY_ID=YOUR_RUNTIMEDB_KEY_ID
    7. Concede acceso al agente de servicio de Apigee para que use la nueva clave:

      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

      Este comando vincula la clave al agente de servicio de Apigee.

      Si esta solicitud se completa correctamente, gcloud responde con algo similar a lo siguiente:

      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

      Si aparece un error como el siguiente:

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

      Asegúrate de haber usado el número del proyecto y no su nombre en la dirección de correo de la cuenta de servicio.

  2. Si usas la residencia de datos, crea un conjunto de claves y una clave de encriptado del plano de control. Si no usa la residencia de datos, vaya al paso 3.
  3. Sigue estos pasos para crear un conjunto de claves y una clave de cifrado del plano de control.

    1. Define una variable de entorno para la ubicación del anillo y la clave de cifrado de la base de datos del plano de control:
      CONTROL_PLANE_LOCATION=YOUR_CONTROL_PLANE_LOCATION
      CONSUMER_DATA_REGION=YOUR_CONSUMER_DATA_REGION

      Donde:

      • CONTROL_PLANE_LOCATION es la ubicación física en la que se almacenarán los datos del plano de control de Apigee. Para ver una lista de las ubicaciones del plano de control disponibles, consulta Ubicaciones de Apigee.
      • CONSUMER_DATA_REGION es una subregión de la región del plano de control. Debes especificar tanto CONTROL_PLANE_LOCATION como CONSUMER_DATA_REGION. Para ver una lista de las regiones de datos de consumidores disponibles, consulta Ubicaciones de Apigee.
    2. Define variables de entorno para los conjuntos de claves y los nombres de claves de la base de datos del plano de control.

      El nombre del conjunto de claves debe ser único en tu organización.

      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

      Donde:

      • CONTROL_PLANE_KEY_RING_NAME es el nombre del conjunto de claves que usarás para identificar tu conjunto de claves de cifrado del plano de control.
      • CONTROL_PLANE_KEY_NAME es el nombre de la clave que usarás para identificar tu clave de cifrado del plano de control.
      • CONSUMER_DATA_KEY_RING_NAME es el nombre del conjunto de claves que usarás para identificar tu conjunto de claves de cifrado de la región de datos de consumidor.
      • CONSUMER_DATA_KEY_NAME es el nombre de la clave que usarás para identificar tu clave de encriptado de la región de datos de consumidor.
    3. Para crear un conjunto de claves:
      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. Para crear una clave, sigue estos pasos:
      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

      Este comando crea la clave y la añade al conjunto de claves.

      Obtén el ID de la clave:

      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

      El ID de clave tiene la siguiente sintaxis (similar a una ruta de archivo):

      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. Coloca el ID de la clave en una variable de entorno. Usarás esta variable en un comando posterior:
      CONTROL_PLANE_KEY_ID=YOUR_CONTROL_PLANE_KEY_ID
      
      CONSUMER_DATA_KEY_ID=YOUR_CONSUMER_DATA_KEY_ID
    6. Concede acceso al agente de servicio de Apigee para que use la nueva clave:
      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
      

      Este comando vincula la clave al agente de servicio de Apigee. Si esta solicitud se completa correctamente, gcloud responde con un mensaje similar al siguiente:

      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

      Si aparece un error como el siguiente:

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

      Asegúrate de haber usado el número del proyecto y no el nombre del proyecto en la dirección de correo de la cuenta de servicio.

    Consulta también la sección Solución de problemas de CMEK.

  4. Para crear la organización, envía la siguiente solicitud a la API organizations de Apigee:

    Sin residencia de datos

    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"'"
      }'

    Donde:

    • -d define la carga útil de datos de la solicitud. Esta carga útil debe incluir lo siguiente:
      • name: identifica tu nueva organización. Debe ser el mismo nombre que el ID de tu proyecto.

      • analyticsRegion: especifica la ubicación física en la que se almacenarán sus datos analíticos.

      • runtimeType: asigna el valor CLOUD.
      • billingType: especifica el tipo de facturación de la organización creada.
      • authorizedNetwork: identifica la red de interconexión que has especificado en Configurar la red de servicios.
      • runtimeDatabaseEncryptionKeyName: el ID de la clave de cifrado de la aplicación que has creado en el paso anterior. Recuerda que el ID tiene una estructura similar a la de una ruta de archivo. Por ejemplo:
        projects/my-project/locations/us-west1/keyRings/my-key-ring/cryptoKeys/my-key

    Residencia de datos

    Crea una organización con la 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"'"
      }'

    Donde:

    -d define la carga útil de datos de la solicitud. Esta carga útil debe incluir lo siguiente:

    • name: identifica tu nueva organización. Debe ser el mismo nombre que el ID de tu proyecto.
    • runtimeType: asigna el valor CLOUD.
    • billingType: especifica el tipo de facturación de la organización creada.
    • controlPlaneEncryptionKeyName: es el ID de la clave del plano de control.
    • apiConsumerDataLocation: también debes especificar una subregión para que la usen los recursos internos. Consulta Regiones de residencia de datos para ver los valores admitidos.
    • apiConsumerDataEncryptionKeyName: es el ID de la clave de la región de tus datos de consumidor.
    • authorizedNetwork: identifica la red de interconexión que has especificado en Configurar la red de servicios.
    • runtimeDatabaseEncryptionKeyName: el ID de la clave de cifrado de la aplicación que has creado en el paso anterior. Recuerda que el ID tiene la estructura de una ruta de archivo. Por ejemplo:
      projects/my-project/locations/us-west1/keyRings/my-key-ring/cryptoKeys/my-key

    Después de ejecutar este comando, Apigee inicia una operación de larga duración, que puede tardar unos minutos en completarse.

    Si se produce un error, comprueba que has usado comillas alrededor de los valores de las variables en la carga útil de datos. Asegúrate de que la variable $PROJECT_ID esté entre comillas dobles, simples y dobles, como se muestra en el siguiente ejemplo:

    "'"$PROJECT_ID"'"

    Si usa cadenas simples (no variables de entorno) para los valores de las solicitudes, puede incluirlas entre comillas dobles en la cadena de carga útil entre comillas simples, como se muestra en el siguiente ejemplo:

    '{ "name":"my-gcp-project", ... }'
  5. Espera unos minutos.
  6. Para comprobar el estado de tu solicitud de creación, puedes enviar una solicitud GET a la API List organizations de Apigee, como se muestra en el siguiente ejemplo:

    Sin residencia de datos

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

    Residencia de datos

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

    Si ves esta respuesta, significa que la creación de la organización aún no se ha completado:

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

    Si Apigee ha creado una organización correctamente, recibirás una respuesta similar a la siguiente:

    Sin residencia de datos

    {
      "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"
    }

    Residencia de datos

      {
        "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"
      }
    
    

    Si Apigee devuelve una respuesta de error HTTP, consulta Crear una organización de Apigee.