Como usar a API Cloud Billing Budget para orçamentos de limite de gastos

Saiba como enviar algumas solicitações de orçamento com gasto máximo para a API Cloud Billing Budget.

Para ver uma lista completa dos métodos, consulte a documentação de referência da API REST.

Antes de começar

Faça o seguinte antes de ler este guia:

  1. Leia a Visão geral da API Cloud Billing Budget.
  2. Leia os Pré-requisitos da API Cloud Billing Budget.
  3. Execute as etapas de configuração.

Identificar o ID da conta do Cloud Billing

Para todas as chamadas da API Cloud Billing Budget, você precisa do ID da sua conta do Cloud Billing. Os orçamentos com limite de gastos são limitados a clientes próprios doGoogle Cloud e contas do Cloud Billing. As contas de faturamento de revendedor estão fora do escopo.

  1. Acesse a página "Gerenciar contas de faturamento" do console do Google Cloud .
  2. Na guia Suas contas de faturamento, você vê a lista de contas por nome e ID. Localize o valor do ID da conta em que você gerencia os orçamentos.

A página "Gerenciar faturamento" mostrando o local do ID da conta de faturamento.

Principais conceitos e limitações do orçamento com gasto máximo

Os orçamentos com gasto máximo usam custos brutos e estimados para acionar alertas e aplicar limites de gasto, bloqueando o uso e o acúmulo de custos até que o gasto máximo seja removido.

Restrições de campo do orçamento com gasto máximo

Quando spendCap é definido em um orçamento, restrições de campo estritas são aplicadas ao orçamento. Consulte os comentários no nível do campo em Filters, BudgetAmount, ThresholdRule, NotificationsRule e OwnershipScope.

  • billing-account-id: os orçamentos com limite de gastos são limitados a clientes próprios doGoogle Cloud e contas do Cloud Billing. As contas de faturamento de revendedor estão fora do escopo.
  • BudgetFilters precisa incluir os seguintes parâmetros:

    • Um orçamento com gasto máximo é restrito a orçamentos com escopo (filtrados) para um único projeto do Google Cloud e um único serviço qualificado.
    • O período do orçamento com gasto máximo é limitado a um CalendarPeriod de MONTH.
    • Os cálculos de custo para gastos máximos são baseados em custos brutos e não incluem economias e créditos. Defina creditTypesTreatment como EXCLUDE_ALL_CREDITS.
    • Outros filtros de orçamento não são compatíveis com gastos máximos e precisam estar vazios, incluindo resourceAncestors, credit_types, subaccounts e labels.
  • O BudgetAmount precisa usar um specifiedAmount. Na entrada, currencyCode é opcional. Se especificado ao criar um orçamento, o código da moeda precisa corresponder à moeda da conta do Cloud Billing. O currencyCode é fornecido na saída.

  • ThresholdRules precisa conter exatamente três regras com valores thresholdPercent de 0.5, 0.8 e 1.0 (50%, 80% e 100%), com um spendBasis definido como CURRENT_SPEND ou BASIS_UNSPECIFIED (FORECASTED_SPEND não é compatível com gastos máximos).

  • NotificationsRule precisa definir enableProjectLevelRecipients como true. Todos os outros parâmetros NotificationsRule não são compatíveis.

  • OwnershipScope precisa ser definido como OWNERSHIP_SCOPE_UNSPECIFIED ou ALL_USERS (BILLING_ACCOUNT não é compatível com gastos máximos).

  • Ao criar um orçamento com gasto máximo, o parâmetro inputState precisa ser definido como CONFIGURED.

