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 intercambio de tráfico entre VPC. Estos pasos se aplican a los modelos de precios de suscripción y de pago por uso para las organizaciones pagadas con o sin la residencia de datos habilitada.
Resumen de los pasos
Los pasos de aprovisionamiento son los siguientes:
- Paso 1: Define las variables de entorno: Configura
gcloud
y define las variables de entorno. Google Cloud CLI administra la autenticación, la configuración local, el flujo de trabajo de los desarrolladores y las interacciones con las APIs de Google Cloud. - Paso 2: Habilita las API: Apigee requiere que habilites varias APIs de Google Cloud.
- Paso 3: Crea la identidad del servicio de Apigee: Las bibliotecas cliente de Google Cloud usan esta cuenta de servicio. para autenticarse con las APIs de Google Cloud.
- Paso 4: Configura herramientas de redes de servicio: las herramientas de redes de servicio automatizan la configuración de la conectividad privada (con el intercambio de tráfico entre redes de VPC) entre tu red y Apigee.
- Paso 5: Crea una organización: Una organización de Apigee (a veces conocida como org) es el contenedor de nivel superior en Apigee. Incluye todos los entornos y grupos de entornos, usuarios, proxies de API y recursos relacionados.
- Paso 6: Crea una instancia del entorno de ejecución: Una instancia, o entorno de ejecución, es donde se almacenan tu proyecto y los servicios relacionados. Le proporciona a tus servicios el extremo para el usuario.
- Paso 7: Crea un entorno: Un proxy de API debe implementarse en un entorno y agregarse a un grupo de entornos, antes de que las APIs que expone sean accesibles a través de la red.
- Paso 8: Configura el enrutamiento: Permite el acceso externo o el acceso solo interno a la API.
- Paso 9: Implementa un proxy de muestra: Prueba el aprovisionamiento mediante la implementación y llamada de un proxy de API.
Paso 1: Definir las variables de entorno
Configura gcloud
y define variables de entorno para usarlas en pasos posteriores:
- Asegúrate de haber completado los requisitos de configuración que se enumeran en Antes de comenzar.
- Debes tener instalado el SDK de Cloud. Si necesitas instalarlo, consulta Instala el SDK de Cloud.
- Inicializa el SDK de Cloud, como se describe enInicializa gcloud CLI, o asegúrate de que el proyecto de Google Cloud que creaste en Requisitos previos es el proyecto predeterminado para
gcloud
. - Define las siguientes variables de entorno en tu terminal de comando.
Selecciona la pestaña que corresponda al tipo de organización que necesitas: Sin residencia de datos o con 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 del portador. Usarás este encabezado cuando llames a las APIs de Apigee. Ten en cuenta que el token vence después de un período y, cuando lo hace, 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 creaste como parte de los requisitos previos.
- PROJECT_NUMBER es el número de proyecto de Cloud que creaste como parte de los requisitos previos.
-
RUNTIME_LOCATION es la ubicación física en la que se encuentra la instancia de Apigee que crearás más tarde. Para obtener una lista de las ubicaciones disponibles del entorno de ejecución, consulta Ubicaciones de Apigee.
-
ANALYTICS_REGION es la ubicación física en la que se almacenarán los datos analíticos de Apigee. Para obtener una lista de las regiones disponibles de las estadísticas de la API de Apigee, consulta Ubicaciones de Apigee.
Tanto RUNTIME_LOCATION como ANALYTICS_REGION pueden ser de la misma región, pero no es necesario que sean iguales.
-
BILLING_TYPE es el tipo de facturación para la organización que creas. Estos son los valores válidos:
PAYG
para organizaciones de Pay-as-you-go.SUBSCRIPTION
para las organizaciones de suscripción.
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 del portador. Usarás este encabezado cuando llames a las APIs de Apigee. Ten en cuenta que el token vence después de un período y, cuando lo hace, 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 creaste como parte de los requisitos previos.
- PROJECT_NUMBER es el número de proyecto de Cloud que creaste como parte de los requisitos previos.
-
RUNTIME_LOCATION es la ubicación física en la que se encuentra la instancia de Apigee que crearás más tarde. Para obtener una lista de las ubicaciones disponibles del entorno de ejecución, consulta Ubicaciones de Apigee.
La ubicación del entorno 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 obtener una lista de las ubicaciones disponibles del plano de control, 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 obtener una lista de las regiones de datos del consumidor disponibles, consulta Ubicaciones de Apigee.
-
BILLING_TYPE es el tipo de facturación para la organización que creas. Estos son los valores válidos:
PAYG
para organizaciones de Pay-as-you-go.SUBSCRIPTION
para las organizaciones de suscripción.
-
AUTH define el encabezado
- (Opcional) Para verificar su trabajo, repita los valores que acaba de configurar. Ten en cuenta que cuando quieras usar una variable en tus comandos, deberás colocar un signo de dólar antes de su nombre ($).
echo $AUTH
echo $PROJECT_ID
echo $PROJECT_NUMBER
echo $RUNTIME_LOCATION
echo $ANALYTICS_REGION
echo $BILLING_TYPE
Las respuestas a tus comandos
echo
deberían verse de la siguiente manera:YOUR_TOKEN my-cloud-project 1234567890 us-west1 us-west1 SUBSCRIPTIONecho $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
echo
deberían verse de la siguiente manera:YOUR_TOKEN my-cloud-project 1234567890 us-west1 us us-west1 SUBSCRIPTION
Paso 2: Habilitar las API
Permisos necesarios para esta tarea
Puedes otorgar al aprovisionador de Apigee un rol predefinido que incluya los permisos necesarios para completar esta tarea, o bien otorgar permisos más detallados para proporcionar el privilegio mínimo necesario. Consulta Roles predefinidos y Permisos de habilitación de API.
-
Apigee requiere que habilites varias APIs de Google Cloud. Habilítalas mediante la ejecución del siguiente comando de
services enable
:gcloud services enable apigee.googleapis.com \ servicenetworking.googleapis.com \ compute.googleapis.com \ cloudkms.googleapis.com --project=$PROJECT_ID
Si deseas verificar tu trabajo, usa el comando
services list
para mostrar todas las APIs habilitadas (opcional):gcloud services list
En la respuesta, se muestran todos los servicios habilitados, incluidas las APIs que acabas de habilitar.
Paso 3: Crear la identidad de servicio de Apigee
-
Crea la identidad del servicio de Apigee:
gcloud beta services identity create --service=apigee.googleapis.com \ --project=$PROJECT_ID
Verifica que el agente se haya creado correctamente. La respuesta debe mostrar el nombre del agente en 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: Configurar las herramientas de redes de servicio
En este paso, asignarás un par de rangos de direcciones IP (un rango CIDR /22 y /28) a Apigee y realizarás el intercambio de tráfico de VPC entre tu red y la red de Apigee. Cada instancia de Apigee requiere un rango de CIDR no superpuesto de /22 y /28. Se asignan direcciones IP desde este rango de CIDR al plano del entorno de ejecución de Apigee. Por lo tanto, es importante que el rango esté reservado para Apigee y que no use otras aplicaciones en la red de VPC. Para obtener más información y consideraciones importantes, consulta Información sobre los rangos de intercambio de tráfico.
Ten en cuenta que estás creando un rango de IP de red suficiente para una instancia de Apigee. Si planeas crear instancias adicionales de Apigee, debes repetir este paso para cada una. Los rangos no se pueden compartir entre instancias. Consulta también Expande Apigee a varias regiones.
Permisos necesarios para esta tarea
Puedes otorgar al aprovisionador de Apigee un rol predefinido que incluya los permisos necesarios para completar esta tarea, o bien otorgar permisos más detallados para proporcionar el privilegio mínimo necesario. Consulta Roles predefinidos y Permisos de las Herramientas de redes de servicio.
- Crea estas variables de entorno:
RANGE_NAME=
YOUR_RANGE_NAME NETWORK_NAME=
YOUR_NETWORK_NAME Donde:
- RANGE_NAME es el nombre del rango de direcciones IP que estás creando.
Puedes nombrar el rango como desees. 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, no recomienda usar la red predeterminada para nada más que la prueba.
- RANGE_NAME es el nombre del rango de direcciones IP que estás creando.
Puedes nombrar el rango como desees. Por ejemplo:
- Crea un rango de IP de red con una longitud de 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_IDEn el ejemplo anterior,
--addresses
te permite especificar un rango de direcciones. Por ejemplo, para asignar el bloque CIDR192.168.0.0/22
, especifica192.168.0.0
como la dirección y22
como la longitud de prefijo. Consulta también Crea una asignación de IP.Si no proporcionas el parámetro
--addresses
, gcloud selecciona un rango de direcciones disponible por ti.Si se ejecuta de forma correcta,
gcloud
responde con lo siguiente:Created [https://www.googleapis.com/compute/v1/projects/
PROJECT_NAME /global/addresses/google-svcs].Después de crear un rango de direcciones IP, las direcciones se asocian al proyecto hasta que las liberes.
- Verifica que el rango de IP de la red se haya creado con una longitud de CIDR de /22:
gcloud compute addresses list --global --project=$PROJECT_ID
gcloud compute addresses describe $RANGE_NAME --global --project=$PROJECT_ID
- Crea un rango de IP de red con una longitud de CIDR de /28. Este rango es obligatorio y Apigee lo usa para solucionar problemas y 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_IDEn el ejemplo anterior,
--addresses
te permite especificar un rango de direcciones. Por ejemplo, para asignar el bloque CIDR192.168.0.0/28
, especifica192.168.0.0
como la dirección y28
como la longitud de prefijo. Consulta también Crea una asignación de IP.Si no proporcionas el parámetro
--addresses
, gcloud selecciona un rango de direcciones disponible por ti. - Verifica que el rango de IP de la red se haya creado con una longitud de CIDR de /28:
gcloud compute addresses list --global --project=$PROJECT_ID
gcloud compute addresses describe google-managed-services-support-1 --global \ --project=$PROJECT_ID
- Conecta tus servicios a la VPC 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 se ejecuta de forma correcta,
gcloud
responde con lo siguiente, donde OPERATION_ID es el UUID de LRO.Operation "operations/
OPERATION_ID " finished successfully. - Después de unos minutos, verifica si el intercambio de tráfico entre VPC se realizó de forma correcta:
gcloud services vpc-peerings list \ --network=$NETWORK_NAME \ --service=servicenetworking.googleapis.com \ --project=$PROJECT_ID
Apigee crea una conexión entre tu VPC y los servicios de Google. En específico, Apigee conecta tu proyecto con la API de Service Networking a través del intercambio de tráfico de VPC. Apigee también asocia direcciones IP a tu proyecto.
Paso 5: Crear una organización
Permisos necesarios para esta tarea
Puedes otorgar al aprovisionador de Apigee un rol predefinido que incluya los permisos necesarios para completar esta tarea, o bien otorgar permisos más detallados para proporcionar el privilegio mínimo necesario. Consulta los siguientes vínculos:
Antes de crear una organización, debes crear un llavero de claves y una clave de encriptación de la base de datos del entorno de ejecución (consulta el paso 1) y, si usas la residencia de datos., llaveros de claves y claves de encriptación del plano de control (consulta el paso 2). Estas claves de Cloud KMS encriptan los datos que se almacenan y replican en las ubicaciones del entorno de ejecución y del plano de control. Apigee usa estas entidades para encriptar datos de aplicaciones, como KVM, caché y secretos del clientes, que luego se almacenan en la base de datos. Para obtener más información, consulta Acerca de las claves de encriptación de Apigee.
-
Crea un llavero de claves y una clave de encriptación de la base de datos del entorno de ejecución.
-
Define una variable de entorno para la ubicación de la clave y el llavero de encriptación de la base de datos del entorno de ejecución. Esto garantiza la coherencia cuando se crean y facilita el seguimiento en la documentación.
El valor es la ubicación física en la que se almacenan el llavero de claves y la clave de encriptación de la base de datos del entorno de ejecución.
Opciones de configuración de región única (en las que solo tienes una instancia en una región): elige entre las ubicaciones regionales de KMS compatibles.
Por ejemplo:
RUNTIMEDBKEY_LOCATION="us-west1"
El valor puede ser el mismo que la $RUNTIME_LOCATION (también una región), pero no es necesario que lo sea. Sin embargo, puede haber un beneficio de rendimiento si son iguales.
Opciones de configuración multirregional: Elige entre ubicaciones multirregionales compatibles (como
us
oeurope
) o ubicaciones birregionales.Por ejemplo:
RUNTIMEDBKEY_LOCATION="us"
Te recomendamos que, si tienes una configuración multirregional en EE.UU., uses
us
para tu ubicación si es posible. De lo contrario, usanam4
. - Define variables de entorno para el nombre de las claves y los llaveros de claves de la base de datos.
El nombre del llavero de claves debe ser único para tu organización. Si creas una segunda región o una posterior, el nombre no puede ser el mismo que los nombres de otros llaveros de claves.
RUNTIMEDB_KEY_RING_NAME=
YOUR_DB_KEY_RING_NAME RUNTIMEDB_KEY_NAME=
YOUR_DB_KEY_NAME - (Opcional) Para verificar su trabajo, repita los valores que acaba de configurar. Recuerda que cuando quieras usar una variable en tus comandos, deberás colocar un signo de dólar antes de su nombre ($).
echo $RUNTIMEDBKEY_LOCATION
echo $RUNTIMEDB_KEY_RING_NAME
echo $RUNTIMEDB_KEY_NAME
- Crea un llavero de claves nuevo:
gcloud kms keyrings create $RUNTIMEDB_KEY_RING_NAME \ --location $RUNTIMEDBKEY_LOCATION --project $PROJECT_ID
La ubicación de la clave de encriptación de la base de datos del entorno de ejecución de Apigee admite todas las ubicaciones de Cloud KMS compatibles con Cloud HSM y Cloud EKM.
Crea una clave:
gcloud kms keys create $RUNTIMEDB_KEY_NAME \ --keyring $RUNTIMEDB_KEY_RING_NAME \ --location $RUNTIMEDBKEY_LOCATION \ --purpose "encryption" \ --project $PROJECT_ID
Con este comando, se crea la clave y se agrega al llavero de claves.
Obtén el ID de 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 Coloca el ID de clave en una variable de entorno. Usarás esta variable en un comando posterior:
RUNTIMEDB_KEY_ID=
YOUR_RUNTIMEDB_KEY_ID Otorga acceso al agente de servicio de Apigee para que use la clave nueva:
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 con el agente de servicio de Apigee.
Cuando se completa correctamente esta solicitud,
gcloud
muestra una respuesta similar a la 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 recibes un error como el que se muestra a continuación, haz lo 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, en la dirección de correo electrónico de la cuenta de servicio.
-
- Si usas la residencia de datos, crea un llavero de claves y una clave de encriptación del plano de control. Si no usas la residencia de datos, ve al paso 3.
- Define una variable de entorno para la ubicación del llavero y de la clave de encriptación 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 obtener una lista de las ubicaciones disponibles del plano de control, 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 obtener una lista de las regiones de datos del consumidor disponibles, consulta Ubicaciones de Apigee.
Define variables de entorno para los llaveros de claves y los nombres de claves de la base de datos del plano de control.
El nombre del llavero de claves debe ser único para 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 llavero de claves que usarás para identificar el llavero de claves de la encriptación de tu plano de control.
- CONTROL_PLANE_KEY_NAME es el nombre de la clave que usarás para identificar la clave de encriptación del plano de control.
- CONSUMER_DATA_KEY_RING_NAME es el nombre del llavero de claves que usarás para identificar el llavero de claves de la encriptación de la región de datos del consumidor.
- CONSUMER_DATA_KEY_NAME es el nombre de la clave que usarás para identificar la clave de encriptación de la región de datos del consumidor.
- Crea un llavero de claves nuevo:
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
- Crea una clave:
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
Con este comando, se crea la clave y se agrega al llavero de claves.
Obtén el ID de 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 - Coloca el ID de 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 - Otorga acceso al agente de servicio de Apigee para que use la clave nueva:
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 con el agente de servicio de Apigee. Cuando se completa correctamente esta solicitud, gcloud muestra una respuesta similar a la 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 recibes un error como el que se muestra a continuación, haz lo 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, en la dirección de correo electrónico de la cuenta de servicio.
-
Para crear la organización, envía la siguiente solicitud a la API de la organización de Apigee:
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 para la solicitud. Esta carga útil debe incluir lo siguiente:name
: Identifica tu organización nueva. Debe ser el mismo que el ID del proyecto.analyticsRegion
: Especifica la ubicación física en la que se almacenarán tus datos de estadísticas.runtimeType
: Configura este valor enCLOUD
.billingType
: Especifica el tipo de facturación de la organización creada.authorizedNetwork
: Identifica la red de intercambio de tráfico que especificaste en Configura las herramientas de redes de servicios.runtimeDatabaseEncryptionKeyName
: El ID de la clave de encriptación de la aplicación que creaste en el paso anterior. Recuerda que el ID está estructurado como una ruta de archivo. Por ejemplo:projects/my-project/locations/us-west1/keyRings/my-key-ring/cryptoKeys/my-key
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 para la solicitud. Esta carga útil debe incluir lo siguiente:name
: Identifica tu organización nueva. Debe ser el mismo que el ID del proyecto.runtimeType
: Configura este valor enCLOUD
.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 conocer los valores admitidos.apiConsumerDataEncryptionKeyName
: es el ID de la clave de la región de datos del consumidor.authorizedNetwork
: Identifica la red de intercambio de tráfico que especificaste en Configura las herramientas de redes de servicios.runtimeDatabaseEncryptionKeyName
: El ID de la clave de encriptación de la aplicación que creaste en el paso anterior. Recuerda que el ID está estructurado como 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 recibes un error, verifica el uso de comillas alrededor de los valores de las variables en la carga útil de datos. Asegúrate de tener comillas dobles alrededor de la variable $PROJECT_ID, como se muestra en el siguiente ejemplo:
"'"$PROJECT_ID"'"
Si usas strings simples (no variables de entorno) para los valores de solicitud, puedes colocarlas entre comillas dobles dentro de la string de carga útil entre comillas simples, como se muestra en el siguiente ejemplo:
'{ "name":"my-gcp-project", ... }'
- Espera unos minutos.
- Para verificar el estado de la solicitud de creación, envía una solicitud
GET
a la API de la lista de organizaciones de Apigee, como se muestra en el siguiente ejemplo: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"
Si ves esta respuesta, significa que la creación de la organización aún no se completó:
{ "error": { "code": 403, "message": "Permission denied on resource \"organizations/apigee-docs-m\" (or it may not exist)", "status": "PERMISSION_DENIED" } }
Si Apigee creó una organización nueva de forma correcta, recibirás una respuesta similar a la que se muestra a continuación:
{ "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" }Si Apigee muestra una respuesta de error HTTP, consulta Crea una organización de Apigee.
Realiza los siguientes pasos para crear un llavero de claves y una clave de encriptación del plano de control.
Consulta también: Solución de problemas de CMEK.