Запуск / остановка экземпляров Google Cloud SQL с использованием облачных функций - PullRequest
0 голосов
/ 26 января 2020

Я очень новичок в Google Cloud Platform. Я ищу способы автоматизации запуска и остановки экземпляра mySQL в заранее установленное время. Я обнаружил, что мы можем создать облачную функцию для запуска / остановки экземпляра, а затем использовать облачный планировщик для запуска этого. Однако я не могу понять, как это работает.

Я использовал код, который нашел в GitHub. https://github.com/chris32g/Google-Cloud-Support/blob/master/Cloud%20Functions/turn_on_cloudSQL_instance https://github.com/chris32g/Google-Cloud-Support/blob/master/Cloud%20Functions/turn_off_CloudSQL_instance

Однако я не знаком ни с одним из языков программирования, таких как node, python или go. Это было причиной путаницы. Ниже приведен код, который я нашел на GitHub для включения облака SQL экземпляр:

# This file uses the Cloud SQL API to turn on a Cloud SQL instance.
from googleapiclient import discovery
from oauth2client.client import GoogleCredentials

credentials = GoogleCredentials.get_application_default()
service = discovery.build('sqladmin', 'v1beta4', credentials=credentials)
project = 'wave24-gonchristian'  # TODO: Update placeholder value.


def hello_world(request):

    instance = 'test'  # TODO: Update placeholder value.
    request = service.instances().get(project=project, instance=instance)
    response = request.execute()
    j = response["settings"]
    settingsVersion = int(j["settingsVersion"])

    dbinstancebody = {
       "settings": {
           "settingsVersion": settingsVersion,
           "tier": "db-n1-standard-1",
           "activationPolicy": "Always"
       }
    }

    request = service.instances().update(
       project=project,
       instance=instance,
       body=dbinstancebody)
    response = request.execute()
# pprint(response)

    request_json = request.get_json()

    if request.args and 'message' in request.args:
        return request.args.get('message')
    elif request_json and 'message' in request_json:
        return request_json['message']
    else:
        return f"Hello World!"

________________________

requirements.txt

google-api-python-client==1.7.8
google-auth-httplib2==0.0.3
google-auth==1.6.2
oauth2client==4.1.3

Как я упоминал ранее, я не знаком с Python. Я только что нашел этот код на GitHub. Я пытался понять, что делает эта конкретная c часть:

dbinstancebody = {
       "settings": {
           "settingsVersion": settingsVersion,
           "tier": "db-n1-standard-1",
           "activationPolicy": "Always"
       }
}

1 Ответ

0 голосов
/ 27 января 2020
dbinstancebody = {
       "settings": {
           "settingsVersion": settingsVersion,
           "tier": "db-n1-standard-1",
           "activationPolicy": "Always"
       }
}

Блок кода выше указывает sql свойства экземпляра , которые вы хотели бы обновить, среди которых наиболее актуальным для вашего случая является activationPolicy, который позволяет вам остановить / запустить sql экземпляр.

Для экземпляров второго поколения политика активации используется только для запуска или остановки экземпляра. Вы изменяете политику активации, запуская и останавливая экземпляр. Остановка экземпляра предотвращает дальнейшие начисления.

Политика активации может иметь два значения Всегда или Никогда. Всегда будет запускать экземпляр и никогда не будет останавливать экземпляр.

...