さくらのクラウド APIを利用してアーカイブ作製

2017-12-22

さくらのクラウドでAPIを利用した自動アーカイブのシェルスクリプト

前回の記事(yumで「jq」コマンドをインストールする )で、JSONを利用できるになったので、さくらのクラウドのAPIを利用して自動アーカイブを作成するシェルスクリプトを作製します。

自動アーカイブの流れですが、2つのシェルスクリプトで動作します。1個目は「アーカイブを作成するシェルスクリプト」2個目は「古いアーカイブあれば削除するシェルスクリプト」です

また、本記事とは別で保存されているアーカイブリストをメールするシェルスクリプトも作製します。Cronでアーカイブが作成された後に実行するようにして、アーカイブが毎日きちんと作成されているかメールで確認できるようにします

私の環境ではアーカイブは前日分の1世代のみ保存する仕様で作製しています。複数の世代を保存する場合はシェルスクリプトの改変が必要です

APIを利用してアーカイブを作成するシェルスクリプト

さくらのクラウドで自動で動作するシェルスクリプトですが、以下のような流れになります。

  1. アーカイブの名前を元に絞り込みで、アーカイブIDを取得します。
    ※このアーカイブIDは古いアーカイブあれば削除するシェルスクリプト」で使用します
  2. 取得したアーカイブIDをファイルに保存してIDの件数を取得します
  3. 1世代しか保存しないので、1個のアーカイブIDがあればOKです、なければ指定したアドレスにメールして処理を終了します。
  4. アーカイブIDが1個なら、アーカイブ作製をします

  • 「Access Token」「Access Token Secret 」「MAILADDR」等の使用する環境に変更して下さい
  • Curlコマンド内の「Name」「Description」も使用する環境に変更して下さい。筆者の場合はホスト名はwww01だったので(www01_archive)としています

APIを利用して古いアーカイブあれば削除するシェルスクリプト

削除するシェルスクリプトですが、以下のような流れになります

  1. アーカイブを作成するシェルスクリプト」で作製したアーカイブIDのファイルがあるかどうかのチェックをします
  2. アーカイブIDのファイルが無かった場合は、処理を終了します
  3. アーカイブIDのファイルが有った場合は、削除対象のアーカイブIDとします
  4. アーカイブの名前を元に絞り込みで、アーカイブIDの件数を確認します
  5. アーカイブIDの件数が2個なら、(3)で取得したアーカイブIDのアーカイブを削除します
  6. アーカイブIDが件数が3個以上なら、エラーメールを送信します

  • 「Access Token」「Access Token Secret 」「MAILADDR」等の使用する環境に変更して下さい
  • Curlコマンド内の「Name」「Description」も使用する環境に変更して下さい。筆者の場合はホスト名はwww01だったので(www01_archive)としています

アーカイブ作製・削除・確認するシェルスクリプトをCronに登録する

上記で制作したシェルスクリプトをCronに登録します。
アーカイブを作成するシェルスクリプトは「CreateArchive.sh」として、毎日6時に実行されます
アーカイブが2世代以上ある場合に削除するシェルスクリプトは「CheckArchive.sh」として30分毎に実行されます。

さくらのクラウドAPI関連記事