2012-06-05 38 views
5

Quindi, sto cercando di automatizzare i nostri backup di GAE Datastore utilizzando cron.yaml. Inoltre, vorrei utilizzare Google Cloud Storage come destinazione per i nostri backup. Ho creato un bucket e configurato l'ACL. I backup manuali funzionano dalla console di amministrazione di Datastore. Posso anche far funzionare il cron. Ma, spingiamo la stessa base di codice in 3 diversi ambienti: dev, staging, production. Quindi, vorrei separare i backup in diversi bucket in base al nome dell'applicazione.Backup automatico su Google Cloud Storage - Google App Engine Datastore con cron.yaml

Vorrei mettere in scena il datastore per andare su bucket myapp_staging_bk, dev nel bucket myapp_dev_bk e vivere su myapp_live_bk.

cron.yaml:

cron: 
- description: My Daily Backup 
    url: /_ah/datastore_admin/backup.create?name=BackupToCloud&kind=LogTitle&kind=EventLog&filesystem=gs&gs_bucket_name=whitsend 
    schedule: every 12 hours 
    target: ah-builtin-python-bundle 

Tutto questo sarebbe stato super facile se potessi trovare un modo per tirare il nome dell'applicazione nella URL sopra. Qualcosa del genere:

url: /_ah/datastore_admin/backup.create?name=BackupToCloud&kind=LogTitle&kind=EventLog&filesystem=gs&{myapp}_bk=whitsend 
    schedule: every 12 hours 

dove {myapp} sarebbe il nome dell'app che si trova in app.yaml.

https://developers.google.com/appengine/articles/scheduled_backups non dice nulla su questo tipo di installazione.

So che potrei estrarlo con il nostro server CI, ma vorrei evitarlo.

Qualcuno ha qualche suggerimento?

risposta

3

Modificare il gestore cron per chiamare il proprio codice, quindi chiamare il codice per avviare il backup dal proprio codice o URLScollegarlo dal proprio codice, dopo aver inserito il parametro del nome bucket in base all'ID dell'app.

0

Per precisare cosa ha detto Nick, è possibile utilizzare l'API taskqueue nel codice. Questo è ciò che i lavori cron fanno sotto il cofano.

ad es. se usi python:

task = taskqueue.add(
    url='/_ah/datastore_admin/backup.create', 
    target='ah-builtin-python-bundle', 
    params={ 
     'name': 'my_backup', 
     'kind': ['kind1','kind2','kind3'], 
     'filesystem':'gs', 
     'gs_bucket_name':'[MY_GCS_BUCKET]', 
    }) 

response.write(
    'Task {} enqueued, ETA {}.'.format(task.name, task.eta)) 
Problemi correlati