앱 인스턴스 만들기 및 업데이트

앱을 빌드하고 배포한 후 Google Cloud 콘솔 또는 명령줄을 사용하여 이러한 앱 인스턴스를 만들고 업데이트할 수 있습니다.

앱 인스턴스 만들기

REST

앱 인스턴스를 만들려면 projects.locations.applications.createApplicationInstances 메서드를 사용하여 POST 요청을 전송합니다.

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • PROJECT_NUMBER: Google Cloud 프로젝트 번호
  • LOCATION_ID: Vertex AI Vision을 사용하는 리전입니다. 예를 들면 us-central1, europe-west4입니다. 사용 가능한 리전을 참고하세요.
  • APPLICATION_ID: 타겟 애플리케이션의 ID입니다.

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-central1, europe-west4입니다. 사용 가능한 리전을 참고하세요.
  • APPLICATION_ID: 타겟 애플리케이션의 ID입니다.
  • INSTANCE_NAME: 앱 인스턴스의 전체 리소스 이름입니다. 예를 들면 다음과 같습니다.
    • projects/PROJECT/locations/LOCATION_ID/applications/APPLICATION_ID/instances/INSTANCE_ID
  • inputResources: 현재 애플리케이션 인스턴스의 입력 리소스입니다. 다음 필드가 포함된 객체의 배열입니다.
    • consumerNode: 입력 리소스를 수신하는 그래프 노드의 이름입니다.
    • inputResource: 전체 입력 리소스 이름입니다.
  • outputResources: 하나의 애플리케이션 인스턴스와 연결된 모든 출력 리소스입니다. 다음 필드가 포함된 객체의 배열입니다.
    • 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. 애플리케이션을 배포 취소합니다.