2012-06-05 5 views
5

그래서 cron.yaml을 사용하여 GAE Datastore 백업을 자동화하려고합니다. 또한 Google Cloud Storage를 백업 대상으로 사용하고 싶습니다. 버킷을 만들고 ACL을 설정했습니다. 수동 백업은 Datastore 관리 콘솔에서 작동합니다. 나는 cron이 작동하도록 할 수 있습니다. 그러나 우리는 동일한 코드베이스를 dev, staging, production의 3 가지 다른 환경에 적용합니다. 따라서 응용 프로그램 이름에 따라 다른 버킷의 백업을 분리하고 싶습니다.Google Cloud Storage에 대한 자동 백업 - cron.yaml을 사용하는 Google App Engine Datastore

데이터 저장소를 myapp_staging_bk 버킷으로 이동하고 myapp_dev_bk 버킷의 dev에 저장하고 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 

나는 위의 URL에서 응용 프로그램 이름을 풀 수있는 방법을 알아낼 수 있다면이 모든 아주 쉽게 될 것입니다. 다음과 같은 내용 :

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

여기서 {myapp}는 app.yaml에있는 앱의 이름입니다.

https://developers.google.com/appengine/articles/scheduled_backups이 유형의 설정에 대해서는 아무런 언급이 없습니다.

저는 CI 서버에서이 문제를 해결할 수 있지만이 문제를 피하고 싶습니다.

누구에게 의견이 있습니까?

답변

3

자신의 코드를 호출하도록 cron 핸들러를 수정 한 다음 앱 ID를 기반으로 버킷 이름 매개 변수를 채운 후 코드를 자신의 코드에서 시작하거나 URL에서 코드를 직접 가져 와서 코드에서 가져옵니다.

0

정확히 Nick이 말한 것처럼 코드에서 Taskqueue API를 사용할 수 있습니다. 그건 cron 작업이 두포에서하는 일입니다.

파이썬을 사용하는 경우 :

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)) 
관련 문제