Ограничение квоты облачной функции Google

У меня есть облачная функция Google в Python для развертывания новых облачных функций Google (из файла .zip в моих облачных хранилищах) внутри того же проекта. Функции содержат следующий код:

import requests
import json


def make_func(request):


    # Get the access token from the metadata server
    metadata_server_token_url = 'http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token?scopes=https://www.googleapis.com/auth/cloud-platform'
    token_request_headers = {'Metadata-Flavor': 'Google'}
    token_response = requests.get(metadata_server_token_url, headers=token_request_headers)
    token_response_decoded = token_response.content.decode("utf-8")
    jwt = json.loads(token_response_decoded)['access_token']

    # Use the api you mentioned to create the function
    response = requests.post('https://cloudfunctions.googleapis.com/v1/projects/my-project/locations/us-central1/functions',
                               json={"name":"projects/my-project/locations/us-central1/functions/funct","runtime":"python37","sourceArchiveUrl":"gs://functions/main.zip","entryPoint":"hello_world","httpsTrigger": {} },
                               headers={'Accept': 'application/json', 
                                        'Content-Type': 'application/json',
                                        'Authorization': 'Bearer {}'.format(jwt)} )   
    if response:
         return 'Success! Function Created'
    else:
         return str(response.json())  

Я хочу добавить какую-то квоту / ограничить эти новые функции. Это может быть количество вызовов, вызовов в минуту, затраты на эту функцию и т. Д. Вы знаете, как я могу добавить квоту? И как я могу добавить это в свой скрипт Python?

Спасибо!


person Siem Peters    schedule 15.03.2020    source источник
comment
Если вы хотите реализовать это, это будет намного больше, чем просто пара строк, которые нужно вставить в ваш код. Поскольку вызовы облачных функций не имеют состояния, вам потребуется реализовать какой-то постоянный счетчик с использованием другого облачного продукта, чтобы проверять каждый вызов. У вас также нет возможности ограничить общие расходы, кроме общих оповещений о выставлении счетов GCP для каждого проекта, которые инициируются общими расходами по всем продуктам во всем проекте.   -  person Doug Stevenson    schedule 15.03.2020


Ответы (2)


Я написал статью для этого с Cloud Endpoint.

Скоро будет что-то более управляемое, возможно, объявление о Google Cloud Next через 3 недели. Будьте на связи!

person guillaume blaquiere    schedule 16.03.2020

Я не смог решить эту проблему для функций Google Cloud. Однако я нашел решение для функций firebase. Вы можете найти его в вопросе здесь: Ограничение скорости для облачных функций Google / Firebase ?

person Siem Peters    schedule 18.03.2020