보고서 만들기 및 읽기

지출에 대한 App Optimize API 보고서를 만들고, 보고서 생성을 모니터링하고, 보고서가 준비되면 결과 데이터를 읽는 방법을 알아보세요. Google Cloud이 빠른 시작 가이드에서는 REST API를 사용합니다.

시작하기 전에

  1. 이 가이드의 예시에는 분석할 활성 리소스가 있는 Google Cloud 프로젝트가 필요합니다. App Optimize API는 의미 있는 결과를 생성하기 위해 결제 및 사용률 데이터가 필요합니다. 새 프로젝트 또는 빈 프로젝트에 대해 실행되는 보고서는 비어 있습니다.

    이 프로젝트는 사용자가 선택하며 PROJECT_ID로 식별됩니다. 편의를 위해 이 가이드에서는 프로젝트 가 보고서 리소스를 호스팅하고 데이터 범위를 제공합니다.

    App Optimize API는 단일 프로젝트 또는 폴더 수준 경계의 다른 소스 프로젝트 또는 애플리케이션의 데이터를 분석하는 보고서를 한 프로젝트에서 만들 수 있도록 지원합니다. 여러 프로젝트로 구성될 수 있는 App Hub 애플리케이션에 대한 보고서를 생성하는 경우 보고서를 만들려면 애플리케이션의 연결된 모든 프로젝트에 필요한 모니터링 및 결제 권한이 있어야 합니다.

  2. 보고서 리소스를 만들고 관리하는 데 사용할 프로젝트에 App Optimize API가 사용 설정되어 있는지 사용 설정되어 있는지 확인합니다. 이 문서의 예시에서 이는 프로젝트입니다.PROJECT_ID
  3. 계정에 로그인합니다. Google Cloud 를 처음 사용하는 경우 Google Cloud, 계정을 만들고 Google 제품의 실제 성능을 평가해 보세요. 신규 고객에게는 워크로드를 실행, 테스트, 배포하는 데 사용할 수 있는 $300의 무료 크레딧이 제공됩니다.
  4. Google Cloud CLI를 설치합니다.

  5. 외부 ID 공급업체(IdP)를 사용하는 경우 먼저 제휴 ID로 gcloud CLI에 로그인해야 합니다.

  6. gcloud CLI를 초기화하려면, 다음 명령어를 실행합니다.

    gcloud init
  7. 이 가이드를 완료하는 데 필요한 권한이 있는지 확인합니다.

  8. Google Cloud CLI를 설치합니다.

  9. 외부 ID 공급업체(IdP)를 사용하는 경우 먼저 제휴 ID로 gcloud CLI에 로그인해야 합니다.

  10. gcloud CLI를 초기화하려면, 다음 명령어를 실행합니다.

    gcloud init
  11. 이 가이드를 완료하는 데 필요한 권한이 있는지 확인합니다.

필요한 역할

이 빠른 시작을 사용하여 보고서를 만들고 읽는 데 필요한 권한을 얻으려면 관리자에게 활성 리소스가 있는 프로젝트에 대한 다음 IAM 역할을 부여해 달라고 요청하세요.

  • App Optimize 관리자 (roles/appoptimize.admin)
  • 뷰어(roles/viewer) 또는 billing.resourceCosts.get을 부여하는 다른 역할

역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.

커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.

App Optimize API에 필요한 권한 및 역할에 대한 자세한 내용은 IAM으로 액세스 제어를 참조하세요.

보고서 생성

이 예시에서는 선택한 PROJECT_ID 내의 총 지출 보고서를 만듭니다. 보고서는 Compute Engine 및 Cloud Storage와 같은 사용된 각 Google Cloud 제품별로, 그리고 특정 SKU 및 위치별로 비용을 분류합니다. 보고서는 지난 3일간의 데이터를 다룹니다.

보고서 리소스를 만들려면 REST API의 projects.locations.reports 리소스 경로에 HTTP POST 요청을 보냅니다.

