こんにちは。サーバーワークスエンジニアの伊藤Kです。
先日、某所で「CloudFormationを制する者はAWSを制す」(意訳)といった趣旨の講演を聞いて以来、CloudFormationが好きになった今日この頃です。 そこで、まずは時々ある「あるサービスのログ蓄積用にCloudWatchにロググループとログストリームを新たに追加する」のを、CloudFormationでやってみます。
CloudWatch Logs のロググループ、ログストリームについて
以下をご参照ください。 ・Amazon CloudWatch Logs の概念 ・ロググループとログストリームを操作する
図にしてみます。
CloudFormationテンプレート
こちらです。
AWSTemplateFormatVersion: "2010-09-09" Description: "LogGroup and Stream" Parameters: ## CloudWatch Parameters LogGroupName: Type: String Description: Enter LogGroupName LogStreamName: Type: String Description: Enter LogStreamName RInDays: Type: Number Description: Enter RetentionInDays Resources: LogG: Type: AWS::Logs::LogGroup DeletionPolicy: "Delete" Properties: LogGroupName: !Ref LogGroupName RetentionInDays: !Ref RInDays LogS: Type: AWS::Logs::LogStream DeletionPolicy: "Delete" Properties: LogGroupName: !Ref LogG LogStreamName: !Ref LogStreamName
実行コマンド
冒頭に記載した講演では「CloudFormationでの構築はCLIにてやるべし」との教えもあり、膝を打つ思い。 私もCLIで実行します。 クライアント環境がWindowsなので、PowerShellプロンプトからの実行です。 (Cloud9使えよ、というツッコミが入りそうですが、また別の機会に)
aws cloudformation deploy --profile "xxx" --stack-name "logstream-for-XXX" --template-file "make-LogGroup-and-Stream.yml" ` --parameter-overrides ` LogGroupName="WinLogG" ` LogStreamName="WinLogS" ` RInDays=14
1点、注意点として、RetentionInDays(保持期間)は任意の値を設定できるのではなく、 決められた値の中から選ぶ必要があります。 (文末の「参考記事」サイトより抜粋)
結果
ロググループと、空のログストリームができています。
今回はこの辺で。See you next time.
参考記事(公式リファレンス)
・AWS CloudFormation - AWS::Logs::LogGroup ・AWS CloudFormation - AWS::Logs::LogStream