Étape 2 : Créez une organisation

Cette étape consiste à créer une organisation Apigee.

Pour créer une organisation et la provisionner, procédez comme suit :

  1. Sur la ligne de commande, obtenez vos identifiants d'authentification gcloud à l'aide de la commande suivante :

    Linux/MacOS

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

    Pour vérifier que votre jeton a été renseigné, utilisez echo, comme le montre l'exemple suivant :

    echo $TOKEN

    Votre jeton doit s'afficher sous forme de chaîne encodée.

    Windows

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

    Pour vérifier que votre jeton a été renseigné, utilisez echo, comme le montre l'exemple suivant :

    echo %TOKEN%

    Votre jeton doit s'afficher sous forme de chaîne encodée.

  2. À l'étape 1, vous avez créé la variable d'environnement PROJECT_ID. Ajoutez les variables d'environnement suivantes. Sélectionnez l'onglet correspondant au type d'organisation dont vous avez besoin : Sans résidence des données ou avec Résidence des données :

    Sans résidence des données

    Linux/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

    Où :

    • ORG_NAME (obligatoire) : cette valeur doit correspondre à l'identifiant PROJECT_ID.
    • ANALYTICS_REGION (obligatoire) : région principale pour le stockage des données d'analyse. Pour obtenir la liste des régions Apigee API Analytics disponibles, consultez la page Emplacements Apigee.
    • RUNTIMETYPE (obligatoire) : doit être défini sur HYBRID.

    Résidence des données

    Linux/MacOS

    export ORG_NAME=$PROJECT_ID
    export ANALYTICS_REGION="ANALYTICS_REGION"
    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 ANALYTICS_REGION="ANALYTICS_REGION"
    set RUNTIMETYPE=HYBRID
    set CONTROL_PLANE_LOCATION="YOUR_CONTROL_PLANE_LOCATION"
    set CONSUMER_DATA_REGION="YOUR_CONSUMER_DATA_REGION"
    set BILLING_TYPE="SUBSCRIPTION"

    Où :

    • ORG_NAME : cette valeur doit correspondre au paramètre PROJECT_ID.
    • ANALYTICS_REGION : région principale pour le stockage des données d'analyse. Pour obtenir la liste des régions Apigee API Analytics disponibles, consultez la page Emplacements Apigee.
    • RUNTIMETYPE : Doit être défini sur HYBRID.
    • CONTROL_PLANE_LOCATION: emplacement où est stocké le contenu principal du client, tel que les groupes de proxys. Pour obtenir la liste, consultez la section Régions du plan de contrôle de l'API Apigee disponibles.
    • CONSUMER_DATA_REGION : sous-région de la région du plan de contrôle. Vous devez spécifier à la fois CONTROL_PLANE_LOCATION et CONSUMER_DATA_REGION. Pour obtenir la liste des régions de données client disponibles, consultez la section Emplacements Apigee.
    • BILLING_TYPE : Doit être défini sur "SUBSCRIPTION". Il s'agit du type de facturation de votre organisation Apigee hybrid. Pour en savoir plus, consultez la section Droits d'abonnement.

    Exemple :

    export ORG_NAME=$PROJECT_ID
    export ANALYTICS_REGION="us-west1"
    export RUNTIMETYPE=HYBRID
    export CONSUMER_DATA_REGION="us-west1"
    export CONTROL_PLANE_LOCATION="us"
    export BILLING_TYPE="SUBSCRIPTION"
    
  3. Appelez l'API Apigee suivante pour créer l'organisation :

    Sans résidence des données

    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"

    Résidence des données

    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"'",
        "analyticsRegion":"'"$ANALYTICS_REGION"'"
      }' \
      "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations?parent=projects/$PROJECT_ID"

    Si la requête de création aboutit, l'API Organizations renvoie un message semblable à celui-ci :

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

    Où :

    • LONG_RUNNING_OPERATION_ID est l'UUID d'une opération asynchrone de longue durée. Vous pouvez utiliser cet ID pour vérifier l'état de votre demande de création d'organisation (décrite à l'étape 5).
    • org_name est l'ID de votre nouvelle organisation en cours de création.

    Comme l'indique la propriété state dans la réponse, Apigee a commencé à créer la nouvelle organisation. Son état est donc IN_PROGRESS. Ce processus peut prendre plusieurs minutes.

    Si vous recevez un message d'erreur, consultez la section Résoudre des problèmes de création d'organisation.

  4. Enregistrez l'ID de l'opération de longue durée dans une variable d'environnement. Vous en aurez besoin ultérieurement pour des tâches de gestion.

    Syntaxe

    export LONG_RUNNING_OPERATION_ID=LONG_RUNNING_OPERATION_ID

    Exemple

    export LONG_RUNNING_OPERATION_ID=6abc8a72-46de-f9da-bcfe-70d9ab347e4f
  5. Vous pouvez vérifier l'état de l'opération de longue durée dont l'ID a été renvoyé par la requête de création. Pour ce faire, utilisez l'API Operations. Par exemple,
    .

    Sans résidence des données

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

    Les exemples suivants illustrent les réponses possibles à cette requête :

    IN_PROGRESS (EN_COURS)

    Si l'organisation est toujours en cours de création, Apigee répond avec l'état IN_PROGRESS. Exemple :

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

    Vous devez attendre quelques instants avant de tenter de vérifier que le processus de création est terminé.

    FINISHED

    Une fois l'organisation provisionnée, l'état de l'opération de longue durée est FINISHED. Exemple :

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

    Résidence des données

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

    Les exemples suivants illustrent les réponses possibles à cette requête :

    IN_PROGRESS (EN_COURS)

    Si l'organisation est toujours en cours de création, Apigee répond avec l'état IN_PROGRESS. Exemple :

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

    Vous devez attendre quelques instants avant de tenter de vérifier que le processus de création est terminé.

    FINISHED

    Une fois l'organisation provisionnée, l'état de l'opération de longue durée est FINISHED. Exemple :

    {
      "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. Vous pouvez utiliser l'API Organizations d'Apigee pour récupérer des informations sur une organisation après sa création.

    Exemple :

    Sans résidence des données

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

    La réponse à votre requête contient des détails sur l'organisation spécifiée, au format 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": {}
      }
    }

    Résidence des données

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

    La réponse à votre requête contient des détails sur l'organisation spécifiée, au format 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": {}
      }
    }