다음 단계에 따라 보고서를 만듭니다.

  1. 다음 curl 명령어를 사용하여 요청을 보냅니다.

    curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      -d '{
        "scopes": [
          {
            "project": "projects/PROJECT_ID"
          }
        ],
        "dimensions": [
          "location",
          "product_display_name",
          "project",
          "sku"
        ],
        "metrics": [
          "cost"
        ],
        "filter": "hour >= now - duration(\"72h\")"
      }' \
      "https://appoptimize.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/reports?report_id=REPORT_ID"
    

    다음을 바꿉니다.

    • PROJECT_ID: 프로젝트 ID입니다. Google Cloud
    • REPORT_ID: 새 보고서의 고유 ID(예: my-first-report)

    API는 보고서 생성 프로세스를 나타내는 장기 실행 작업 (LRO) 객체를 반환합니다. 응답 예시는 다음과 같습니다.

    {
      "name": "projects/PROJECT_ID/locations/global/operations/OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.appoptimize.v1beta.OperationMetadata"
      },
      "done": false
    }
    

    "done": false 상태는 보고서가 아직 생성 중임을 나타냅니다. 다음 단계에서 사용할 OPERATION_ID를 기록해 둡니다.

  2. 보고서 생성에는 시간이 걸릴 수 있으므로 생성 프로세스가 완료되고 보고서 데이터를 다운로드할 준비가 되었음을 나타낼 때까지 LRO를 폴링해야 합니다.

    생성 프로세스의 상태를 확인하려면 작업의 리소스 이름에 HTTP GET 요청을 보냅니다.

    curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      "https://appoptimize.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/operations/OPERATION_ID"
    

    대답을 검토합니다. "done"false이면 5~15초 동안 기다렸다가 이 단계를 반복합니다. "done"true이면 보고서가 준비된 것입니다.

    작업이 완료되었을 때의 응답 예시는 다음과 같습니다.

    {
      "name": "projects/PROJECT_ID/locations/global/operations/OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.appoptimize.v1beta.OperationMetadata"
      },
      "done": true,
      "response": {
        "@type": "type.googleapis.com/google.cloud.appoptimize.v1beta.Report",
        "name": "projects/PROJECT_ID/locations/global/reports/REPORT_ID",
        "scopes": [
          {
            "project": "projects/PROJECT_ID"
          }
        ],
        "dimensions": [
          "location",
          "product_display_name",
          "project",
          "sku"
        ],
        "metrics": [
          "cost"
        ],
        "filter": "hour >= now - duration(\"72h\")",
        "expireTime": "2026-02-04T22:05:05Z"
      }
    }
    

보고서 데이터 읽기

보고서 데이터를 검색하려면 LRO가 완료된 후 :read 커스텀 메서드를 사용합니다.

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -d '{}' \
  "https://appoptimize.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/reports/REPORT_ID:read"

응답에는 보고서 데이터 행과 열 정의가 포함됩니다. 성공적인 응답 예시는 다음과 같습니다.

{
  "rows": [
    [
      "us-central1",
      "Compute Engine",
      "projects/PROJECT_ID",
      "6EC2-384A-47D9",
      {
        "currency_code": "USD",
        "units": "25",
        "nanos": 750000000
      }
    ],
    [
      "us-central1",
      "Cloud Storage",
      "projects/PROJECT_ID",
      "9ADA-9ADC-2FBE",
      {
        "currency_code": "USD",
        "units": "5",
        "nanos": 100000000
      }
    ],
    [
      "europe-west1",
      "Compute Engine",
      "projects/PROJECT_ID",
      "6EC2-384A-47D9",
      {
        "currency_code": "USD",
        "units": "18",
        "nanos": 500000000
      }
    ],
    [
      "us-central1",
      "Compute Engine",
      "projects/PROJECT_ID",
      "F61D-4D51-AAFC",
      {
        "currency_code": "USD",
        "units": "12",
        "nanos": 200000000
      }
    ]
  ],
  "columns": [
    {
      "name": "location",
      "type": "STRING",
      "mode": "NULLABLE"
    },
    {
      "name": "product_display_name",
      "type": "STRING",
      "mode": "NULLABLE"
    },
    {
      "name": "project",
      "type": "STRING",
      "mode": "NULLABLE"
    },
    {
      "name": "sku",
      "type": "STRING",
      "mode": "NULLABLE"
    },
    {
      "name": "cost",
      "type": "RECORD",
      "mode": "NULLABLE",
      "columns": [
        {
          "name": "currency_code",
          "type": "STRING",
          "mode": "NULLABLE"
        },
        {
          "name": "units",
          "type": "INT64",
          "mode": "NULLABLE"
        },
        {
          "name": "nanos",
          "type": "INT64",
          "mode": "NULLABLE"
        }
      ]
    }
  ],
  "next_page_token": ""
}

행이 많은 보고서는 페이지로 나뉩니다. 여러 페이지를 처리하려면 보고서 데이터 읽기를 참고하세요.

cost 필드의 값을 이해하려면 비용 측정항목 해석을 참고하세요. 데이터에 대한 자세한 내용과 제한사항을 이해하려면 데이터 이해를 참고하세요.

삭제

App Optimize API는 보고서가 생성된 후 24시간이 지나면 자동으로 삭제합니다. 보고서를 더 빨리 삭제하려면 보고서의 리소스 엔드포인트에 HTTP DELETE 요청을 보냅니다.

curl -X DELETE \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  "https://appoptimize.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/reports/REPORT_ID"

다음 단계