[アップデート] AWS Transfer Family のマネージドワークフローのログを専用の CloudWatch ロググループに出力できるようになりました
いわさです。
AWS Transfer Family にはマネージドワークフローという機能があって、転送後のファイル処理などでワークフローを組み込むことが出来ます。
で、このワークフローの実行ログは CloudWatch Logs に記録されるのですが、これまではサーバーに紐づくワークフローのログはすべてサーバーのロググループに送られていて、ワークフローごとに出力先を分けるなどが出来ませんでした。
先日のアップデートで、ワークフロー作成時にそのワークフロー専用の CloudWatch ロググループを指定できるようになりました。
大村さんが以前、ログ記録ロール方式から構造化された JSON ログ記録へ切り替える方法を紹介して触れられているのですが、マネージドワークフローのログは構造化された JSON ログ記録に対応していないのでログ記録ロール経由が必要な状態でした。
今回のアナウンスにも、専用グループを指定した場合はサーバーのロギングロールが不要と明記されています。
Transfer Family delivers workflow logs only to the selected group, so no server logging role is required.
今回こちらを確認してみたので紹介します。
実際に確認してみる
今回のアップデートはすべてのリージョンのマネージドワークフローで使えるとのことなので、東京リージョンで試してみることに。
ではワークフローを作成してみましょう。
次のように Logging configuration からロググループが指定できるようになっています。

今回は事前にワークフローのログを格納するための CloudWatch ロググループを作成しておきました。
設定後はこんな感じです。

なお、作成したワークフローを AWS CLI から詳細取得してみると、StructuredLogDestinationsに指定したロググループが設定されていました。
{
"id": "w-xxxxxxxxxxxxxxxxx",
"logs": [
"arn:aws:logs:ap-northeast-1:123456789012:log-group:/aws/transfer/workflow-dedicated-verify:*"
],
"steps": [
"TAG"
]
}
上記ワークフローをサーバーに紐付けておきましょう。
なお、事前にサーバーにはログ記録ロールを紐付けたいなかったのですが、ワークフロー紐づけ後もログ記録ロールは未設定のままでした。
あとは適当にワークフローがトリガーされる操作を行ってログがどこにどう出力されるか確認するだけです。
今回だと SFTP ユーザーを作って、ファイルを1つアップロードすればワークフローが動くはず。
sftp> put testfile.txt
sftp> ls -l
-rwxr--r-- 1 - - 45 Oct 9 06:53 testfile.txt
アップロード後、専用ロググループ /aws/transfer/workflow-dedicated-verify を確認すると、w-xxxxxxxxxxxxxxxxx/{実行ID} という名前のログストリームができていました。
中身はワークフロー実行ログが構造化された JSON 形式で出力されていますね。

念のため、サーバーのデフォルトロググループ(/aws/transfer/{server-id})が作られていないことも確認しました。
$ aws logs describe-log-groups \
--log-group-name-prefix "/aws/transfer/s-xxxxxxxxxxxxxxxxx" \
--query 'logGroups[].logGroupName'
[]
サーバー側のロググループは存在せず、ログは専用グループにだけ出ていました。ログ記録ロールを持たないサーバーでも、ワークフローのログが出力されることが確認出来ましたね。良いですね。
さいごに
本日は AWS Transfer Family のマネージドワークフローのログを、ワークフロー専用の CloudWatch ロググループに出せるようになったので実際にワークフローを作って試してみました。
これまではワークフローのログがサーバーのロググループにまとめて出ていて、ログ記録ロールも必要でしたが、ワークフロー単位で出力先を分けられるようになり、さらにログ記録ロールも不要になりました。
1つのサーバーに複数のワークフローを適用しているようなケースで、ログをグループごとに分けるログ戦略が取れそうです。
逆に複数ワークフローを1つのグループに集約することも出来そうなので、ワークフローログを使って色々おもしろいこと出来そうですね。









