LoginSignup
4
4

More than 5 years have passed since last update.

AWS Lambdaでさくらのクラウドのバックアップを毎日取得する

Last updated at Posted at 2015-12-01

さくらのクラウドもAPIを公開しているので諸々の作業をプログラマブルに制御できます。
オペミスでサーバが大変なことになった時のためにディスクのアーカイブ化(バックアップ)するためのプログラムを書いたとしても、実行するための環境をクラウドの上に構築するのもいいのですが、その環境を維持運営するのはちょっと面倒。
最近流行りのサーバレスの環境で完結させるためにAWS Lambdaを使ってみました。
02[2].PNG

Lambdaは最近Pythonに対応という話が出ていたことと、curlの呼び出しに対応しているという噂を掴んたので簡単に試すには便利かなと。
ちょうど、さくらのクラウドのAPIのサンプルはcurlでサンプルコードが公開されているので、今回はコピペでやってみました;-p

サンプルコードはこちら。
https://gist.github.com/dalice/40544c999788832531c2

sacloud_backup.py
import commands
import datetime

def _(cmd):
    return commands.getoutput(cmd) 

def lambda_handler(event, context):
    access_token = "access_token"
    access_token_secret = "access_token_secret"
    zone ="tk1v" #is1a:石狩第1ゾーン,is1b:石狩第2ゾーン,tk1a:東京第1ゾーン,tk1v:サンドボックス
    disk_id = "DISK ID"
    days = datetime.datetime.today().strftime("%Y-%m-%d")

    cmds ='''curl --user "%s":"%s" -X POST  -d '{"Archive":{"Name":"%s","SourceDisk":{"ID":"%s"}}}'  https://secure.sakura.ad.jp/cloud/zone/%s/api/cloud/1.1/archive'''

    print _(cmds % (access_token,access_token_secret,'DiskbackUP_' + days,disk_id,zone))

こちらをAWS LambdaにPythonランタイムで登録。
コードの一部を編集する必要があるので諸々準備。

03[2].PNG

まずコード中に書かれている「access_token」 と「access_token_secret」 をクラウドのコントロールパネルのAPIキーから発行します。

04[3].PNG

次にバックアップしたいディスクのリソースIDとディスクのあるゾーン情報を確認します。
今回はSandboxなので「zone」のところに”tk1v”と入れています。それ以外のゾーンの場合にはコメントにも書いているゾーンを記載します。

「disk_id」の部分にはディスクのリソースIDを記載します。
バックアップしたいディスクとゾーンの情報は揃えるようにしてください。

01[1].PNG

いつの間にかLambdaがスケジュール実行に対応していたので、Schedule expressionに「1 day」を指定。これでうまく動くと一番上の画像のように毎日どっかのタイミングで指定したディスクを対象としたアーカイブ処理が動きます。
cron記法でも実行時間の記述ができるようなので厳密に処理開始を指定することも可能です。

ね、簡単でしょ。
今回はPythonからOS上のcurlコマンドを呼び出すという邪道なことしましたが、実際にはピュアPythonで記述すればもっとゴニョゴニョできると思います。
サーバにつながっているディスクの一覧を抜き出して一気にアーカイブ作成を行うとか結構実用的な気がします。

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4