Aprovisione uma organização paga com intercâmbio da VPC

Aprovisione uma organização paga com intercâmbio da VPC

Esta página aplica-se ao Apigee, mas não ao Apigee Hybrid.

Veja a documentação do Apigee Edge.

Este documento descreve como instalar e configurar o Apigee a partir da linha de comandos com a interligação de VPCs. Estes passos aplicam-se aos modelos de preços de subscrição e de pagamento conforme o uso para organizações pagas com ou sem a residência de dados ativada.

Resumo dos passos

Os passos de aprovisionamento são os seguintes:

Passo 1: defina variáveis de ambiente

Configure o gcloud e defina variáveis de ambiente para utilização em passos posteriores:

  1. Certifique-se de que concluiu os requisitos de configuração indicados em Antes de começar.
  2. Tem de ter o Cloud SDK instalado. Se precisar de o instalar, consulte o artigo Instalar o SDK do Google Cloud.
  3. Inicialize o SDK do Google Cloud, conforme descrito em Inicializar a CLI gcloud, ou certifique-se de que o projeto do Google Cloud que criou em Pré-requisitos é o projeto predefinido para gcloud.
  4. Defina as seguintes variáveis de ambiente no terminal de comandos. Selecione o separador que corresponde ao tipo de organização de que precisa: Sem residência de dados ou com Residência de dados:

    Sem residência de dados

    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"

    Onde:

    • AUTH define o cabeçalho Authentication com um token de portador. Vai usar este cabeçalho quando chamar as APIs Apigee. Tenha em atenção que o token expira após um período e, quando isso acontece, pode regenerá-lo facilmente através do mesmo comando. Para mais informações, consulte a página de referência do comando print-access-token.
    • PROJECT_ID é o ID do projeto do Google Cloud que criou como parte dos Pré-requisitos.
    • PROJECT_NUMBER é o número do projeto do Google Cloud que criou como parte dos Pré-requisitos.
    • RUNTIME_LOCATION é a localização física onde a instância do Apigee que vai criar mais tarde está localizada. Para ver uma lista das localizações de tempo de execução disponíveis, consulte o artigo Localizações do Apigee.

    • ANALYTICS_REGION é a localização física na qual os dados de estatísticas do Apigee serão armazenados. Para ver uma lista das regiões da API Apigee Analytics disponíveis, consulte o artigo Localizações da Apigee.

      RUNTIME_LOCATION e ANALYTICS_REGION podem ser a mesma região, mas não têm de ser.

    • BILLING_TYPE é o tipo de faturação da organização que cria. Os valores válidos são:

    Residência dos dados

    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"

    Onde:

    • AUTH define o cabeçalho Authentication com um token de portador. Vai usar este cabeçalho quando chamar as APIs Apigee. Tenha em atenção que o token expira após um período e, quando isso acontece, pode regenerá-lo facilmente através do mesmo comando. Para mais informações, consulte a página de referência do comando print-access-token.
    • PROJECT_ID é o ID do projeto do Google Cloud que criou como parte dos Pré-requisitos.
    • PROJECT_NUMBER é o número do projeto do Google Cloud que criou como parte dos Pré-requisitos.
    • RUNTIME_LOCATION é a localização física onde a instância do Apigee que vai criar mais tarde está localizada. Para ver uma lista das localizações de tempo de execução disponíveis, consulte o artigo Localizações do Apigee.

      A localização do tempo de execução tem de estar dentro da localização do plano de controlo.
    • CONTROL_PLANE_LOCATION é a localização física na qual os dados do plano de controlo do Apigee são armazenados. Para ver uma lista de localizações do plano de controlo disponíveis, consulte o artigo Localizações do Apigee.
    • CONSUMER_DATA_REGION é uma sub-região da região do plano de controlo. Tem de especificar a CONTROL_PLANE_LOCATION e a CONSUMER_DATA_REGION. Para ver uma lista das regiões de dados de consumidores disponíveis, consulte as localizações do Apigee.
    • BILLING_TYPE é o tipo de faturação da organização que cria. Os valores válidos são:

  5. (Opcional) Verifique o seu trabalho repetindo os valores que acabou de definir. Tenha em atenção que, quando quiser usar uma variável nos seus comandos, preceda o nome da variável com um cifrão ($).

    Sem residência de dados

    echo $AUTH
    echo $PROJECT_ID
    echo $PROJECT_NUMBER
    echo $RUNTIME_LOCATION
    echo $ANALYTICS_REGION
    echo $BILLING_TYPE
    

    As respostas aos seus comandos echo devem ter um aspeto semelhante ao seguinte:

    YOUR_TOKEN
    my-cloud-project
    1234567890
    us-west1
    us-west1
    SUBSCRIPTION
    

    Residência dos dados

    echo $AUTH
    echo $PROJECT_ID
    echo $PROJECT_NUMBER
    echo $RUNTIME_LOCATION
    echo $CONTROL_PLANE_LOCATION
    echo $CONSUMER_DATA_REGION
    echo $BILLING_TYPE
    

    As respostas aos seus comandos echo devem ter um aspeto semelhante ao seguinte:

    YOUR_TOKEN
    my-cloud-project
    1234567890
    us-west1
    us
    us-west1
    SUBSCRIPTION
    

