Paso 2: Crea una organización

En este paso, crearás una organización de Apigee.

Para crear una organización y aprovisionarla, sigue estos pasos:

  1. En la línea de comandos, obtén tus credenciales de autenticación de gcloud con el siguiente comando:

    Linux o macOS

    export TOKEN=$(gcloud auth print-access-token)

    Para comprobar que se ha rellenado el token, usa echo, como se muestra en el siguiente ejemplo:

    echo $TOKEN

    Debería mostrar tu token como una cadena codificada.

    Windows

    for /f "tokens=*" %a in ('gcloud auth print-access-token') do set TOKEN=%a

    Para comprobar que se ha rellenado el token, usa echo, como se muestra en el siguiente ejemplo:

    echo %TOKEN%

    Debería mostrar tu token como una cadena codificada.

  2. En el paso 1, has creado la variable de entorno PROJECT_ID. Añade las siguientes variables de entorno. 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

    Linux o macOS

    export ORG_NAME=$PROJECT_ID
    export ANALYTICS_REGION="ANALYTICS_REGION"
    export RUNTIMETYPE=HYBRID

    Windows

    set ORG_NAME=$PROJECT_ID
    set ANALYTICS_REGION="ANALYTICS_REGION"
    set RUNTIMETYPE=HYBRID

    Donde:

    • ORG_NAME (Obligatorio): Este valor debe coincidir con PROJECT_ID.
    • ANALYTICS_REGION (Obligatorio): región principal para el almacenamiento de datos analíticos. Para ver una lista de las regiones disponibles de Apigee API Analytics, consulta Ubicaciones de Apigee.
    • RUNTIMETYPE (obligatorio): debe tener el valor HYBRID.

    Residencia de datos

    Linux o macOS

    export ORG_NAME=$PROJECT_ID
    export RUNTIMETYPE=HYBRID
    export CONTROL_PLANE_LOCATION="YOUR_CONTROL_PLANE_LOCATION"
    export CONSUMER_DATA_REGION="YOUR_CONSUMER_DATA_REGION"
    export BILLING_TYPE="SUBSCRIPTION"

    Windows

    set ORG_NAME=$PROJECT_ID
    set RUNTIMETYPE=HYBRID
    set CONTROL_PLANE_LOCATION="YOUR_CONTROL_PLANE_LOCATION"
    set CONSUMER_DATA_REGION="YOUR_CONSUMER_DATA_REGION"
    set BILLING_TYPE="SUBSCRIPTION"

    Donde:

    • ORG_NAME: este valor debe coincidir con PROJECT_ID.
    • RUNTIMETYPE: debe tener el valor HYBRID.
    • CONTROL_PLANE_LOCATION: ubicación en la que se almacena el contenido principal del cliente, como los paquetes proxy. Para ver una lista, consulta Regiones disponibles del plano de control de la API de Apigee.
    • CONSUMER_DATA_REGION: subregión de la región del plano de control. Debe 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: debe tener el valor "SUBSCRIPTION". Este es el tipo de facturación de tu organización de Apigee hybrid. Consulta Derechos de suscripción para obtener más información.

    Por ejemplo:

    export ORG_NAME=$PROJECT_ID
    export RUNTIMETYPE=HYBRID
    export CONSUMER_DATA_REGION="us-west1"
    export CONTROL_PLANE_LOCATION="us"
    export BILLING_TYPE="SUBSCRIPTION"
    
  3. Llama a la siguiente API de Apigee para crear la organización:

    Sin residencia de datos

    curl -H "Authorization: Bearer $TOKEN" -X POST -H "content-type:application/json" \
      -d '{
        "name":"'"$ORG_NAME"'",
        "runtimeType":"'"$RUNTIMETYPE"'",
        "analyticsRegion":"'"$ANALYTICS_REGION"'"
      }' \
      "https://apigee.googleapis.com/v1/organizations?parent=projects/$PROJECT_ID"

    Residencia de datos

    curl -H "Authorization: Bearer $TOKEN" -X POST -H "content-type:application/json" \
      -d '{
        "name":"'"$ORG_NAME"'",
        "billingType":"'"$BILLING_TYPE"'",
        "runtimeType":"'"$RUNTIMETYPE"'",
        "apiConsumerDataLocation":"'"$CONSUMER_DATA_REGION"'"
      }' \
      "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations?parent=projects/$PROJECT_ID"

    Si la solicitud de creación se realiza correctamente, la API Organizations responde con un mensaje similar al siguiente:

    {
      "name": "organizations/org_name/operations/LONG_RUNNING_OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.apigee.v1.OperationMetadata",
        "operationType": "INSERT",
        "targetResourceName": "organizations/org_name",
        "state": "IN_PROGRESS"
      }
    }

    Donde:

    • LONG_RUNNING_OPERATION_ID es el UUID de una operación asíncrona de larga duración. Puedes usar este ID para comprobar el estado de tu solicitud de creación de organización (descrita en el paso 5).
    • org_name es el ID de la nueva organización que se está creando.

    Como indica la propiedad state de la respuesta, Apigee ha empezado a crear la nueva organización, por lo que su estado es IN_PROGRESS. Este proceso puede tardar varios minutos.

    Si aparece un error, consulta Solucionar problemas al crear una organización.

  4. Guarda el ID de la operación de larga duración en una variable de entorno. Te será útil para futuras tareas de gestión.

    Sintaxis

    export LONG_RUNNING_OPERATION_ID=LONG_RUNNING_OPERATION_ID

    Ejemplo

    export LONG_RUNNING_OPERATION_ID=6abc8a72-46de-f9da-bcfe-70d9ab347e4f
  5. Puedes consultar el estado de la operación de larga duración cuyo ID se devolvió en la solicitud de creación. Para ello, usa la API Operations. Por ejemplo:

    Sin residencia de datos

    curl -H "Authorization: Bearer $TOKEN" \
      "https://apigee.googleapis.com/v1/organizations/$ORG_NAME/operations/$LONG_RUNNING_OPERATION_ID"

    En los siguientes ejemplos se muestran posibles respuestas a esta solicitud:

    IN_PROGRESS

    Si Apigee sigue creando la organización, responde con el estado IN_PROGRESS. Por ejemplo:

    {
      "name": "organizations/ORG_NAME/operations/LONG_RUNNING_OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.apigee.v1.OperationMetadata",
        "operationType": "INSERT",
        "targetResourceName": "organizations/ORG_NAME",
        "state": "IN_PROGRESS"
      }
    }

    Deberías esperar un poco más antes de intentar verificar que el proceso de creación se ha completado.

    TERMINADO

    Cuando se haya aprovisionado la organización, el estado de la operación de larga duración será FINISHED. Por ejemplo:

    {
      "name": "organizations/ORG_NAME/operations/LONG_RUNNING_OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.apigee.v1.OperationMetadata",
        "operationType": "INSERT",
        "targetResourceName": "organizations/ORG_NAME",
        "state": "FINISHED"
      },
      "done": true,
      "response": {
        "@type": "type.googleapis.com/google.cloud.apigee.v1.Organization",
        "name": "ORG_NAME",
        "description": "",
        "createdAt": "1626237148461",
        "lastModifiedAt": "1626237149384",
        "properties": {
          "property": [
            {
              "name": "features.hybrid.enabled",
              "value": "true"
            },
            {
              "name": "features.mart.connect.enabled",
              "value": "true"
            }
          ]
        },
        "analyticsRegion": "ANALYTICS_REGION",
        "runtimeType": "HYBRID",
        "subscriptionType": "TRIAL",
        "state": "ACTIVE",
        "billingType": "EVALUATION",
        "expiresAt": "1631421073171",
        "addonsConfig": {
          "advancedApiOpsConfig": {},
          "integrationConfig": {},
          "monetizationConfig": {}
        }
      }
    }

    Residencia de datos

    curl -H "Authorization: Bearer $TOKEN" \
      "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$ORG_NAME/operations/$LONG_RUNNING_OPERATION_ID"

    En los siguientes ejemplos se muestran posibles respuestas a esta solicitud:

    IN_PROGRESS

    Si Apigee sigue creando la organización, responde con el estado IN_PROGRESS. Por ejemplo:

    {
      "name": "organizations/ORG_NAME/operations/LONG_RUNNING_OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.apigee.v1.OperationMetadata",
        "operationType": "INSERT",
        "targetResourceName": "organizations/ORG_NAME",
        "state": "IN_PROGRESS"
      }
    }

    Deberías esperar un poco más antes de intentar verificar que el proceso de creación se ha completado.

    TERMINADO

    Cuando se haya aprovisionado la organización, el estado de la operación de larga duración será FINISHED. Por ejemplo:

    {
      "name": "organizations/ORG_NAME/operations/LONG_RUNNING_OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.apigee.v1.OperationMetadata",
        "operationType": "INSERT",
        "targetResourceName": "organizations/ORG_NAME",
        "state": "FINISHED"
      },
      "done": true,
      "response": {
        "@type": "type.googleapis.com/google.cloud.apigee.v1.Organization",
        "name": "ORG_NAME",
        "description": "",
        "createdAt": "1626237148461",
        "lastModifiedAt": "1626237149384",
        "properties": {
          "property": [
            {
              "name": "features.hybrid.enabled",
              "value": "true"
            },
            {
              "name": "features.mart.connect.enabled",
              "value": "true"
            }
          ]
        },
        "analyticsRegion": "ANALYTICS_REGION",
        "runtimeType": "HYBRID",
        "subscriptionType": "TRIAL",
        "state": "ACTIVE",
        "billingType": "SUBSCRIPTION",
        "apiConsumerDataLocation": "CONSUMER_DATA_REGION",
        "expiresAt": "1631421073171",
        "addonsConfig": {
          "advancedApiOpsConfig": {},
          "integrationConfig": {},
          "monetizationConfig": {}
        }
      }
    }
  6. Puedes usar la API de organizaciones de Apigee para obtener información sobre una organización después de que se haya creado.

    Por ejemplo:

    Sin residencia de datos

    curl -H "Authorization: Bearer $TOKEN" \
      "https://apigee.googleapis.com/v1/organizations/$ORG_NAME"

    La respuesta a tu solicitud contiene detalles sobre la organización especificada en formato JSON.

    {
      "name": "apigee-example",
      "createdAt": "1626237148461",
      "lastModifiedAt": "1626237149384",
      "properties": {
        "property": [
          {
            "name": "features.hybrid.enabled",
            "value": "true"
          },
          {
            "name": "features.mart.connect.enabled",
            "value": "true"
          }
        ]
      },
      "analyticsRegion": "us-west1",
      "runtimeType": "HYBRID",
      "subscriptionType": "PAID",
      "projectId": "apigee-example",
      "state": "ACTIVE",
      "billingType": "SUBSCRIPTION",
      "expiresAt": "1631421073171",
      "addonsConfig": {
        "advancedApiOpsConfig": {},
        "integrationConfig": {},
        "monetizationConfig": {}
      }
    }

    Residencia de datos

    curl -H "Authorization: Bearer $TOKEN" \
      "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$ORG_NAME"

    La respuesta a tu solicitud contiene detalles sobre la organización especificada en formato JSON.

    {
      "name": "apigee-example",
      "createdAt": "1626237148461",
      "lastModifiedAt": "1626237149384",
      "properties": {
        "property": [
          {
            "name": "features.hybrid.enabled",
            "value": "true"
          },
          {
            "name": "features.mart.connect.enabled",
            "value": "true"
          }
        ]
      },
      "analyticsRegion": "us-west1",
      "runtimeType": "HYBRID",
      "subscriptionType": "PAID",
      "projectId": "apigee-example",
      "state": "ACTIVE",
      "billingType": "SUBSCRIPTION",
      "expiresAt": "1631421073171",
      "addonsConfig": {
        "advancedApiOpsConfig": {},
        "integrationConfig": {},
        "monetizationConfig": {}
      }
    }

