2012-06-05 3 views
5

Also versuche ich, unsere GAE-Datenspeicher-Backups mit cron.yaml zu automatisieren. Außerdem möchte ich Google Cloud Storage als Ziel für unsere Backups verwenden. Ich habe einen Bucket erstellt und die ACL eingerichtet. Manuelle Backups funktionieren von der Datastore-Admin-Konsole aus. Ich kann sogar den Cron zur Arbeit bringen. Aber wir schieben die gleiche Codebasis in 3 verschiedene Umgebungen: Entwicklung, Bereitstellung, Produktion. Daher möchte ich die Backups in verschiedenen Buckets basierend auf dem Anwendungsnamen trennen.Automatisches Backup auf Google Cloud Storage - Google App Engine-Datenspeicher mit cron.yaml

Ich würde gerne Staging-Datenspeicher zu Myapp_Staging_bk Eimer, Entwickler in myapp_dev_bk Eimer gehen und leben zu 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 

All dies wäre super einfach, wenn ich einen Weg finden, könnte den Namen der Anwendung in der obigen URL zu ziehen. Etwas wie folgt aus:

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

wo {} myapp wäre der Name der Anwendung, die in app.yaml ist.

https://developers.google.com/appengine/articles/scheduled_backups sagt nichts über diese Art von Setup.

Ich weiß, dass ich das mit unserem CI-Server machen könnte, aber ich möchte das vermeiden.

Hat jemand irgendwelche Vorschläge?

Antwort

3

Ändern Sie den Cron-Handler, um Ihren eigenen Code aufzurufen. Rufen Sie dann entweder den Code zum Starten der Sicherung aus Ihrem eigenen Code auf oder URLFischen Sie ihn aus Ihrem eigenen Code, nachdem Sie den Bucket-Namen-Parameter anhand Ihrer App-ID eingegeben haben.

0

Um zu präzisieren, was Nick gesagt hat, können Sie die Task-Warteschlange-API in Ihrem Code verwenden. Das ist, was Cron Jobs unter der Haube tun.

z.B. Wenn Sie Python verwenden:

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)) 
Verwandte Themen