SNSを使って、CloudWatch Eventsをトリガーにしてジョブを実行する

Tips Trigger

Posted on Jan 15


こんにちは、Cloud Automator開発チームの柳瀬です。

すでにご存知の方もいると思いますが、本日AWSから新しいリリースがアナウンスされました。

CloudWatchに新しくEventsの機能が追加され、AWSリソースの状態が変化したことをトリガーにして、ユーザーが定義したアクションを実行することが出来るようになっています。例えば、特定のAWS APIがコールされたときに、EC2インスタンスを停止したりするといったことを自動化することが出来ます。今回のブログでは、このCloudWatch Eventsの使い方を簡単に紹介しつつ、Cloud Automatorとの連携について書いてみたいと思います。

CloudWatch Eventsについて

CloudWatch Eventsは、CloudWatchのコンソール画面からアクセスすることが出来ます。本日時点では、N.VirginiaOregonIrelandTokyoリージョンが対応しています。

CloudWatch Eventsはユーザーがルールを定義して使います。左メニューからEventsにアクセスし、Create ruleからルールの作成を開始します。

Event SelectorTargetsの設定をし、ルール名や使用するIAMロールを選択することでルールが作れます。指定したEventにマッチしたときにTargetsが実行されるようになっており、それぞれ以下のようなものがあります。

  • Event Selector
    • EC2 instance state change notification
    • Schedule
    • AWS API call
    • AWS console sign-in
    • Auto Scaling
  • Targets − Lambda function
    • SNS Topic
    • Kinesis stream
    • Built-in target

Event SelectorのEC2 instance state change notificationはイメージがつきやすく、ユーザーが指定したインスタンスの状態(runningstoppingterminatedなど)の状態を指定し、その状態に変化したことをイベントとします。
TargetsでLambda functionを使えばとても自由にAWSリソースが操作出来ますし、Built in targetではEBSボリュームからスナップショットを取得や、EC2インスタンスの停止をするといったことを簡単に実現出来ます。
IAMロールの作成もManagement Consoleから簡単に出来るようになっているので、そう難しくなく試してみることが出来ると思います。動作確認も指定したリソースを操作して簡単に確認出来るはずです。

Cloud Automatorとの連携

簡単にCloudWatch Eventsの紹介をしましたが、Buil-in targetよりもう少し凝ったことをやりたいけど、Lambda functionを書くよりもお手軽に実現したい場合にCloud Automatorを使ってみてはいかがでしょうか?Cloud Automatorはリリース後も定期的に機能をリリースしているので、いくつものアクションをご用意しております
以下のように、SNSトリガーを使うと今回リリースされたCloudWatch Eventsとの連携が簡単に実現出来るようになっています。

  1. こちらの記事を参考にSNSトリガーを使用したジョブを作成します
  2. 以下のようにCloudWatch EventsのTargetsで作成したSNS Topicを選択してルールを作成します

Event Selectorで指定したイベントが発生すると、SNSを経由してジョブが実行されます。
例えばEC2インスタンスがrunning状態になったら、Cloud Automatorの「AMIを作成」アクションが動作して指定したEC2インスタンスからAMIを作成したり、ELBにアタッチしたりすることが出来ます。

まとめ

CloudWatch Eventsのリリースは、AWSユーザーにとってイベントドリブンでの処理がより加速化する素晴らしいリリースだと感じました(今後の拡張も楽しみです)。
Cloud Automatorのユーザーにとっても、このように連携することで新しいトリガーとして使うことが出来ますので、是非ご活用下さい。



Search

Tags

By year

  1. 2017 (1)
  2. 2016 (30)
  3. 2015 (31)
  4. 2014 (42)