Etapa 2: criar uma organização

Nesta etapa, você cria uma organização da Apigee.

Para criar uma nova organização e provisioná-la:

  1. Na linha de comando, receba as credenciais de autenticação de gcloud usando o comando a seguir:

    Linux / MacOS

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

    Para verificar se o token foi preenchido, use echo, como mostra o exemplo a seguir:

    echo $TOKEN

    Isso exibirá seu token como uma string codificada.

    Windows

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

    Para verificar se o token foi preenchido, use echo, como mostra o exemplo a seguir:

    echo %TOKEN%

    Isso exibirá seu token como uma string codificada.

  2. Na Etapa 1, você criou a variável de ambiente PROJECT_ID. Adicione as variáveis de ambiente a seguir. Selecione a guia correspondente ao tipo de organização necessário: Sem residência de dados ou com Residência de dados:

    Sem residência de dados

    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

    Em que:

    • ORG_NAME (obrigatório): esse valor precisa corresponder a PROJECT_ID.
    • ANALYTICS_REGION (obrigatório): a região principal para armazenamento de dados de análise. Para conferir uma lista de regiões disponíveis do Apigee API Analytics, consulte os locais da Apigee.
    • RUNTIMETYPE (obrigatório): precisa ser definido como HYBRID.

    Residência dos dados

    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"

    Em que:

    • ORG_NAME: esse valor precisa corresponder a PROJECT_ID.
    • ANALYTICS_REGION: a região principal para armazenamento de dados de análise. Para conferir uma lista de regiões disponíveis do Apigee API Analytics, consulte os locais da Apigee.
    • RUNTIMETYPE: precisa ser definido como HYBRID.
    • CONTROL_PLANE_LOCATION: o local onde o conteúdo principal do cliente, como pacotes de proxy, é armazenado. Para uma lista, consulte Regiões disponíveis do plano de controle da API Apigee.
    • CONSUMER_DATA_REGION: uma sub-região da região do plano de controle. É preciso especificar CONTROL_PLANE_LOCATION e CONSUMER_DATA_REGION. Para ver uma lista de regiões de dados do consumidor disponíveis, consulte Locais da Apigee.
    • BILLING_TYPE: precisa ser definido como "SUBSCRIPTION". Este é o tipo de faturamento da sua organização da Apigee híbrida. Consulte Direitos de assinatura para mais informações.

    Exemplo:

    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. Chame a seguinte API da Apigee para criar a organização:

    Sem residência de dados

    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"

    Residência dos dados

    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"

    Em uma solicitação de criação bem-sucedida, a API das organizações responde com uma mensagem semelhante a esta:

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

    Em que:

    • LONG_RUNNING_OPERATION_ID é o UUID de uma operação assíncrona e de longa duração. É possível usar esse ID para verificar o status da solicitação de criação da organização (descrito na etapa 5).
    • org_name é o ID da sua nova organização que está sendo criada.

    Como a propriedade state na resposta indica que a Apigee começou a criar a nova organização, o estado dela é IN_PROGRESS. Esse processo pode levar vários minutos.

    Se você receber um erro, consulte Como solucionar problemas na criação da organização.

  4. Salve o ID da operação de longa duração em uma variável de ambiente. Ele será útil para tarefas de gerenciamento futuras.

    Sintaxe

    export LONG_RUNNING_OPERATION_ID=LONG_RUNNING_OPERATION_ID

    Exemplo

    export LONG_RUNNING_OPERATION_ID=6abc8a72-46de-f9da-bcfe-70d9ab347e4f
  5. É possível verificar o status da operação de longa duração em que o ID foi retornado pela solicitação de criação. Para isso, use a API de operações. Por exemplo:

    Sem residência de dados

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

    Os exemplos a seguir mostram possíveis respostas a essa solicitação:

    IN_PROGRESS

    Se a Apigee ainda estiver criando a organização, ela responderá com um status IN_PROGRESS. Exemplo:

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

    Aguarde um pouco mais antes de tentar verificar se o processo de criação foi concluído.

    FINISHED

    Quando a organização foi provisionada, o estado da operação de longa duração era FINISHED. Exemplo:

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

    Residência dos dados

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

    Os exemplos a seguir mostram possíveis respostas a essa solicitação:

    IN_PROGRESS

    Se a Apigee ainda estiver criando a organização, ela responderá com um status IN_PROGRESS. Exemplo:

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

    Aguarde um pouco mais antes de tentar verificar se o processo de criação foi concluído.

    FINISHED

    Quando a organização foi provisionada, o estado da operação de longa duração era FINISHED. Exemplo:

    {
      "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. É possível usar a API das organizações da Apigee para recuperar informações sobre uma organização após a criação.

    Exemplo:

    Sem residência de dados

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

    A resposta à sua solicitação contém detalhes sobre a organização especificada no 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": {}
      }
    }

    Residência dos dados

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

    A resposta à sua solicitação contém detalhes sobre a organização especificada no 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": {}
      }
    }

