Tableau Server のバックアップ取得をスケジュール実行する

Tableau Server のバックアップ取得をスケジュール実行する

Clock Icon2024.12.07

はじめに

バージョン 2023.3.1 以降の Tableau Server は OS 要件として Amazon Linux 2023 をサポートしています。
Amazon Linux 2023 にインストールした Tableau Server でバックアップの取得をスケジュール実行してみましたので、本記事で内容をまとめてみます。

前提条件

以下の環境で Tableau Server をインストール済みです。

  • Tableau Server バージョン 2024.2.4
    • 単一サーバー構成
  • インスタンスタイプ:m5.4xlarge
    • vCPU:16
    • メモリ:64 GB
  • ボリューム
    • ルートボリューム:8 GB
    • 追加ボリューム:30 GB
      • マウント先:/opt/tableau
  • Tableau Server のインストールディレクトリ
    • 既定:opt/tableau/tableau_server
  • データディレクトリ(バックアップなどの出力先ディレクトリ)
    • opt/tableau/data/
    • ※既定(/var/opt/tableau/tableau_server)から変更
  • Tableau Server で取得したバックアップを配置する S3 バケットを作成し関連する IAM Role をTableau Server に関連付け済み
  • バックアップファイルの取得先 ※既定から変更
    • Tableau Server で管理されるデータ:/opt/tableau/tableau_backups/backups
    • 構成およびトポロジーに関するデータ:/opt/tableau/tableau_backups/setting_exports

こちらの構成でのインストール手順と基本的なバックアップ取得の方法~S3への配置までの手順は以下をご参照ください。

https://dev.classmethod.jp/articles/tableau-server-install-on-amazon-linux-2023-try/
https://dev.classmethod.jp/articles/tableau-server-on-amazon-linux-2023-backup-procedure/

バックアップのデータ型

前提として Tableau Server で取得可能なバックアップは以下の2種類存在します。ここではそれぞれを取得対象とします。

  • Tableau Server で管理されるデータ
    • tsm maintenance backup コマンドで取得する
    • コマンドのオプションでスケジュール実行による取得も可能
  • 構成およびトポロジデータ
    • tsm settings exportコマンドで取得する
    • スケジュール実行のオプションはない

各バックアップの詳細は以下をご参照ください。

https://dev.classmethod.jp/articles/tableau-server-backup-restore-procedure/

Tableau Server で管理されるデータ

スケジュール実行に関するオプション

tsm maintenance backup コマンドで取得できる Tableau Server で管理されるデータのバックアップ取得はスケジュール実行に関するオプションを提供しています。

https://help.tableau.com/current/server-linux/ja-jp/db_backup.htm#ScheduleBackups

スケジュール実行に関するオプションは以下です。

オプション 概要
-sn, --schedule-name <name> 作成または更新するスケジュールの名前
-sr,--schedule-recurrence <frequency> スケジュールの繰り返し頻度。有効なオプションは、daily 、weekly 、または monthly
-st,--schedule-time HH:MM スケジュールを実行する必要がある時刻 (24 時間形式: HH:MM)
-sd,--schedule-days <day[,day]> ・-sr が weekly または monthly の際に指定
・スケジュールを実行する日付レベルのタイミング
-sr で weekly の場合: 1 ~ 7 (月曜日は 1、日曜日は 7)
-sr で monthly の場合: 1 ~ 31 を使用(30日までなど月に指定した日が含まれていない場合は、その月の最終日を使用します)。
複数の値を指定する際はコンマで区切りる

以下はドキュメント記載の例ですが、この場合、毎週土曜日の正午に実行されるweekly-saturday-backup という名前の定期的なバックアップ スケジュールが作成されます。

tsm maintenance backup -f ts_saturday_backup -sr weekly -st 12:00 -sd 6 -sn weekly-saturday-backup

他の例として、以下の場合は毎日17時に実行されるdaily-backupという名前の定期的なバックアップ スケジュールが作成されます。

tsm maintenance backup -f tableau-server-data -sr daily -st 17:00 -sn daily-backup

バックアップをスケジュール

$ tsm maintenance backup -f tableau-server-data -sr daily -st 17:00 -sn daily-backup
スケジュール ID が 1 の daily スケジュールを作成しました。次は 2024/12/06 17:00 に実行されます。

