Остановите биллинг Google Cloud для определенных c сервисов с помощью облачных функций - PullRequest
0 голосов
/ 23 февраля 2020

Мне нужно разработать сценарий облачной функции, чтобы остановить выставление счетов за определенные c услуги в случае роста стоимости.

Пример. Представьте, что Pub / Sub по какой-то причине дорого обходится.

Моя облачная функция должна обнаруживать это событие (я уже знаю, как это сделать) и отключать только этот биллинг службы.

Есть ли способ сделать это? Я видел Я могу отключить службу API . Можно ли было отключить сервис API pub / sub с помощью функции Cloud? Есть ли пример кода? Будет ли отключить биллинг для этой услуги? Или лучшим подходом было бы удалить проблематику c pub / sub?

1 Ответ

0 голосов
/ 27 февраля 2020

Когда вы отключаете API, вы можете удалить все ресурсы, созданные API, а также отключите другие API, которые зависят от API, который вы отключаете. В зависимости от продуктов, которые вы используете в своем проекте в указанном вами случае c, если вы отключите API Pub / Sub, вы можете отключить следующие API:

cloudbuild.googleapis.com
cloudfunctions.googleapis.com
containerregistry.googleapis.com
run.googleapis.com
...among others

Если вам известно о рисках и нарушениях, которые могут вызвать отключение API (и, следовательно, всех других зависимых API) в вашем Проекте, если у вас есть что-то в производстве, следующий код, использующий API-интерфейс Service Usage disable метод из Python Клиентская библиотека будет работать, отключит API потока данных:

from googleapiclient import discovery
import google.auth

def hello_world(request):
    credentials, project_id = google.auth.default()
    name = 'projects/[PROJECT-NUMBER-NOT-ID]/services/dataflow.googleapis.com'
    body = {'disableDependentServices': True,}
    service = discovery.build('serviceusage', 'v1', credentials=credentials, cache_discovery=False)
    request = service.services().disable(name=name, body=body)
    try:
        response = request.execute()
    except Exception as e:
        print(e)
    return "API disabled"

После проверки журналов активности вы должны увидеть сообщения, аналогичные приведенным ниже, после запуска облачной функции:

9:12 AM Completed: google.api.serviceusage.v1.ServiceUsage.DisableService [PROJECT-ID]@appspot.gserviceaccount.com has executed google.api.serviceusage.v1.ServiceUsage.DisableService on dataflow.googleapis.com
9:12 AM google.api.serviceusage.v1.ServiceUsage.DisableService [PROJECT-ID]@appspot.gserviceaccount.com has executed google.api.serviceusage.v1.ServiceUsage.DisableService on dataflow.googleapis.com

Обратите внимание, что в зависимости от продукта, который вы используете, этот метод отключения API может прекратить все платежи, связанные, например, с сетевым трафиком c, но в целом такие сборы, как стоимость хранения в экземплярах Cloud SQL, будут по-прежнему накапливаться.

В общем, это мое личное мнение, что это не лучший подход (поскольку отключение API-интерфейсов может быть довольно опасным, если у вас есть производственное приложение, а другие API-интерфейсы зависят от этого API-интерфейса), и в целом я хотел бы рассмотреть возможность использования бюджетов и предупреждений о бюджете (которые также используют облачные функции и другие службы, такие как Pub / Саб, чтобы получать уведомления). Найдите все соответствующие разделы документации, касающиеся бюджетов и бюджетных уведомлений здесь и здесь .

...