Como solucionar problemas na criação da organização

Ao criar uma organização com a API Create Organizations, você talvez receba uma resposta de erro. As respostas têm a seguinte aparência:

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

A tabela a seguir lista os erros que você pode receber e as possíveis resoluções ao tentar criar uma nova organização:

Código de erro HTTP Erro HTTP Descrição
400 Invalid JSON payload received A estrutura dos dados na solicitação contém um erro de sintaxe ou o caminho para o endpoint está incorreto.
400 Invalid organization ID O ID da organização solicitado não pode conter letras maiúsculas ou quaisquer caracteres especiais diferentes de hífens. Ele precisa conter apenas letras minúsculas, números e/ou hífens. Ele pode ter até um máximo de 32 caracteres.
400 Unsupported analytics region Você não especificou o valor de analyticsRegion no corpo da solicitação ou o valor especificado não é uma das opções válidas.
400 Does not have an Apigee entitlement Seu projeto do Google Cloud (criado na Etapa 2: criar um projeto do Google Cloud) ainda não foi ativado como híbrida. Isso pode indicar um problema com seu faturamento ou algum outro erro relacionado à sua conta do Google Cloud. Para mais informações, entre em contato com a equipe de vendas da Apigee.
400 'global' violates constraint in constraints/gcp.resourceLocations on the resource projects/PROJECT_ID, Control Plane Region Você tentou criar uma organização que não tem direito a uma assinatura PAID. As organizações da Apigee híbrida do tipo EVAL não oferecem suporte à Residência de dados.
400 runtimeType HYBRID is not supported for PAYG_V2, use CLOUD instead: invalid argument Você tentou criar uma organização em um projeto com um direito de acesso de pagamento por utilização (PAYG, na sigla em inglês). Entre em contato com o representante da sua conta do Google Cloud para tirar dúvidas sobre os direitos da organização.
401 Request had invalid authentication credentials Seu token de autenticação gcloud está incorreto ou desatualizado ou não foi incluído na solicitação. Gere um novo token e reenvie o endereço.
403 Permission denied on resource project PROJECT_ID Você pode ter enviado uma solicitação que continha um caminho ou ID de projeto incorreto.
403 Unable to retrieve project information A organização ainda não foi criada ou provisionada. É possível emitir uma solicitação para a API Operations a fim de verificar o status da operação de longa duração, conforme descrito na etapa 5.
403 Permission denied on resource project organizations/PROJECT_ID/deployedIngressConfig Você tentou criar uma organização, mas ela não tem os direitos corretos. Entre em contato com o representante da sua conta do Google Cloud para tirar dúvidas sobre os direitos da organização.
409 Organization already exists Você tentou criar mais de uma organização para o projeto do Google Cloud. Você só pode criar uma organização por projeto.
409 Org PROPOSED_ORG_NAME already exists Você tentou criar uma organização que tem o mesmo ID que uma que já existe. Os IDs de organização precisam ser exclusivos em todos os clientes híbridos. Reenviar com um novo ID da organização proposto. Por exemplo, anexe um valor numérico ao final do ID anterior que você tentou.

Próxima etapa

Acesse a Etapa 3: Criar um grupo de ambiente.