作成したスケジュールは tsm schedules list で確認できます。各バックアップには自動で ID が割り振られます。

$ tsm schedules list
スケジュール ID: 1
        名前: daily-backup
        タイプ: GenerateBackupJob
        状態: アクティブ
        次の実行時刻: 2024/12/06 17:00
        繰り返しのタイプ: DAILY、17:00

スケジュールの時間になるとバックアップが取得されます。Tableau Server が停止状態であっても実行できます。

image

この場合、取得されたバックアップファイルは以下のようになります。スケジュール実行の場合、デフォルトでスケジュール実行された日時の情報が接頭辞に付与されます。

$ ls /opt/tableau/tableau_backups/backups
2024.12.06.17.00-tableau-server-data.tsbak 

実行後、再度tsm schedules list でスケジュールを確認すると、次回の実行時刻が更新されています。

$ tsm schedules list
スケジュール ID: 1
        名前: daily-backup
        タイプ: GenerateBackupJob
        状態: アクティブ
        次の実行時刻: 2024/12/07 17:00
        繰り返しのタイプ: DAILY、17:00

バックアップのスケジュール変更

作成したスケジュールを変更する際はtsm schedules update を使用します。
一部は、スケジュール設定と同様ですが、オプションは以下の通りです。

オプション 必須かどうか 概要
-si,--schedule-id <scheduleID> 必須 更新するスケジュールの ID
-sr,--schedule-recurrence <frequency> 必須 スケジュールの繰り返し頻度。有効なオプションは、daily 、weekly 、または monthly
-st,--schedule-time HH:MM 必須 スケジュールを実行する必要がある時刻 (24 時間形式: HH:MM)
-sd,--schedule-days <day[,day]> -sr が weekly または monthly の際に指定 スケジュールを実行する日付レベルのタイミング
-sr で weekly の場合: 1 ~ 7 (月曜日は 1、日曜日は 7)
-sr で monthly の場合: 1 ~ 31 を使用(30日までなど月に指定した日が含まれていない場合は、その月の最終日を使用します)。
複数の値を指定する際はコンマで区切ります。

以下のように使用します。

tsm schedules update -si <scheduleID> -st <time_to_run> -sr <recurrence_frequency>

例:スケジュールID 1 のスケジュールを、毎日 18:00 に実行されるように変更

tsm schedules update -si 1 -sr daily -st 18:00

https://help.tableau.com/current/server/ja-jp/cli_schedules_tsm.htm#sched_update

コマンド実行後、プロンプトには何も表示されないので、再度以下のコマンドで変更が適用されていることを確認します。

$ tsm schedules list
スケジュール ID: 1
        名前: daily-backup
        タイプ: GenerateBackupJob
        状態: アクティブ
        次の実行時刻: 2024/12/06 18:00
        繰り返しのタイプ: DAILY、18:00

スケジュールを停止したい場合はtsm schedules suspendを使用します。オプションでスケジュールの ID か名称を指定します。

tsm schedules suspend -si 1

実行後スケジュールをリストするとステータスが「一時停止」となっています。

$ tsm schedules list
スケジュール ID: 1
        名前: daily-backup
        タイプ: GenerateBackupJob
        状態: 一時停止
        繰り返しのタイプ: DAILY、18:00

再開する際はtsm schedules updateを使用できます。

https://help.tableau.com/current/server/ja-jp/cli_schedules_tsm.htm#tsm-schedules-delete

構成およびトポロジデータ

こちらはスケジュール実行のオプションがないので、CRON など何らかの方法が必要です。

スクリプトの定期実行

EventBridge Scheduler と SSM Run Command を使用して定期的にスクリプトを実行する

構成およびトポロジデータは Tableau Server の機能として取得できない点や最終的にバックアップファイルを S3 などに自動的に配置したい場合、何らかの方法でスクリプトをスケジュール実行します。
ここでは Amazon EventBridge Scheduler から AWS Systems Manager Run Command によるスケジュール実行を試してみます。

https://docs.aws.amazon.com/ja_jp/scheduler/latest/UserGuide/what-is-scheduler.html
https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/run-command.html

また、こちらの実装には以下を参考とさせていただきました