Passo 2: ative as APIs

  1. O Apigee requer que ative várias APIs Google Cloud. Ative-as executando o seguinte comando services enable:

    gcloud services enable apigee.googleapis.com \
        servicenetworking.googleapis.com \
        apihub.googleapis.com \
        compute.googleapis.com \
        cloudkms.googleapis.com --project=$PROJECT_ID
  2. (Opcional) Para verificar o seu trabalho, use o comando services list para mostrar todas as APIs ativadas:

    gcloud services list

    A resposta mostra todos os serviços ativados, incluindo as APIs que acabou de ativar.

Passo 3: crie a identidade do serviço Apigee

  1. Crie a identidade do serviço Apigee:

    gcloud beta services identity create --service=apigee.googleapis.com \
      --project=$PROJECT_ID
  2. Verifique se o agente foi criado com êxito. A resposta deve apresentar o nome do agente no seguinte formato: service-PROJECT_NUMBER@gcp-sa-apigee.iam.gserviceaccount.com. por exemplo:

    Service identity created: service-1234567890@gcp-sa-apigee.iam.gserviceaccount.com

Passo 4: configure a rede de serviços

Neste passo, atribui um par de intervalos de endereços IP (um intervalo CIDR /22 e /28) ao Apigee e faz o peering de VPC entre a sua rede e a rede do Apigee. Cada instância do Apigee requer um intervalo CIDR não sobreposto de /22 e /28. Ao plano de tempo de execução do Apigee são atribuídos endereços IP dentro deste intervalo CIDR. Como resultado, é importante que o intervalo esteja reservado para o Apigee e não seja usado por outras aplicações na sua rede VPC. Para mais informações e considerações importantes, consulte o artigo Compreender os intervalos de peering.

