Cette étape consiste à créer une organisation Apigee.
Pour créer une organisation et la provisionner, procédez comme suit :
-
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.
-
À 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'identifiantPROJECT_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 surHYBRID
.
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ètrePROJECT_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 surHYBRID
. 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 foisCONTROL_PLANE_LOCATION
etCONSUMER_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"
- 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 doncIN_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.
- 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
- 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": {} } } }
- 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.