Como os orçamentos com gasto máximo ajudam a controlar os gastos

  • Cálculos de gastos mais rápidos usando custos estimados: para uma aplicação mais rápida de um valor de limite de gastos, os orçamentos de limite de gastos usam custos brutos e estimados para acionar alertas e aplicar o limite de gastos. Os custos estimados são calculados com base no preço de tabela dos serviços e não incluem economias e créditos.

  • Pausa automática do uso e do acúmulo de custos quando o limite de gastos é acionado: no projeto especificado, quando os custos de uso brutos e estimados do serviço específico excedem o valor da meta de orçamento, o limite de gastos é acionado e aplicado pelo restante do período do orçamento. No orçamento, o parâmetro outputState está definido como ENFORCED. Enquanto um gasto máximo estiver em vigor, o seguinte se aplica:

    • Todo o uso novo do serviço específico no projeto especificado é pausado, incluindo o uso on demand, de pagamento por uso e o uso coberto por compromissos, como descontos por compromisso de uso (CUDs).
    • Todas as solicitações em andamento do serviço especificado são processadas até a conclusão, com cobranças acumuladas conforme aplicável.
    • Os gastos máximos não pausam o uso fixo e contínuo associado a recursos permanentes (como serviços de recursos computacionais e armazenamento), que permanecem ativos e continuam gerando cobranças.
    • Importante:enquanto estiver em um estado de restrição, não será possível editar as configurações de um orçamento com gasto máximo nem excluí-lo. Antes de editar ou excluir um orçamento aplicado, é necessário remover manualmente o gasto máximo.
  • Suspender um gasto máximo aplicado para restaurar serviços e gastos: quando um gasto máximo é aplicado, o uso do serviço específico no projeto especificado é bloqueado até que o gasto máximo seja suspenso. É possível suspender um limite de gastos das seguintes maneiras:

    • Remover automaticamente um gasto máximo: um gasto máximo aplicado é removido automaticamente no início do próximo período de orçamento (normalmente, o primeiro dia do mês seguinte). Quando um gasto máximo é suspenso automaticamente, o valor do gasto do orçamento é redefinido para zero, o estado do gasto máximo é redefinido para CONFIGURED e os serviços especificados são desbloqueados, restaurando a função normal das chamadas de API.

    • Remover manualmente um gasto máximo: se você precisar reverter um bloqueio de uso durante o mesmo período de orçamento em que o gasto máximo é aplicado, edite o orçamento para remover manualmente o gasto máximo. A remoção manual de um gasto máximo tem os seguintes resultados:

      • A remoção manual de um gasto máximo restaura a função normal das chamadas de API.
      • Se você remover manualmente o gasto máximo definindo o estado do gasto máximo como AWAITING_NEXT_PERIOD, o gasto máximo não será acionado novamente pelo restante do período do orçamento, a menos que você edite o orçamento para aumentar o valor do gasto máximo e defina inputState como CONFIGURED.

    Depois que um gasto máximo é removido, pode levar até uma hora para que os serviços voltem ao funcionamento normal.

  • Redefinição automática de orçamentos com limite de gasto: no início do próximo período de orçamento (geralmente o primeiro dia do próximo mês), todos os orçamentos com limite de gasto são redefinidos automaticamente, definindo o valor de gasto bruto estimado como zero e o estado do limite de gasto como CONFIGURED.

Limitação de cota: cada conta do Cloud Billing pode ter vários milhares de orçamentos associados a ela por vez. Consulte Cotas e limites para ver os limites atuais e outras informações.

Como chamar a API

Os exemplos a seguir mostram como enviar algumas solicitações à API Cloud Billing Budget para gerenciar orçamentos com gasto máximo.

Criar um orçamento com gasto máximo

Esse método de API cria um orçamento de gasto máximo do Cloud Billing aplicado a um único projeto e serviço qualificado.

REST

Este exemplo mostra como criar um orçamento de limite de gastos para o uso do serviço da API Gemini em um projeto específico. O orçamento tem o escopo (filtrado) definido para um único projeto do Google Cloud que você especifica, um único serviço qualificado e um valor de orçamento mensal de US $100.

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

  • projects/budget-scope-project-id: o ID do projeto do Google Cloud que você quer definir como umescopo de orçamento(budgetFilter).
  • services/eligible-service_id: um dos IDs de serviço qualificados que você quer definir como um escopo de orçamento (budgetFilter). No exemplo, estamos usando o ID de serviço AEFD-7695-64FA para o serviço da API Gemini.
  • billing-account-id: o ID da conta do Cloud Billing a que este orçamento é aplicado. Os orçamentos com limite de gastos são limitados a clientes próprios do Google Cloud e contas do Cloud Billing. As contas de faturamento de revendedor estão fora do escopo.
  • api-user-project-id: o projeto do Google Cloud em que a API Cloud Billing Budget está ativada.

Método HTTP e URL:

POST https://billingbudgets.googleapis.com/v1/billingAccounts/billing-account-id/budgets

Corpo JSON da solicitação:

