opswitch で作成される AMI のタグに変数を使って動的な名称を設定してみた

2024.05.12

いわさです。

クラスメソッドが無償で提供する AWS 運用かんたん自動化ツール「opswitch」というものがあります。
例えば日次で EC2 のバックアップを取得するとか、平日日中のみ RDS を起動させるとか、そういった定期運用タスクを簡単に自動化出来ます。

いつものように EC2 のバックアップ(AMI)を日次で取得するタスクを作成したのですが、作成される AMI やスナップショットに動的な値を設定したいシーンがありました。
そして実現出来るか確認したところ、opswitch のタグ設定時にはいくつか変数が用意されており、動的なタグを設定出来るようです。

EC2バックアップタスクの作成 – opswitch Support

本日は検証がてらこの機能を使ってみましたので紹介します。

EC2 AMI の自動取得設定とタグを指定

まずは動的なタグを設定する前に EC2 バックアップタスクを作成していきます。
前提として、opswitch と AWS アカウントは既に連携済みです。
自動バックアップタスクの対象を識別するために、EC2 インスタンスへタグを設定しておきます。

続いて opswitch で EC2 のバックアップタスクを作成します。
タスクメニューから「Create EC2 backup」を選択します。

タスクの設定で AMI の取得方法や条件などを設定します。
「Tag attached to created EC2 backup」という箇所があるのでこちらでタグを設定することが出来ます。
まずは固定で Name タグを設定してみます。

このタスクは AMI を作成するタスクなのですが、その下の「Attach the same tag to linked EBS snapshos」をチェックしておくと、AMI に紐づく EBS スナップショットにも同一のタグが設定されます。

早速このタスクを実行するジョブを作成し、手動実行してみました。
期待どおり次のように AMI が作成されました。指定された Nameタグも設定されましたね。

スナップショットにも同じタグを設定するオプションを有効化したので EBS スナップショットにもタグが設定されていることが確認出来ました。

変数を使ってタグを動的にしてみる

タスク作成画面の以下のコントロール「USE VARIABLES」から使用可能な変数を確認することが出来ます。

${変数名}の形式で使うことが出来ます。
EC2 インスタンスのインスタンス ID や Name タグ、実行日時なども利用が出来ます。

今回は試しに、次のように全ての変数をハイフン区切りで設定してみましょう。

先ほどと同じようにジョブを実行してみます。
作成された AMI を見てみると Name タグが次のように設定されていることが確認出来ました。
スペースなども入る感じですね。

EBS スナップショットにも同様にタグが設定されていますね。

EC2 の Name が設定されていない場合

今回そもそも一番確認したかったのはこちらなのですが、EC2 インスタンスに Name タグが設定されていない場合もあると思います。
この場合に opswitch のタスクにインスタンス名のタグが使われていても、ジョブの実行には成功し、次のように空文字が設定されます。

さいごに

本日は opswitch で作成される AMI のタグに変数を使って動的な名称を設定してみました。

よく opswitch 基本的な利用方法だと思いますが、実は固定のタグ値しか設定したことがありませんでした。
AMI やスナップショットを一覧から確認する際にすぐにコンテキストを認識するためにはタグを設定する必要があります。
対象インスタンス情報や実行日時などが設定出来るこの機能はしっかり使っていきたいところです。