https://business.ntt-east.co.jp/content/cloudsolution/ihcm_column-10.html

前提条件

今回検証する際の条件や実施内容は以下の通りです。

  • 前提
    • Tableau Server で管理されるデータのバックアップは上述のtsm maintenance backupコマンドのスケジュール実行機能で取得する
  • スクリプトで実施すること
    • 構成およびトポロジデータをエクスポートし S3 に配置
    • Tableau Server で管理されるデータのバックアップファイル(.tsbak)の有無を確認
      • ファイルがあれば S3 に配置
      • ファイルがない場合はエラー
  • 通知
    • SSM Run Command ではコマンドの実行状態に関する SNS 通知を受け取ることができるため、こちらを使用します

https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/monitoring-sns-notifications.html

  • 実行ログの出力
    • EventBridge Scheduler では SSM Run Command の実行に対して S3 バケットに実行ログを出力できるので合わせて出力してみます

https://dev.classmethod.jp/articles/tsnote-systemsmanager-eventbridge-scheduler-runcommand-document-logs-output/

SNS トピックを作成

通知用に SNS トピックを作成します。

image 1

ここでは簡単に Eメールを使用します。

image 2

サブスクリプションを作成後、エンドポイントに指定したメールアドレス宛に確認のメールが届くので [Confirm subscrtiption] をクリックします。

image 3

下図の表示になります。

image 4

サブスクリプションの確認後、コンソール側でもステータスが更新されます。

image 5

SNS 通知を使用する場合、SSM から SNS を使用できるように IAM ロール、IAM ポリシーを設定します。ここでは以下の通り、設定しました。

IAM ポリシー

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "sns:Publish"
            ],
            "Resource": "arn:aws:sns:us-east-1:<アカウントID>:yasuhara-test-topic"
        }
    ]
}

信頼関係

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "",
            "Effect": "Allow",
            "Principal": {
                "Service": [
                    "ssm.amazonaws.com"
                ]
            },
            "Action": "sts:AssumeRole"
        }
    ]
}

https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/monitoring-sns-notifications.html

Amazon EventBridge Scheduler:スケジュールグループを作成

EventBridge Scheduler 側でスケジュールグループを作成します。ここでは下図の内容で作成しました。

image 6

EventBridge Scheduler の作成

次に EvenBridge Scheduler を作成します。
任意のスケジュール名を指定し、先程作成したスケジュールグループを指定します。

image 7

任意のスケジュールパターンを指定します。

image 8

「ターゲットの選択」では「System Manager」を指定します。

image 9

API は「SendCommand」です。

image 10

https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_SendCommand.html

上記のドキュメントを参考に、まずは動作確認として以下の内容でリクエスト作成してみます。

{
  "DocumentName": "AWS-RunShellScript",
  "Parameters": {
    "commands": [
      "DATE=$(date +%Y-%m-%d)",
      "TIME=$(date +%H-%M-%S)",
      "su - ec2-user -c \"tsm settings export -f /opt/tableau/tableau_backups/setting_exports/output_file-$DATE-$TIME.json\"",
      "aws s3 cp /opt/tableau/tableau_backups/setting_exports/ s3://<バケット名>/setting/$DATE/ --recursive",      
      "aws s3 cp /opt/tableau/tableau_backups/backups/ s3://<バケット名>/maintenance-backup/$DATE/ --recursive"     
    ]
  },
  "Targets": [
    {
       "Key": "InstanceIds",
       "Values": [
          "<コマンドの実行対象となるEC2インスタンスのID>"
       ]
    }
 ],
  "MaxConcurrency": "1",
  "MaxErrors": "0",
  "TimeoutSeconds": 300,
   "NotificationConfig": {
    "NotificationArn": "arn:aws:sns:us-east-1:<アカウントID>:yasuhara-test-topic",
    "NotificationEvents": [
       "Failed",
       "Success"
    ],
    "NotificationType": "Command"
 },
 "ServiceRoleArn": "arn:aws:iam::<アカウントID>:role/yasuhara-sns-test-role",
 "OutputS3BucketName": "<バケット名>",
 "OutputS3KeyPrefix": "ssm-runcommand/"
}