{
  "displayName": "My Gemini API Spend Cap",
  "budgetFilter": {
    "projects": [
      "projects/budget-scope-project-id"
    ],
    "services": [
      "services/AEFD-7695-64FA"
    ],
    "creditTypesTreatment": "EXCLUDE_ALL_CREDITS",
    "calendarPeriod": "MONTH"
 },
 "amount": {
   "specifiedAmount": {
     "units": "100",
     "nanos": 0
   }
 },
 "thresholdRules": [
   { "thresholdPercent": 0.5 },
   { "thresholdPercent": 0.8 },
   { "thresholdPercent": 1.0 }
 ],
 "notificationsRule": {
   "enableProjectLevelRecipients": true
 },
 "spendCap": {
   "inputState": "CONFIGURED"
 }
}

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

Você receberá uma resposta JSON semelhante a esta:

{
  "name": "billingAccounts/000000-111111-222222/budgets/33333333-4444-5555-6666-777777777777",
  "displayName": "My Gemini API Spend Cap",
  "budgetFilter": {
    "projects": [
      "projects/123456789"
    ],
    "services": [
      "services/AEFD-7695-64FA"
    ],
    "creditTypesTreatment": "EXCLUDE_ALL_CREDITS",
    "calendarPeriod": "MONTH"
  },
  "amount": {
    "specifiedAmount": {
       "currencyCode": "USD",
       "units": "100"
     }
  },
  "thresholdRules": [
    {
      "thresholdPercent": 0.5,
      "spendBasis": "CURRENT_SPEND"
    },
    {
      "thresholdPercent": 0.8,
      "spendBasis": "CURRENT_SPEND"
    },
    {
      "thresholdPercent": 1,
      "spendBasis": "CURRENT_SPEND"
    }
  ],
  "notificationsRule": {
    "enableProjectLevelRecipients": true
  },
  "etag": "1790365289674138",
  "spendCap": {
    "outputState": "CONFIGURED"
  }
}

Remover um gasto máximo usando PATCH

Use o método de API PATCH para modificar um orçamento de gasto máximo do Cloud Billing e remover manualmente um gasto máximo aplicado.

REST

Este exemplo mostra como remover manualmente um limite de gasto de ENFORCED em um orçamento atual atualizando o parâmetro SpendCap.inputState para AWAITING_NEXT_PERIOD.

Importante:quando o spend_cap.output_state é ENFORCED, primeiro você precisa remover o gasto máximo enviando uma solicitação UpdateBudget para modificar o spend_cap.input_state, como definir o input_state como AWAITING_NEXT_PERIOD, o que vai remover o limite. Se você tentar modificar qualquer outro campo de orçamento enquanto o orçamento estiver em um estado de restrição, a solicitação de atualização vai falhar com FAILED_PRECONDITION.

Para chamar esse método, você precisa do budget-id do orçamento que quer atualizar. Receba o ID do orçamento da saída createBudget, ao criar o orçamento, ou da saída listBudgets, se você listar todos os seus orçamentos.

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

  • billing-account-id: o ID da conta do Cloud Billing a que este orçamento é aplicado. Os orçamentos com limite de gastos são limitados a clientes próprios do Google Cloud e contas do Cloud Billing. As contas de faturamento de revendedor estão fora do escopo.
  • budget-id: o ID do orçamento que você quer atualizar.
  • api-user-project-id: o projeto do Google Cloud em que a API Cloud Billing Budget está ativada.

Método HTTP e URL:

PATCH https://billingbudgets.googleapis.com/v1/billingAccounts/billing-account-id/budgets/budget-id?updateMask=spendCap.inputState

Corpo JSON da solicitação:

{
  "spendCap": {
    "inputState": "AWAITING_NEXT_PERIOD"
 }
}

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

Você receberá uma resposta JSON semelhante a esta:

{
  "name": "billingAccounts/000000-111111-222222/budgets/33333333-4444-5555-6666-777777777777",
  "displayName": "My Gemini API Spend Cap",
  "budgetFilter": {
    "projects": [
      "projects/123456789"
    ],
    "services": [
      "services/AEFD-7695-64FA"
    ],
    "creditTypesTreatment": "EXCLUDE_ALL_CREDITS",
    "calendarPeriod": "MONTH"
  },
  "amount": {
    "specifiedAmount": {
       "currencyCode": "USD",
       "units": "100"
     }
  },
  "thresholdRules": [
    {
      "thresholdPercent": 0.5,
      "spendBasis": "CURRENT_SPEND"
    },
    {
      "thresholdPercent": 0.8,
      "spendBasis": "CURRENT_SPEND"
    },
    {
      "thresholdPercent": 1,
      "spendBasis": "CURRENT_SPEND"
    }
  ],
  "notificationsRule": {
    "enableProjectLevelRecipients": true
  },
  "etag": "1790365289674138",
  "spendCap": {
    "outputState": "AWAITING_NEXT_PERIOD",
    "reconciling": true
  }
}