Tenha em atenção que está a criar um intervalo de IPs de rede suficiente para uma instância do Apigee. Se planear criar instâncias adicionais do Apigee, tem de repetir este passo para cada uma delas. Não é possível partilhar os intervalos entre instâncias. Consulte também o artigo Expansão do Apigee para várias regiões.

  1. Crie estas variáveis de ambiente:
    RANGE_NAME=YOUR_RANGE_NAME
    NETWORK_NAME=YOUR_NETWORK_NAME
    

    Onde:

    • RANGE_NAME é o nome do intervalo de endereços IP que está a criar. Pode atribuir o nome que quiser ao intervalo. Por exemplo: google-svcs
    • NETWORK_NAME é o nome do recurso de rede no qual os endereços devem ser reservados.

      A Google cria uma rede predefinida (denominada default) para cada novo projeto, para que a possa usar. No entanto, a Google não recomenda a utilização da rede predefinida para fins que não sejam testes.

  2. Crie um intervalo de IP de rede com um comprimento 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_ID

    Onde --addresses lhe permite especificar opcionalmente um intervalo de moradas. Por exemplo, para atribuir o bloco CIDR 192.168.0.0/22, especifique 192.168.0.0 para o endereço e 22 para o comprimento do prefixo. Consulte também Criar uma atribuição de IP.

    Se não fornecer o parâmetro --addresses, o gcloud seleciona um intervalo de endereços disponível para si.

    Em caso de êxito, o gcloud responde com o seguinte:

    Created [https://www.googleapis.com/compute/v1/projects/PROJECT_NAME/global/addresses/google-svcs].

    Depois de criar um intervalo de endereços IP, os endereços são associados ao projeto até os libertar.

  3. Verifique se o intervalo de IPs da rede foi criado com um comprimento CIDR de /22:
    gcloud compute addresses list --global --project=$PROJECT_ID
    gcloud compute addresses describe $RANGE_NAME --global --project=$PROJECT_ID
  4. Crie um intervalo de IP de rede com um comprimento CIDR de /28. Este intervalo é obrigatório e é usado pelo Apigee para fins de resolução de problemas, e não pode ser personalizado nem alterado.
    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_ID

    Onde --addresses lhe permite especificar opcionalmente um intervalo de moradas. Por exemplo, para atribuir o bloco CIDR 192.168.0.0/28, especifique 192.168.0.0 para o endereço e 28 para o comprimento do prefixo. Consulte também Criar uma atribuição de IP.

    Se não fornecer o parâmetro --addresses, o gcloud seleciona um intervalo de endereços disponível para si.

  5. Verifique se o intervalo de IPs da rede foi criado com um comprimento CIDR de /28:
    gcloud compute addresses list --global --project=$PROJECT_ID
    gcloud compute addresses describe google-managed-services-support-1 --global \
      --project=$PROJECT_ID
  6. Associe os seus serviços à rede através do seguinte 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 operação pode demorar alguns minutos a ser concluída. Em caso de êxito, gcloud responde com o seguinte, em que OPERATION_ID é o UUID da LRO.

    Operation "operations/OPERATION_ID" finished successfully.
  7. O Apigee cria uma ligação entre a sua rede e os serviços da Google; especificamente, o Apigee liga o seu projeto à API Service Networking através do intercâmbio de VPC. O Apigee também associa endereços IP ao seu projeto.

  8. Após alguns minutos, verifique se o peering de VPC foi bem-sucedido:
    gcloud services vpc-peerings list \
      --network=$NETWORK_NAME \
      --service=servicenetworking.googleapis.com \
      --project=$PROJECT_ID

Passo 5: crie uma organização

Antes de poder criar uma organização, tem de criar um conjunto de chaves e uma chave de encriptação da base de dados de tempo de execução (consulte o passo 1) e, se estiver a usar a residência de dados, conjuntos de chaves e chaves de encriptação do plano de controlo (consulte o passo 2). Estas chaves do Cloud KMS encriptam os dados armazenados e replicados nas localizações de tempo de execução e plano de controlo. O Apigee usa estas entidades para encriptar dados de aplicações, como KVMs, cache e segredos de clientes, que são armazenados na base de dados. Para mais informações, consulte o artigo Acerca das chaves de encriptação do Apigee.

  1. Crie um conjunto de chaves e uma chave de encriptação de base de dados de tempo de execução.

    1. Defina uma variável de ambiente para a localização do anel de encriptação e da chave da base de dados de tempo de execução. Isto ajuda a garantir a consistência quando os cria e facilita o acompanhamento na documentação.

      O valor é a localização física onde o conjunto de chaves de encriptação da base de dados de tempo de execução e a chave são armazenados.

      Região única

      Configurações de região única (nas quais tem apenas uma instância numa região): escolha entre as localizações regionais do KMS suportadas.

      Por exemplo:

      RUNTIMEDBKEY_LOCATION="us-west1"

      O valor pode ser o mesmo que o seu $RUNTIME_LOCATION (também uma região), mas não tem de o ser. No entanto, pode haver uma vantagem em termos de desempenho se forem iguais.

      Multirregião

      Configurações multirregionais: escolha entre as localizações multirregionais suportadas (como us ou europe) ou localizações birregionais.

      Por exemplo:

      RUNTIMEDBKEY_LOCATION="us"

      Recomendamos que, se tiver uma configuração multirregional nos EUA, use us para a sua localização, se possível. Caso contrário, use nam4.

    2. Defina variáveis de ambiente para os conjuntos de chaves e os nomes das chaves da base de dados.

      O nome do conjunto de chaves tem de ser exclusivo da sua organização. Se criar uma segunda ou uma região subsequente, o nome não pode ser igual ao de outros nomes de conjuntos de chaves.

      RUNTIMEDB_KEY_RING_NAME=YOUR_DB_KEY_RING_NAME
      RUNTIMEDB_KEY_NAME=YOUR_DB_KEY_NAME
    3. (Opcional) Verifique o seu trabalho repetindo os valores que acabou de definir. Lembre-se de que, quando quiser usar uma variável nos seus comandos, deve preceder o nome da variável com um cifrão ($).
      echo $RUNTIMEDBKEY_LOCATION
      echo $RUNTIMEDB_KEY_RING_NAME
      echo $RUNTIMEDB_KEY_NAME
    4. Crie um novo conjunto de chaves:
      gcloud kms keyrings create $RUNTIMEDB_KEY_RING_NAME \
        --location $RUNTIMEDBKEY_LOCATION --project $PROJECT_ID

      A localização da chave de encriptação da base de dados de tempo de execução do Apigee é compatível com todas as localizações do Cloud KMS que suportam o Cloud HSM e o Cloud EKM.

    5. Crie uma chave:

      gcloud kms keys create $RUNTIMEDB_KEY_NAME \
        --keyring $RUNTIMEDB_KEY_RING_NAME \
        --location $RUNTIMEDBKEY_LOCATION \
        --purpose "encryption" \
        --project $PROJECT_ID

      Este comando cria a chave e adiciona-a ao conjunto de chaves.

      Obtenha o ID da chave:

      gcloud kms keys list \
        --location=$RUNTIMEDBKEY_LOCATION \
        --keyring=$RUNTIMEDB_KEY_RING_NAME \
        --project=$PROJECT_ID

      O ID da chave tem a seguinte sintaxe (semelhante a um caminho de ficheiro):

      projects/PROJECT_ID/locations/RUNTIMEDBKEY_LOCATION/keyRings/RUNTIMEDB_KEY_RING_NAME/cryptoKeys/RUNTIMEDB_KEY_NAME
    6. Coloque o ID da chave numa variável de ambiente. Vai usar esta variável num comando posterior:

      RUNTIMEDB_KEY_ID=YOUR_RUNTIMEDB_KEY_ID
    7. Conceda acesso ao agente do serviço Apigee para usar a nova chave:

      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 associa a chave ao agente de serviço do Apigee.

      Após a conclusão bem-sucedida deste pedido, o gcloud responde com algo semelhante ao seguinte:

      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

      Se receber um erro como o seguinte:

      INVALID_ARGUMENT: Role roles/cloudkms.cryptokms.cryptoKeyEncrypterDecrypter is not supported for this resource.

      Certifique-se de que usou o número do projeto e não o nome do projeto no endereço de email da conta de serviço.

  2. Se estiver a usar a residência de dados, crie um conjunto de chaves de encriptação do plano de controlo e uma chave. Se não estiver a usar a residência de dados, avance para o passo 3.
  3. Execute os passos seguintes para criar um conjunto de chaves e uma chave de encriptação do plano de controlo.

    1. Defina uma variável de ambiente para a localização do anel e da chave de encriptação da base de dados do plano de controlo:
      CONTROL_PLANE_LOCATION=YOUR_CONTROL_PLANE_LOCATION
      CONSUMER_DATA_REGION=YOUR_CONSUMER_DATA_REGION

      Onde:

      • CONTROL_PLANE_LOCATION é a localização física na qual os dados do plano de controlo do Apigee são armazenados. Para ver uma lista de localizações do plano de controlo disponíveis, consulte o artigo Localizações do Apigee.
      • CONSUMER_DATA_REGION é uma sub-região da região do plano de controlo. Tem de especificar a CONTROL_PLANE_LOCATION e a CONSUMER_DATA_REGION. Para ver uma lista das regiões de dados de consumidores disponíveis, consulte as localizações do Apigee.
    2. Defina variáveis de ambiente para os conjuntos de chaves e os nomes das chaves da base de dados do plano de controlo.

      O nome do conjunto de chaves tem de ser exclusivo da sua organização.

      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

      Onde:

      • CONTROL_PLANE_KEY_RING_NAME é o nome do conjunto de chaves que vai usar para identificar o seu conjunto de chaves de encriptação do plano de controlo.
      • CONTROL_PLANE_KEY_NAME é o nome da chave que vai usar para identificar a sua chave de encriptação do plano de controlo.
      • CONSUMER_DATA_KEY_RING_NAME é o nome do conjunto de chaves que vai usar para identificar o seu conjunto de chaves de encriptação da região de dados do consumidor.
      • CONSUMER_DATA_KEY_NAME é o nome da chave que vai usar para identificar a chave de encriptação da sua região de dados do consumidor.
    3. Crie um novo conjunto de chaves:
      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
    4. Crie uma chave:
      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

      Este comando cria a chave e adiciona-a ao conjunto de chaves.

      Obtenha o ID da chave:

      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

      O ID da chave tem a seguinte sintaxe (semelhante a um caminho de ficheiro):

      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
    5. Coloque o ID da chave numa variável de ambiente. Vai usar esta variável num comando posterior:
      CONTROL_PLANE_KEY_ID=YOUR_CONTROL_PLANE_KEY_ID
      
      CONSUMER_DATA_KEY_ID=YOUR_CONSUMER_DATA_KEY_ID
    6. Conceda acesso ao agente do serviço Apigee para usar a nova chave:
      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 associa a chave ao agente de serviço do Apigee. Após a conclusão bem-sucedida deste pedido, o gcloud responde com algo semelhante ao seguinte:

      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

      Se receber um erro como o seguinte:

      INVALID_ARGUMENT: Role roles/cloudkms.cryptokms.cryptoKeyEncrypterDecrypter is not supported for this resource.

      Certifique-se de que usou o número do projeto e não o nome do projeto no endereço de email da conta de serviço.

    Veja também: Resolução de problemas de CMEK.

  4. Crie a organização enviando o seguinte pedido à API organizations do Apigee:

    Sem residência de dados

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

    Onde:

    • -d define o payload de dados para o pedido. Este payload tem de incluir o seguinte:
      • name: identifica a sua nova organização. Tem de ser o mesmo nome que o ID do projeto.

      • analyticsRegion: especifica a localização física onde os seus dados de estatísticas serão armazenados.

      • runtimeType: defina este valor como CLOUD.
      • billingType: especifica o tipo de faturação da organização criada.
      • authorizedNetwork: identifica a rede de peering que especificou em Configurar redes de serviços.
      • runtimeDatabaseEncryptionKeyName: O ID da chave de encriptação da aplicação que criou no passo anterior. Lembre-se de que o ID está estruturado como um caminho de ficheiro. Por exemplo:
        projects/my-project/locations/us-west1/keyRings/my-key-ring/cryptoKeys/my-key

    Residência dos dados

    Crie uma organização através da 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"'"
      }'

    Onde:

    -d define o payload de dados para o pedido. Este payload tem de incluir o seguinte:

    • name: identifica a sua nova organização. Tem de ser o mesmo nome que o ID do projeto.
    • runtimeType: defina este valor como CLOUD.
    • billingType: especifica o tipo de faturação da organização criada.
    • controlPlaneEncryptionKeyName: é o ID da chave do plano de controlo.
    • apiConsumerDataLocation: também tem de especificar uma sub-região para utilização por recursos internos. Consulte as Regiões de residência dos dados para ver os valores suportados.
    • apiConsumerDataEncryptionKeyName: é o ID da chave da região de dados do consumidor.
    • authorizedNetwork: identifica a rede de peering que especificou em Configurar redes de serviços.
    • runtimeDatabaseEncryptionKeyName: O ID da chave de encriptação da aplicação que criou no passo anterior. Lembre-se de que o ID tem a estrutura de um caminho de ficheiro. Por exemplo:
      projects/my-project/locations/us-west1/keyRings/my-key-ring/cryptoKeys/my-key

    Depois de executar este comando, o Apigee inicia uma operação de longa duração, que pode demorar alguns minutos a ser concluída.

    Se receber um erro, verifique a utilização de aspas em torno dos valores das variáveis no payload de dados. Certifique-se de que tem aspas duplas-simples-duplas à volta da variável $PROJECT_ID, como mostra o exemplo seguinte:

    "'"$PROJECT_ID"'"

    Se usar strings simples (não variáveis de ambiente) para valores de pedidos, pode envolvê-las em aspas duplas na string de payload entre aspas simples, como mostra o exemplo seguinte:

    '{ "name":"my-gcp-project", ... }'
  5. Aguarde alguns minutos.
  6. Para verificar o estado do seu pedido de criação, pode enviar um pedido GET para a API List organizations do Apigee, conforme mostra o exemplo seguinte:

    Sem residência de dados

    curl -H "Authorization: Bearer $AUTH" "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID"

    Residência dos dados

    curl -H "Authorization: Bearer $AUTH" "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$PROJECT_ID"

    Se vir esta resposta, significa que a criação da organização ainda não foi concluída:

    {
      "error": {
        "code": 403,
        "message": "Permission denied on resource \"organizations/apigee-docs-m\" (or it may not exist)",
        "status": "PERMISSION_DENIED"
      }
    }

    Se o Apigee tiver criado com êxito uma nova organização, recebe uma resposta semelhante à seguinte:

    Sem residência de dados

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

    Residência dos dados

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

    Se o Apigee devolver uma resposta de erro HTTP, consulte o artigo Criar uma organização do Apigee.