ポイントは以下です。

  • 具体的なコマンド
    • 構成およびトポロジデータのエクスポート
      • tsm コマンドを実行できる tsmadmin グループのユーザーとして実行
    • 構成およびトポロジデータの S3 への配置
    • Tableau Server で管理されるデータを S3 に配置
  • ターゲット
    • Tableau Server をインストールした EC2 インスタンスの ID を指定
  • 通知
    • NotificationArnで上記の手順で作成した SNS トピックの Arn を指定
  • ServiceRoleArn
    • 後述する IAM ロールの Arn を指定
  • OutputS3BucketName
    • ログの出力先となる S3 を指定
      • ここではバックアップファイルの配置先と同一の S3バケットを指定
      • バックアップファイル配置用に Put 権限を持つポリシーが紐づく IAM ロールは付与済み

ServiceRole(Scheduler 実行ロール)

EvenBridge Scheduler の実行ロールは、以下を使用しました。

IAM ポリシー

{
	"Version": "2012-10-17",
	"Statement": [
		{
			"Effect": "Allow",
			"Action": "ssm:SendCommand",
			"Resource": [
				"arn:aws:ssm:*:*:document/AWS-RunShellScript",
				"arn:aws:ec2:us-east-1:<アカウントID>:instance/<EC2インスタンスのID>"
			]
		},
		{
			"Effect": "Allow",
			"Action": "iam:PassRole",
			"Resource": "arn:aws:iam::<アカウントID>:role/yasuhara-sns-test-role"
		}
	]
}

信頼関係

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "scheduler.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}

実行結果を確認

はじめに1分間隔でスケジュールしたのですが、この場合以下のように実行を確認できました。

image 11

バケットを確認してみると、毎分ファイルの更新を確認できました。

  • Tableau Server で管理されるデータ

image 12

  • 構成およびトポロジデータ
    • こちらは実行ごとに出力する設定
    • ※特定のディレクトリ配下のファイルを送付する設定なので、別に検証用途で出力した内容も含まれています

image 13

シェルスクリプトファイルを作成

今回の設定であれば、tsm の機能でメインのバックアップファイルをスケジュール取得するようにしているため、スクリプトの実行タイミングで、このバックアップファイルが出力されていることを想定しています。
何らかのエラー等でバックアップファイルが出力されていない場合は、この点を確認できると嬉しいので、条件分岐などを入れたシェルスクリプトファイルを作成し、EC2 インスタンス上に配置し、実行させてみます。

シェルスクリプトファイルを作成

はじめに、スクリプトファイルの配置先ディレクトリを以下に作成しました。

sudo mkdir /opt/tableau/backup_scripts

今回の検証環境の場合、以下のディレクトリ構成となります。

$ tree /opt/tableau -d -L 2
/opt/tableau
├── backup_scripts
├── data
│   ├── config
│   ├── data
│   ├── logs
│   └── temp
├── tableau_backups
│   ├── backups
│   └── setting_exports
├── tableau_driver
│   └── jdbc
└── tableau_server
    ├── manifests
    └── packages

スクリプトファイルを作成します。

sudo touch /opt/tableau/backup_scripts/tableau_backup.sh
$ sudo ls /opt/tableau/backup_scripts
tableau_backup.sh

ファイルを編集します。

sudo vi /opt/tableau/backup_scripts/tableau_backup.sh

ここでは以下の内容を追記し保存しました。

#!/bin/bash
set -xu

# 現在の日付と時刻を取得
DATE=$(date +%Y-%m-%d)
TIME=$(date +%H-%M-%S)

# 変数を定義
backup_dir="/opt/tableau/tableau_backups/backups/"                # バックアップファイル保存ディレクトリ
settings_export_dir="/opt/tableau/tableau_backups/setting_exports/" # 設定エクスポート保存ディレクトリ
s3_bucket="<バケット名>"                                          # S3 バケット名
s3_backup_path="maintenance-backup/${DATE}/"                     # S3 バックアップ保存先パス
s3_settings_path="setting/${DATE}/"                              # S3 設定保存先パス
file_extension="*.tsbak"                                         # 対象とするバックアップファイルの拡張子
settings_file="output_file-${DATE}-${TIME}.json"                 # 設定エクスポートファイル名
current_time() {
    date '+%Y-%m-%d %H:%M:%S'
}

