Criar e atualizar instâncias de app

Depois de criar e implantar apps, é possível criar e atualizar essas instâncias de app usando o console ou a linha de comando do Google Cloud .

Criar uma instância de app

REST

Para criar uma instância de app, envie uma solicitação POST usando o método projects.locations.applications.createApplicationInstances.

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • PROJECT_NUMBER: o número do projeto do Google Cloud.
  • LOCATION_ID: a região em que você está usando a Vertex AI Vision. Por exemplo: us-central1, europe-west4. Consulte as regiões disponíveis.
  • APPLICATION_ID: o ID do aplicativo de destino.

Método HTTP e URL:

POST https://visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/applications/APPLICATION_ID:createApplicationInstances

Corpo JSON da solicitação:

{
  "applicationInstances": [
    {
      "instance": {
        "inputResources": [
          {
            "consumerNode": "input-stream",
            "inputResource": "projects/PROJECT_NUMBER/locations/LOCATION_ID/clusters/application-cluster-0/streams/STREAM_ID"
          }
        ]
      },
      "instanceId": "INSTANCE_ID"
    },
    {
      "instance": {
         [...]
    },
    [...]
  ]
}

Para enviar a solicitação, escolha uma destas opções:

curl

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/applications/APPLICATION_ID:createApplicationInstances"

PowerShell

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/applications/APPLICATION_ID:createApplicationInstances" | Select-Object -Expand Content

Você receberá uma resposta JSON semelhante a esta:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.visionai.v1.OperationMetadata",
    "createTime": "[...]",
    "Target": "projects/PROJECT_NUMBER/locations/LOCATION_ID/applications/APPLICATION_ID"
    "Verb": "update"
    "apiVersion": "v1"
  },
  "done": false
}

Atualizar uma instância de app

Depois de criar um app e receber um ID de instância do app, você pode modificar os seguintes recursos de instância do app:

  • Stream de entrada*: é possível mudar o recurso de stream de entrada.
  • Recurso de saída do data warehouse: é possível atualizar o recurso de saída se você se conectou a um data warehouse e quer gravar a saída em um recurso de data warehouse diferente (corpus).
  • Fluxo de saída*: você pode substituir o fluxo de saída se quiser atualizar um fluxo gerado automaticamente para um fluxo específico que você criou.

    * Os fluxos de entrada e saída precisam estar no mesmo cluster para a mesma instância de aplicativo.

REST

Para atualizar uma instância de app, envie uma solicitação POST usando o método projects.locations.applications.updateApplicationInstances.

O exemplo de código a seguir atualiza o fluxo de entrada (inputResources) e todos os recursos de saída associados à instância do app (outputResources).

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • PROJECT: o ID ou número do projeto do Google Cloud.
  • LOCATION_ID: a região em que você está usando a Vertex AI Vision. Por exemplo: us-central1, europe-west4. Consulte as regiões disponíveis.
  • APPLICATION_ID: o ID do aplicativo de destino.
  • INSTANCE_NAME: o nome completo do recurso da instância do app. Por exemplo:
    • projects/PROJECT/locations/LOCATION_ID/applications/APPLICATION_ID/instances/INSTANCE_ID
  • inputResources: o recurso (ou recursos) de entrada da instância do aplicativo atual. É uma matriz de objetos que contém os seguintes campos:
    • consumerNode: o nome do nó do gráfico que recebe o recurso de entrada.
    • inputResource: o nome completo do recurso de entrada.
  • outputResources: todos os recursos de saída associados a uma instância de aplicativo. É uma matriz de objetos que contém os seguintes campos:
    • outputResource: o nome completo do recurso de saída.
    • producerNode: o nome do nó do gráfico que produz o nome do recurso de saída.

Método HTTP e URL:

POST https://visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/applications/APPLICATION_ID:updateApplicationInstances

Corpo JSON da solicitação:

{
  "applicationInstances": [
    {
      "instance": {
        "name": "INSTANCE_NAME",
        "inputResources": [
          {
            "consumerNode": "input-stream",
            "inputResource": "projects/PROJECT_NUMBER/locations/LOCATION_ID/clusters/application-cluster-0/streams/STREAM_ID"
          }
        ],
        "outputResources":[
          {
            "outputResource": "projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/assets/ASSET_ID",
            "producerNode": "warehouse"
          },
          {
            "outputResource": "projects/PROJECT_NUMBER/locations/LOCATION_ID/clusters/application-cluster-0/streams/STREAM_ID",
            "producerNode": "occupancy-count"
          }
        ]
      },
    }
  ],
}

Para enviar a solicitação, escolha uma destas opções:

curl

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/applications/APPLICATION_ID:updateApplicationInstances"

PowerShell

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/applications/APPLICATION_ID:updateApplicationInstances" | Select-Object -Expand Content
 

Gerenciar apps em grande escala

Os métodos de implantação e remoção são válidos para aplicativos com menos de 20 instâncias. Se o app tiver mais de 20 instâncias, crie e remova instâncias de forma incremental com a API. O fluxo de trabalho recomendado é o seguinte:

  1. Crie seu app.
  2. Adicione de 1 a 20 instâncias experimentais.
  3. Implante o aplicativo.
  4. Verifique se o app funciona conforme o esperado.
  5. Use o método createApplicationInstances para adicionar entradas de forma incremental ao aplicativo implantado.
  6. Permita que o app seja executado.
  7. Use o método deleteApplicationInstances para remover entradas de forma incremental dos aplicativos implantados.
  8. Cancele a implantação do aplicativo.