Résoudre les problèmes de création d'organisation

Lorsque vous créez une organisation avec l'API Create Organizations, vous pouvez obtenir une réponse d'erreur. Les réponses se présentent comme suit :

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

Le tableau suivant répertorie les erreurs que vous pouvez recevoir et les solutions potentielles lorsque vous essayez de créer une organisation :

Code d'erreur HTTP Erreur HTTP Description
400 Invalid JSON payload received Soit la structure des données de votre requête contient une erreur de syntaxe, soit le chemin d'accès au point de terminaison est incorrect.
400 Invalid organization ID L'ID d'organisation que vous demandez ne peut pas contenir de lettres majuscules ou de caractères spéciaux autres que des traits d'union. Il ne doit contenir que des lettres minuscules, des chiffres et/ou des traits d'union. Il peut comporter jusqu'à 32 caractères.
400 Unsupported analytics region Vous n'avez pas spécifié la valeur de analyticsRegion dans le corps de la requête, ou la valeur que vous avez spécifiée n'est pas l'une des options valides.
400 Does not have an Apigee entitlement Votre projet Google Cloud (que vous avez créé à l'Étape 2 : Créer un projet Google Cloud) n'a pas encore été activé pour le mode hybride. Il peut s'agir d'un problème lié à votre facturation ou à une autre erreur liée à votre compte Google Cloud. Pour en savoir plus, contactez le service commercial d'Apigee.
400 'global' violates constraint in constraints/gcp.resourceLocations on the resource projects/PROJECT_ID, Control Plane Region Vous avez essayé de créer une organisation qui n'est peut-être pas éligible avec un abonnement payant. Les organisations Apigee Hybrid de type EVAL ne sont pas compatibles avec la résidence des données.
400 runtimeType HYBRID is not supported for PAYG_V2, use CLOUD instead: invalid argument Vous avez essayé de créer une organisation pour un projet avec un droit d'accès "Payer à l'usage". Si vous avez des questions sur les droits d'accès de l'organisation, contactez votre responsable de compte Google Cloud.
401 Request had invalid authentication credentials Votre jeton d'authentification gcloud est incorrect ou obsolète, ou vous n'en avez pas inclus dans la requête. Générez un nouveau jeton et renvoyez l'adresse.
403 Permission denied on resource project PROJECT_ID Vous avez peut-être envoyé une requête contenant un chemin d'accès ou ID de projet incorrect.
403 Unable to retrieve project information L'organisation n'a pas encore été créée ni provisionnée. Vous pouvez envoyer une requête à l'API Operations pour vérifier l'état de l'opération de longue durée, comme décrit à l'étape 5.
403 Permission denied on resource project organizations/PROJECT_ID/deployedIngressConfig Vous avez essayé de créer une organisation, mais elle ne dispose pas des droits appropriés. Si vous avez des questions sur les droits d'accès de l'organisation, contactez votre responsable de compte Google Cloud.
409 Organization already exists Vous avez essayé de créer plusieurs organisations pour le projet Google Cloud. Vous ne pouvez créer qu'une seule organisation par projet.
409 Org PROPOSED_ORG_NAME already exists Vous avez essayé de créer une organisation portant le même ID qu'une organisation existante. Les ID d'organisation doivent être uniques pour tous les clients hybrides. Envoyez une nouvelle demande avec un nouvel ID d'organisation proposé. Par exemple, ajoutez une valeur numérique à la fin de l'ID que vous avez essayé précédemment.

Étape suivante

Accédez à l'étape 3 : Créer un groupe d'environnements.