# 構成およびトポロジデータをエクスポート
echo "$(current_time) Exporting Tableau settings..."
su - ec2-user -c "tsm settings export -f ${settings_export_dir}${settings_file}"
if [ $? -ne 0 ]; then
    echo "$(current_time) Error: Failed to export Tableau settings." >&2
    exit 1
fi
echo "$(current_time) Successfully exported Tableau settings to ${settings_export_dir}${settings_file}"

# 構成およびトポロジデータをS3に配置
echo "$(current_time) Uploading Tableau settings export to S3..."
aws s3 cp "$settings_export_dir" "s3://$s3_bucket/$s3_settings_path" --recursive
if [ $? -ne 0 ]; then
    echo "$(current_time) Error: Failed to upload Tableau settings to S3." >&2
    exit 1
fi
echo "$(current_time) Successfully uploaded Tableau settings to s3://$s3_bucket/$s3_settings_path"

# Tableau Serverで管理されるデータ(.tsbak)が存在するか確認
echo "$(current_time) Checking for $file_extension files in $backup_dir..."
found_files=$(find "$backup_dir" -type f -name "$file_extension")
if [ -z "$found_files" ]; then
    echo "$(current_time) Error: No $file_extension files found in $backup_dir. Exiting." >&2
    exit 1
fi

# 見つかったファイルをログに出力する
echo "$(current_time) Found the following $file_extension files:"
echo "$found_files"

# Tableau Serverで管理されるデータ(.tsbak)をS3に配置
echo "$(current_time) Uploading all $file_extension files in $backup_dir to S3..."
aws s3 cp "$backup_dir" "s3://$s3_bucket/$s3_backup_path" --recursive --exclude "*" --include "$file_extension"
if [ $? -ne 0 ]; then
    echo "$(current_time) Error: Failed to upload $file_extension files to S3." >&2
    exit 1
fi
echo "$(current_time) Successfully uploaded $file_extension files to s3://$s3_bucket/$s3_backup_path"

ファイルの実行権限を付与します。

sudo chmod +x /opt/tableau/backup_scripts/tableau_backup.sh

EventBridge Scheduler を作成

スクリプトファイルを実行する新しい EventBridge Scheduler を作成します。リクエストパラメータは以下の通りとしました。

{
  "DocumentName": "AWS-RunShellScript",
  "Parameters": {
    "commands": [
      "sudo /opt/tableau/backup_scripts/tableau_backup.sh"     
    ]
  },
  "Targets": [
    {
       "Key": "InstanceIds",
       "Values": [
          "<コマンドの実行対象となるEC2インスタンスのID>"
       ]
    }
 ],
  "MaxConcurrency": "1",
  "MaxErrors": "0",
  "TimeoutSeconds": 300,
   "NotificationConfig": {
    "NotificationArn": "arn:aws:sns:us-east-1:<アカウントID>:yasuhara-test-topic",
    "NotificationEvents": [
       "Failed",
       "Success"
    ],
    "NotificationType": "Command"
 },
 "ServiceRoleArn": "arn:aws:iam::<アカウントID>:role/yasuhara-sns-test-role",
 "OutputS3BucketName": "<バケット名>",
 "OutputS3KeyPrefix": "ssm-runcommand/"
}

実行結果を確認

ここでは5分間隔で実行されるようにスケジュールし結果を確認しました。

  • Tableau Serverで管理されるデータ
    • 上記と別日に検証したのですが、実行した日のパスで指定のディレクトリ内のバックアップファイルが配置されていました

image 14

  • 構成およびトポロジーデータ
    • こちらも同様で指定の S3 パスで EC2 側の指定のディレクトリ配下のファイルが配置されていました

image 15

Tableau Server で管理されるデータ(.tsbak)が存在しない場合、エラーとなるはずなので、tsbak ファイルを削除してスケジュール実行されるのを待ちます。

EC2 側で既存のバックアップファイルを削除