Atualizar um orçamento com gasto máximo usando PATCH

Use esse método de API para modificar um orçamento de gasto máximo do Cloud Billing para alterar o valor do orçamento e os filtros de orçamento (escopo do orçamento).

REST

Este exemplo mostra como atualizar um orçamento de limite de gasto para mudar o valor do orçamento. Se o estado do gasto máximo for AWAITING_NEXT_PERIOD, este exemplo também mostra como redefinir um gasto máximo suspenso atualizando o parâmetro SpendCap.inputState para CONFIGURED.

Para chamar esse método, você precisa do budget-id do orçamento que quer atualizar. Receba o ID do orçamento da saída createBudget, ao criar o orçamento, ou da saída listBudgets, se você listar todos os seus orçamentos.

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

  • projects/budget-scope-project-id: o ID do projeto do Google Cloud que você quer definir como um escopo de orçamento (budgetFilter).
  • services/eligible-service_id: um dos IDs de serviço qualificados que você quer definir como um escopo de orçamento (budgetFilter). No exemplo, estamos usando o ID de serviço AEFD-7695-64FA para o serviço da API Gemini.
  • billing-account-id: o ID da conta do Cloud Billing a que este orçamento é aplicado. Os orçamentos com limite de gastos são limitados a clientes próprios do Google Cloud e contas do Cloud Billing. As contas de faturamento de revendedor estão fora do escopo.
  • budget-id: o ID do orçamento que você quer atualizar.
  • api-user-project-id: o projeto do Google Cloud em que a API Cloud Billing Budget está ativada.

Método HTTP e URL:

PATCH https://billingbudgets.googleapis.com/v1/billingAccounts/billing-account-id/budgets/budget-id?updateMask=amount.specifiedAmount,spendCap.inputState

Corpo JSON da solicitação:

{
  "displayName": "My Gemini API Spend Cap",
  "budgetFilter": {
    "projects": [
      "projects/budget-scope-project-id"
    ],
    "services": [
      "services/AEFD-7695-64FA"
    ],
    "creditTypesTreatment": "EXCLUDE_ALL_CREDITS",
    "calendarPeriod": "MONTH"
 },
 "amount": {
   "specifiedAmount": {
     "units": "500",
     "nanos": 0
   }
 },
 "thresholdRules": [
   { "thresholdPercent": 0.5 },
   { "thresholdPercent": 0.8 },
   { "thresholdPercent": 1.0 }
 ],
 "notificationsRule": {
   "enableProjectLevelRecipients": true
 },
 "spendCap": {
   "inputState": "CONFIGURED"
 }
}

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

Você receberá uma resposta JSON semelhante a esta:

{
  "name": "billingAccounts/000000-111111-222222/budgets/33333333-4444-5555-6666-777777777777",
  "displayName": "My Gemini API Spend Cap",
  "budgetFilter": {
    "projects": [
      "projects/123456789"
    ],
    "services": [
      "services/AEFD-7695-64FA"
    ],
    "creditTypesTreatment": "EXCLUDE_ALL_CREDITS",
    "calendarPeriod": "MONTH"
  },
  "amount": {
    "specifiedAmount": {
       "currencyCode": "USD",
       "units": "500"
     }
  },
  "thresholdRules": [
    {
      "thresholdPercent": 0.5,
      "spendBasis": "CURRENT_SPEND"
    },
    {
      "thresholdPercent": 0.8,
      "spendBasis": "CURRENT_SPEND"
    },
    {
      "thresholdPercent": 1,
      "spendBasis": "CURRENT_SPEND"
    }
  ],
  "notificationsRule": {
    "enableProjectLevelRecipients": true
  },
  "etag": "1790365289674138",
  "spendCap": {
    "outputState": "CONFIGURED"
  }
}

Listar orçamentos

Nesse método de API, todos os orçamentos definidos para uma determinada Conta de faturamento do Cloud são listados.

REST

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

  • billing-account-id: ID da conta do Cloud Billing a que os orçamentos são aplicados. Os orçamentos com limite de gastos são limitados a clientes próprios do Google Cloud e contas do Cloud Billing. As contas de faturamento de revendedor estão fora do escopo.
  • project-id: o projeto do Google Cloud em que a API Cloud Billing Budget está ativada.

