CloudWatch メトリクスのグラフを単純に SNS トピックに通知するアプリケーションを Serverless Application Repository に登録しました。
例えば通知先のトピックのサブスクライバは基本的にメッセージを処理する Lambda 関数を想定しています。利用例としては以下のようなものが思い浮かびます。
例えば Billing のグラフを毎日とある Slack チャンネルに送信することにより課金状況をコンソールにログインせず確認できたり、システムの稼働状況(負荷やジョブキューの状況など)を毎時 Slack チャンネルに投稿してくれると便利そうだと思います。
README に書いてあるとおり Serverless Application Repository を利用する方法と、デプロイスクリプトを利用する方法があります。
git clone git@github.com:53ningen/GetMetricWidgetImage.git
.env.template .env
を実行し、.env
ファイルを更新してください
3, cp config.template.yaml config.yaml
を実行し config.yaml
ファイルを更新してください
4. ./scripts/update_config
を実行すると S3 バケットにファイルを転送します
5. ./scripts/deploy
を実行するとサーバーレスアプリケーションをデプロイします以下の内容を Resource 配下に追加します
GetMetricWidgetImage: Type: AWS::Serverless::Application Properties: Location: ApplicationId: arn:aws:serverlessrepo:us-east-1:247601741829:applications/GetMetricWidgetImage SemanticVersion: 1.0.0 Parameters: ConfigBucket: YOUR_VALUE ConfigKey: YOUR_VALUE NotificationTargetTopicArn: YOUR_VALUE # RetentionInDays: '7' # Uncomment to override default value # Schedule: 'rate(60 minutes)' # Uncomment to override default value
一番ありがちなパターンっぽい Billing のグラフを取得して Slack に投稿するアプリケーションを簡単にデプロイできるものをつくっておきました。
こんな風に Slack に Billing のグラフが投稿されます
message_format
の channel には通知したい Slcak チャンネルを指定すると良いと思いますconfig.yaml
の編集が終わったら S3 バケットにアップロードしますlog_level: INFO message_format: '{"image":"{hex_image}", "title":"{title}", "initial_comment":"{title}", "channel": "#random"}' items: - metrics: - - AWS/Billing - EstimatedCharges - Currency - USD - period: 21600 stat: Maximum view: timeSeries width: 1200 height: 400 stacked: false start: 20160 # minutes timezone: +0900 region: us-east-1 title: AWS/Billing,EstimatedCharges,Currency,USD
ConfigBucket
: config.yaml
をアップロードした S3 バケット名ConfigKey
: config.yaml
の S3 オブジェクトキーIAMUsername
: KMS キーにアクセス可能にしたい IAM ユーザー名Schedule
: cron 式 or rate 式でグラフの取得を行うスケジュールを指定しますSlackVerificationToken
: Slack Channel 投稿に使う SlackVerificationToken を取得して、この欄に記入しますI acknowledge that this app creates custom IAM roles, resource policies and deploys nested applications.
にチェックを入れて、[デプロイ] を選択します