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

Saiba como enviar algumas solicitações de orçamento de limite de gastos para a API Cloud Billing Budget.

Para conferir uma lista completa de 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 de faturamento do Cloud

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

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

A página "Gerenciar faturamento" mostrando a localização do ID da sua conta de faturamento.

Principais conceitos e limitações do orçamento com limite de gastos

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

Restrições do campo de orçamento com limite de gastos

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

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

    • Um orçamento com limite de gastos é restrito a orçamentos com escopo (filtrados) para um único Google Cloud projeto e um único serviço qualificado.
    • O período intervalo de tempo de um orçamento de limite de gastos é limitado a um CalendarPeriod de um MONTH.
    • Os cálculos de custo para limites de gastos 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 limites de gastos 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 limites de gastos).

  • 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 limites de gastos.

  • Ao criar um orçamento de limite de gastos, o parâmetro inputState precisa ser definido como CONFIGURED.

Como os orçamentos de limite de gastos ajudam você a controlar os gastos

  • Cálculos de gastos mais rápidos usando custos estimados: para uma aplicação mais rápida de um 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 orçamentário. No orçamento, o parâmetro outputState está definido como ENFORCED. Enquanto um limite de gastos está em vigor, o seguinte se aplica:

    • Todo o uso novo do serviço específico no projeto especificado é pausado, incluindo o uso sob demanda, pagamento por uso e coberto por compromissos, como descontos por compromisso de uso (CUDs) e Capacidade de Processamento Provisionada (PT).
    • 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 limites de gastos não pausam nenhum uso fixo e contínuo associado a recursos permanentes (como serviços de computação e armazenamento), que permanecem ativos e continuam acumulando cobranças.
    • Importante:enquanto estiver em um estado aplicado, não é possível editar as configurações de um orçamento de limite de gastos nem excluir o orçamento. Antes de editar ou excluir um orçamento aplicado, é necessário suspender manualmente o limite de gastos.
  • Suspenda um limite de gastos aplicado para restaurar os serviços e os gastos: quando um limite de gastos é aplicado, o uso do serviço específico no projeto especificado é bloqueado até que o limite seja suspenso. É possível suspender um limite de gastos das seguintes maneiras:

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

    • Remover manualmente um limite de gastos: se você precisar reverter um bloqueio de uso durante o mesmo período de orçamento em que o limite de gastos está sendo aplicado, edite o orçamento para remover manualmente o limite de gastos. Isso tem os seguintes resultados:

      • Aumentar manualmente um limite de gastos restaura a função normal das chamadas de API.
      • Se você remover manualmente o limite de gastos definindo o estado do limite de gastos como AWAITING_NEXT_PERIOD, ele 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 limite de gastos e defina inputState como CONFIGURED.

    Depois que um limite de gastos é removido, os serviços podem levar até uma hora para voltar ao funcionamento normal.

  • Redefinição automática dos orçamentos de limite de gastos: no início do próximo período de orçamento (normalmente o primeiro dia do mês seguinte), todos os orçamentos de limite de gastos são redefinidos automaticamente, definindo o valor de gasto bruto e estimado como zero e o estado do limite de gastos 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 de limite de gastos.

Criar um orçamento de limite de gastos

Esse método de API cria um orçamento de limite de gastos do Cloud Billing aplicado a um único projeto e a um 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 está com escopo (filtrado) para um único projeto do Google Cloud que você especifica, um único serviço qualificado e definido para 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 Google Cloud ID do projeto 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 de faturamento do Google Cloud a que este orçamento é aplicado. Os orçamentos de limite de gastos são limitados a clientes próprios Google Cloud e contas do Cloud Billing. As contas de faturamento de revendedor estão fora do escopo.
  • api-user-project-id: o projeto 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"
  }
}

Suspender um limite de gastos usando PATCH

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

REST

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

Importante:quando o spend_cap.output_state é ENFORCED, primeiro é necessário remover o limite de gastos 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 ele estiver em um estado aplicado, 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 de faturamento do Google Cloud a que este orçamento é aplicado. Os orçamentos de limite de gastos são limitados a clientes próprios 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 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 limite de gastos usando PATCH

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

REST

Nesta amostra, apresentamos como atualizar um orçamento de limite de gastos para mudar o valor do orçamento. Se o estado do limite de gastos for AWAITING_NEXT_PERIOD, este exemplo também vai mostrar como redefinir um limite de gastos aumentado 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 Google Cloud ID do projeto 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 de faturamento do Google Cloud a que este orçamento é aplicado. Os orçamentos de limite de gastos são limitados a clientes próprios 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 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 de faturamento do Google Cloud a que os orçamentos são aplicados. Os orçamentos de limite de gastos são limitados a clientes próprios Google Cloud e contas do Cloud Billing. As contas de faturamento de revendedor estão fora do escopo.
  • project-id: o projeto 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 de faturamento do Google Cloud a que este orçamento é aplicado. Os orçamentos de limite de gastos são limitados a clientes próprios 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 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 Faturamento do Cloud.

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 de faturamento do Google Cloud a que este orçamento é aplicado.
  • budget-id: o ID do orçamento que você quer excluir.
  • project-id: o projeto 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:

{}