Método HTTP e URL:

GET https://billingbudgets.googleapis.com/v1/billingAccounts/billing-account-id/budgets

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

Você receberá uma resposta JSON semelhante a esta:

{
  "budgets": [
   {
      "name": "billingAccounts/000000-111111-222222/budgets/33333333-4444-5555-6666-777777777777",
      "displayName": "Gemini API Spend Cap in My Project",
      "budgetFilter": {
        "projects": [
          "projects/987654321"
        ],
        "services": [
          "services/AEFD-7695-64FA"
        ],
        "creditTypesTreatment": "EXCLUDE_ALL_CREDITS",
        "calendarPeriod": "MONTH"
      },
      "amount": {
        "specifiedAmount": {
          "currencyCode": "USD",
          "units": "500"
        }
      },
      "thresholdRules": [
        {
          "thresholdPercent": 0.5,
          "spendBasis": "CURRENT_SPEND"
        },
        {
          "thresholdPercent": 0.8,
          "spendBasis": "CURRENT_SPEND"
        },
        {
          "thresholdPercent": 1,
          "spendBasis": "CURRENT_SPEND"
        }
      ],
      "notificationsRule": {
        "enableProjectLevelRecipients": true
      },
      "allUpdatesRule": {},
      "etag": "17fc365289f74138c",
      "spendCap": {
        "outputState": "ENFORCED"
      }
    }
  ]
}

Receber orçamento

Nesse método de API, receba os detalhes de um determinado orçamento.

REST

Para chamar esse método, você precisa do budget-id do orçamento que quer atualizar. Receba o ID do orçamento da saída createBudget, ao criar o orçamento, ou da saída listBudgets, se você listar todos os seus orçamentos.

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

  • billing-account-id: o ID da conta do Cloud Billing a que este orçamento é aplicado. Os orçamentos com limite de gastos são limitados a clientes próprios do Google Cloud e contas do Cloud Billing. As contas de faturamento de revendedor estão fora do escopo.
  • budget-id: o ID do orçamento que você quer receber.
  • project-id: o projeto do Google Cloud em que a API Cloud Billing Budget está ativada.

Método HTTP e URL:

GET https://billingbudgets.googleapis.com/v1/billingAccounts/billing-account-id/budgets/budget-id

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

Você receberá uma resposta JSON semelhante a esta:

{
  "name": "billingAccounts/000000-111111-222222/budgets/33333333-4444-5555-6666-777777777777",
  "displayName": "Cloud Run Spend Cap in My Project",
  "budgetFilter": {
    "projects": [
      "projects/987654321"
    ],
    "services": [
      "services/152E-C115-5142"
    ],
    "creditTypesTreatment": "EXCLUDE_ALL_CREDITS",
    "calendarPeriod": "MONTH"
  },
  "amount": {
    "specifiedAmount": {
       "currencyCode": "USD",
       "units": "450"
     }
  },
  "thresholdRules": [
    {
      "thresholdPercent": 0.5,
      "spendBasis": "CURRENT_SPEND"
    },
    {
      "thresholdPercent": 0.8,
      "spendBasis": "CURRENT_SPEND"
    },
    {
      "thresholdPercent": 1,
      "spendBasis": "CURRENT_SPEND"
    }
  ],
  "notificationsRule": {
    "enableProjectLevelRecipients": true
  },
  "allUpdatesRule": {},
  "etag": "c9d6c011f6fa6b5c",
  "spendCap": {
    "outputState": "CONFIGURED"
  }
}

Excluir orçamento

Use esse método de API para excluir um orçamento atual do Cloud Billing.

REST

Para chamar esse método, você precisa do budget-id do orçamento que quer atualizar. Receba o ID do orçamento da saída createBudget, ao criar o orçamento, ou da saída listBudgets, se você listar todos os seus orçamentos.

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

  • billing-account-id: o ID da conta do Cloud Billing a que este orçamento é aplicado.
  • budget-id: o ID do orçamento que você quer excluir.
  • project-id: o projeto do Google Cloud em que a API Cloud Billing Budget está ativada.

Método HTTP e URL:

DELETE https://billingbudgets.googleapis.com/v1/billingAccounts/billing-account-id/budgets/budget-id

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

Você receberá uma resposta JSON semelhante a esta:

{}