📝
Personal Health Dashboardのイベントをメールで通知するCloudFormationテンプレートを作ってみた
CloudWatchの請求アラームを作成するCloudFormationテンプレートを作ってみたのついでみたいなノリで作ってみました。
Personal Health Dashboardについては公式ドキュメントをご覧ください。
テンプレート
HealthEvent.json
{
"AWSTemplateFormatVersion": "2010-09-09",
"Description": "Create EventsRule to notify Personal Health Dashboard events",
"Parameters": {
"EmailAddress": {
"Description": "Enter your EmailAddress",
"Type": "String"
}
},
"Resources": {
"EventsRule": {
"Type": "AWS::Events::Rule",
"Properties": {
"Name": "NotifyHealthEvent_Rule",
"Description": "Personal Health Dashboardのイベントを通知するルール",
"EventPattern": "{\"source\":[\"aws.health\"]}",
"State": "ENABLED",
"Targets": [
{
"Arn": {
"Ref": "SNSTopic"
},
"Id": "Id123"
}
],
"EventBusName": "default"
}
},
"SNSTopic": {
"Type": "AWS::SNS::Topic",
"Properties": {
"DisplayName": "NotifyHealthEvent_Topic",
"TopicName": "NotifyHealthEvent_Topic"
}
},
"SNSTopicPolicy": {
"Type": "AWS::SNS::TopicPolicy",
"Properties": {
"PolicyDocument": {
"Fn::Sub": "{\"Version\":\"2008-10-17\",\"Id\":\"__default_policy_ID\",\"Statement\":[{\"Sid\":\"__default_statement_ID\",\"Effect\":\"Allow\",\"Principal\":{\"AWS\":\"*\"},\"Action\":[\"SNS:GetTopicAttributes\",\"SNS:SetTopicAttributes\",\"SNS:AddPermission\",\"SNS:RemovePermission\",\"SNS:DeleteTopic\",\"SNS:Subscribe\",\"SNS:ListSubscriptionsByTopic\",\"SNS:Publish\",\"SNS:Receive\"],\"Resource\":\"${SNSTopic}\",\"Condition\":{\"StringEquals\":{\"AWS:SourceOwner\":\"${AWS::AccountId}\"}}},{\"Sid\":\"AWSEvents_${EventsRule}_Id123\",\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"events.amazonaws.com\"},\"Action\":\"sns:Publish\",\"Resource\":\"${SNSTopic}\"}]}"
},
"Topics": [
{
"Ref": "SNSTopic"
}
]
}
},
"SNSSubscription": {
"Type": "AWS::SNS::Subscription",
"Properties": {
"TopicArn": {
"Ref": "SNSTopic"
},
"Endpoint": {
"Ref": "EmailAddress"
},
"Protocol": "email",
"Region": {
"Ref": "AWS::Region"
}
}
}
}
}
簡単な説明
- EventBridgeルール
{\"source\":[\"aws.health\"]}
ですべてのhealthイベントを取得 - SNSトピック
NotifyHealthEvent_Topic
という名前のトピックを作成
トピックポリシーはコンソールで作成するときと同様のもの - SNSサブスクリプション
通知先にメールアドレスを設定
メールアドレスはCloudFormationスタック作成時にパラメーターで設定
まとめ
今回はPersonal Health Dashboardのイベントをメールで通知するCloudFormationテンプレートを紹介しました。
参考になれば幸いです。
Former2最高!
Discussion