Solucionar problemas de creación de organizaciones

Cuando creas una organización con la API Create organizations, es posible que recibas una respuesta de error. Las respuestas tienen este aspecto:

{
  "error": {
    "code": HTTP_error_code,
    "message": "short_error_message",
    "status": "high_level_error_type",
    "details": [
      {
        "@type": "specific_error_type",
        "detail": "expanded_error_description"
      }
    ]
  }
}

En la siguiente tabla se muestran los errores que puedes recibir y las posibles soluciones cuando intentas crear una organización:

Código de error HTTP Error HTTP Descripción
400 Invalid JSON payload received La estructura de los datos de tu solicitud contiene un error de sintaxis o la ruta al endpoint es incorrecta.
400 Invalid organization ID El ID de organización que solicite no puede contener letras mayúsculas ni caracteres especiales que no sean guiones. Solo puede contener letras minúsculas, números o guiones. Puede tener una longitud máxima de 32 caracteres.
400 Unsupported analytics region No ha especificado el valor de analyticsRegion en el cuerpo de la solicitud o el valor que ha especificado no es una de las opciones válidas.
400 Does not have an Apigee entitlement Tu proyecto de Google Cloud aún no se ha habilitado para el modo híbrido. Esto podría indicar que hay un problema con la facturación u otro error relacionado con tu cuenta de Google Cloud. Para obtener más información, ponte en contacto con el equipo de Ventas de Apigee.
400 'global' violates constraint in constraints/gcp.resourceLocations on the resource projects/PROJECT_ID, Control Plane Region Has intentado crear una organización que puede que no tenga derecho a una suscripción DE PAGO. Las organizaciones de tipo EVAL de Apigee Hybrid no admiten residencia de datos.
400 runtimeType HYBRID is not supported for PAYG_V2, use CLOUD instead: invalid argument Has intentado crear una organización en un proyecto con un derecho de "Pago por uso". Si tienes alguna pregunta sobre los derechos de la organización, ponte en contacto con tu representante de cuenta de Google Cloud.
401 Request had invalid authentication credentials Tu token de autenticación gcloud no es válido o está obsoleto, o no has incluido ninguno en la solicitud. Genera un token nuevo y vuelve a enviar la dirección.
403 Permission denied on resource project PROJECT_ID Es posible que hayas enviado una solicitud que contenía un ID o una ruta de proyecto incorrectos.
403 Unable to retrieve project information La organización aún no se ha creado ni aprovisionado. Puedes enviar una solicitud a la API Operations para comprobar el estado de la operación de larga duración, tal como se describe en el paso 5.
403 Permission denied on resource project organizations/PROJECT_ID/deployedIngressConfig Has intentado crear una organización, pero no tiene los derechos correctos. Si tienes alguna pregunta sobre los derechos de la organización, ponte en contacto con tu representante de cuenta de Google Cloud.
409 Organization already exists Has intentado crear más de una organización para el proyecto de Google Cloud. Solo puedes crear una organización por proyecto.
409 Org PROPOSED_ORG_NAME already exists Has intentado crear una organización con el mismo ID que otra que ya existe. Los IDs de organización deben ser únicos en todos los clientes híbridos. Vuelva a enviar el feed con un nuevo ID de organización propuesto. Por ejemplo, añada un valor numérico al final del ID anterior que ha intentado usar.

Paso siguiente

Ve al paso 3: Crea un grupo de entorno.