アプリ インスタンスを作成、更新する

アプリをビルドしてデプロイしたら、 Google Cloud コンソールまたはコマンドラインを使用して、これらのアプリ インスタンスを作成して更新できます。

アプリ インスタンスを作成する

REST

アプリ インスタンスを作成するには、projects.locations.applications.createApplicationInstances メソッドを使用して POST リクエストを送信します。

リクエストのデータを使用する前に、次のように置き換えます。

HTTP メソッドと URL:

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

リクエストの本文(JSON):

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

リクエストを送信するには、次のいずれかのオプションを選択します。

curl

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

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

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

$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

次のような JSON レスポンスが返されます。

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

アプリ インスタンスを更新する

アプリを作成してアプリ インスタンス ID を取得したら、次のアプリ インスタンス リソースを変更できます。

  • 入力ストリーム*: 入力ストリーム アセットを変更できます。
  • 出力ウェアハウス アセット: ウェアハウスに接続し、出力を別のウェアハウス(corpus)アセットに書き込む場合は、出力アセットを更新できます。
  • 出力ストリーム*: 自動生成されたストリームから作成した特定のストリームに出力ストリームを更新する場合は、出力ストリームを上書きできます。

    * 同じアプリケーション インスタンスの場合、入力ストリームと出力ストリームは同じクラスタに属している必要があります。

REST

アプリ インスタンスを更新するには、projects.locations.applications.updateApplicationInstances メソッドを使用して POST リクエストを送信します。

次のコードサンプルは、入力ストリーム(inputResources)と、アプリ インスタンス(outputResources)に関連付けられたすべての出力リソースを更新します。

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT: Google Cloud プロジェクト ID またはプロジェクト番号
  • LOCATION_ID: Vertex AI Vision を使用するリージョン。たとえば、us-central1europe-west4 などです。利用可能なリージョンをご覧ください。
  • APPLICATION_ID: ターゲット アプリケーションの ID。
  • INSTANCE_NAME: アプリ インスタンスの完全なリソース名。例:
    • projects/PROJECT/locations/LOCATION_ID/applications/APPLICATION_ID/instances/INSTANCE_ID
  • inputResources: 現在のアプリケーション インスタンスの入力リソース。これは、次のフィールドを含むオブジェクトの配列です。
    • consumerNode: 入力リソースを受け取るグラフノードの名前。
    • inputResource: 入力リソースの完全な名前。
  • outputResources: 1 つのアプリケーション インスタンスに関連付けられているすべての出力リソース。これは、次のフィールドを含むオブジェクトの配列です。
    • outputResource: 出力リソースの完全な名前。
    • producerNode: 出力リソース名を生成するグラフノードの名前。

HTTP メソッドと URL:

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

リクエストの本文(JSON):

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

リクエストを送信するには、次のいずれかのオプションを選択します。

curl

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

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

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

$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
 

大規模なアプリを管理する

デプロイ メソッドとデプロイ解除メソッドは、インスタンスが 20 個未満のアプリケーションで有効です。アプリに 20 個を超えるインスタンスがある場合は、API を使用してインスタンスを増分的に作成および削除する必要があります。推奨されるワークフローは次のとおりです。

  1. アプリを作成します。
  2. 試験運用版インスタンスを 1 ~ 20 個追加します。
  3. アプリケーションをデプロイします。
  4. アプリが想定どおりに動作することを確認します。
  5. createApplicationInstances メソッドを使用して、デプロイされたアプリケーションにインクリメンタルにインプットを追加します。
  6. アプリの実行を許可します。
  7. deleteApplicationInstances メソッドを使用して、デプロイされたアプリケーションから入力を段階的に削除します。
  8. アプリケーションのデプロイを解除します。