$ sudo rm /opt/tableau/tableau_backups/backups/*
$ sudo rm /opt/tableau/tableau_backups/setting_exports/*
$ ls /opt/tableau/tableau_backups/*
/opt/tableau/tableau_backups/backups:

/opt/tableau/tableau_backups/setting_exports:

スケジュール実行後、コマンド実行履歴としては意図した通りエラーとなっていました。

image 16

処理の順番として、先に構成およびトポロジデータをエクスポート、S3 に配置するようにしているため、最新の構成データはエクスポートされ S3 にも配置されていました。

$ ls /opt/tableau/tableau_backups/*
/opt/tableau/tableau_backups/backups:

/opt/tableau/tableau_backups/setting_exports:
output_file-2024-12-07-15-30-45.json

image 17

Tableau Server で管理されるデータについて S3 側に既存のものはありますが、当然内容は更新されていませんでした。

image 18

SNS の通知としては、ここでは成功・失敗いずれも通知対象としているので、実行の度に以下のようなメールが届きます。

image 19

出力ログの確認

ログの出力先としてバックアップファイルの配置先と同じ S3 バケットを指定しているので、コマンド実行の度にこちらにログが出力されます。

image 20

各実行にはコマンドIDが振られます。

image 21

S3 では指定のパスに以下のようにコマンドIDごとにさらにログが配置されます。

image 22

今回であれば以下の通り出力されます。

image 23

エラーとなった実行の stderr を確認すると以下のようになっており、バックアップファイルがないことをこちらからも確認できました。

++ date +%Y-%m-%d
+ DATE=2024-12-07
++ date +%H-%M-%S
+ TIME=15-30-45
+ backup_dir=/opt/tableau/tableau_backups/backups/
+ settings_export_dir=/opt/tableau/tableau_backups/setting_exports/
+ s3_bucket=<S3バケット名>
+ s3_backup_path=maintenance-backup/2024-12-07/
+ s3_settings_path=setting/2024-12-07/
+ file_extension='*.tsbak'
+ settings_file=output_file-2024-12-07-15-30-45.json
++ current_time
++ date '+%Y-%m-%d %H:%M:%S'
+ echo '2024-12-07 15:30:45 Exporting Tableau settings...'
+ su - ec2-user -c 'tsm settings export -f /opt/tableau/tableau_backups/setting_exports/output_file-2024-12-07-15-30-45.json'
+ '[' 0 -ne 0 ']'
++ current_time
++ date '+%Y-%m-%d %H:%M:%S'
+ echo '2024-12-07 15:30:48 Successfully exported Tableau settings to /opt/tableau/tableau_backups/setting_exports/output_file-2024-12-07-15-30-45.json'
++ current_time
++ date '+%Y-%m-%d %H:%M:%S'
+ echo '2024-12-07 15:30:48 Uploading Tableau settings export to S3...'
+ aws s3 cp /opt/tableau/tableau_backups/setting_exports/ s3://<S3バケット名>/setting/2024-12-07/ --recursive
+ '[' 0 -ne 0 ']'
++ current_time
++ date '+%Y-%m-%d %H:%M:%S'
+ echo '2024-12-07 15:30:49 Successfully uploaded Tableau settings to s3://<S3バケット名>/setting/2024-12-07/'
++ current_time
++ date '+%Y-%m-%d %H:%M:%S'
+ echo '2024-12-07 15:30:49 Checking for *.tsbak files in /opt/tableau/tableau_backups/backups/...'
++ find /opt/tableau/tableau_backups/backups/ -type f -name '*.tsbak'
+ found_files=
+ '[' -z '' ']'
++ current_time
++ date '+%Y-%m-%d %H:%M:%S'
+ echo '2024-12-07 15:30:49 Error: No *.tsbak files found in /opt/tableau/tableau_backups/backups/. Exiting.'
2024-12-07 15:30:49 Error: No *.tsbak files found in /opt/tableau/tableau_backups/backups/. Exiting.
+ exit 1
failed to run commands: exit status 1

さいごに

Tableau Server でのバックアップファイルの取得をスケジュール実行してみました。ここではファイルを取得したり S3 に配置するまでの内容ですが、実際には S3 に配置できたファイルは EC2 側から削除する処理も必要かと思います。また、ログのクリーンアップも組み込めます。
SSM Run Command であれば簡単な通知とログもあわせて S3 に出力できて便利だと思いました。
こちらの内容が何かの参考になれば幸いです。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.