firehoseはじめにCloudFormationでFn::ForEachを使ったループ処理が2023年6月から利用出来るようになり、革命の予感を感じたので色々試行錯誤してみました。結果から言うと、求めてるレベルの利便性は得られなかったですが、今までよりは確実に少しの作業で複数のログ転送設定ができるようになりました。試行錯誤した内容については最後に記載しています。Firehoseといたします。Firehoseを間に挟む必要があります。Firehoseが必要となります。Firehoseの設定作業は無限に続きます。いうことで今回のループ処理と相性が良さそうだと思い、ループ処理で作ってみました。""S3のarnとログ転送したいロググループ名、firehose名を指定すれば利用可能な内容としています。必要に応じてLogsParameters、LogsMappingsを変更すれば何件分でも対応可能です。IAM部分は1つあれば十分なので、ループ処理からは除外。ループ処理を行う際、渡す値はmapと組み合わせるのが現状一番良い気がします。ここでリストとMapを使っているかというと、今回で一番苦労した点で以下の制限があるためです。英数字(A-Za-z0-9)とし、テンプレート内で一意である必要があります。ドキュメント対してロググループには「_」,「-」,「/」などの記号が入っていることが一般的であり、ループ処理内で変数を違う値を差し込む必要があります。この条件から与える値を「論理IDで使用する変数」と「指定するロググループの文字列」を分ける必要がありました。ちなみに今回は値が少ないのでmapの恩恵は少ないですが、他で利用する際まとめて複数の値を渡すことができるので応用が効きやすい利点があります。""今回のメインはこちらの処理。Firehose,サブスクリプションフィルターを作る処理をループ化しています。LogsParametersの数だけループし、LogsParametersの値を参照して、LogsMappingsの値を呼び出すようにしました。ロググループ作成分岐CreateLogGroupの値を使って分岐を作っています。一般的なプログラム言語のようにリストの配列数を取得して、それを論理IDの変数として回せないか。そもそもCloudFormationでカウントを進めるような記述ができないからボツ。指定したロググループ作成する際、既に存在している場合は作成しないように自動的に分岐させたかったのですが、ループ内の処理に組み込むと結構厄介なことになったので選択式としました。こちらは検証しきれてないので、なにかしら手段はあるかもしれません。尚弥が書いた記事xfacebookはてなブックマークpocketお客様のご要望に柔軟に対応いたします。お気軽にご相談ください。cloudpackは、アイレット株式会社が提供するクラウド支援サービスです。問い合わせまでトータルサポート!お問い合わせはこちらアイレットでは、様々な職種で一緒に働ける仲間を募集しています。インフラエンジニア、開発エンジニア、クリエイティブ職、営業職など、様々な職種で一緒に働ける仲間を募集しています。アイレット公式サイト採用情報をご覧ください。採用情報プライバシーポリシークラウド導入のご相談、お見積り、サービスについてのご質問などお気軽にお問い合わせください。最新情報が得られるメルマガ登録はこちら。