-
Notifications
You must be signed in to change notification settings - Fork 247
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Updated With suggestions #11 (review)
- Loading branch information
1 parent
322160d
commit eb32c4b
Showing
3 changed files
with
192 additions
and
18 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,126 @@ | ||
Description: > | ||
This template sets up AWS Health Tool to send custom text or SMS notifications via Amazon SNS when an AWS Health event happens by using AWS Lambda and Amazon CloudWatch Events. | ||
Parameters: | ||
PhoneNumber: | ||
Type: String | ||
Default: +1XXX5550100 | ||
Description: The phone number to send notifications to. | ||
|
||
|
||
Metadata: | ||
AWS::CloudFormation::Interface: | ||
ParameterLabels: | ||
PhoneNumber: | ||
default: "Phone number" | ||
ParameterGroups: | ||
- Label: | ||
default: AWS Health Tool Configuration | ||
Parameters: | ||
- PhoneNumber | ||
|
||
|
||
Resources: | ||
LambdaExecutionRole: | ||
Type: AWS::IAM::Role | ||
Properties: | ||
AssumeRolePolicyDocument: | ||
Version: '2012-10-17' | ||
Statement: | ||
- | ||
Effect: Allow | ||
Principal: | ||
Service: | ||
- lambda.amazonaws.com | ||
Action: | ||
- sts:AssumeRole | ||
Path: "/" | ||
|
||
LambdaRolePolicies: | ||
Type: AWS::IAM::Policy | ||
Properties: | ||
PolicyName: sms-notifier | ||
PolicyDocument: | ||
Version: '2012-10-17' | ||
Statement: | ||
- | ||
Effect: Allow | ||
Action: sns:Publish | ||
Resource: '*' | ||
- | ||
Effect: Allow | ||
Action: | ||
- logs:CreateLogGroup | ||
- logs:CreateLogStream | ||
- logs:PutLogEvents | ||
Resource: arn:aws:logs:*:*:* | ||
Roles: | ||
- | ||
Ref: LambdaExecutionRole | ||
|
||
SmsNotifierFunction: | ||
Type: AWS::Lambda::Function | ||
Properties: | ||
Handler: index.handler | ||
Role: !GetAtt LambdaExecutionRole.Arn | ||
Environment: | ||
Variables: | ||
PHONE_NUMBER: !Ref PhoneNumber | ||
Code: | ||
ZipFile: > | ||
// Sample Lambda Function to send notifications via text when an AWS Health event happens | ||
'use strict'; | ||
let AWS = require('aws-sdk'); | ||
let sns = new AWS.SNS(); | ||
//main function which gets AWS Health data from Cloudwatch event | ||
exports.handler = (event, context, callback) => { | ||
//get phone number from Env Variable | ||
let phoneNumber = process.env.PHONE_NUMBER; | ||
//extract details from Cloudwatch event | ||
let eventName = event.detail.eventTypeCode | ||
let healthMessage = `The following AWS Health event type has occured: ${eventName} For more details, please see https://phd.aws.amazon.com/phd/home?region=us-east-1#/dashboard/open-issues`; | ||
//prepare message for SNS to publish | ||
let snsPublishParams = { | ||
Message: healthMessage, | ||
PhoneNumber: phoneNumber, | ||
}; | ||
sns.publish(snsPublishParams,(err,data) => { | ||
if (err) { | ||
const snsPublishErrorMessage = `Error publishing AWS Health event to SNS`; | ||
console.log(snsPublishErrorMessage, err, err.stack); // adding the err.stack | ||
callback(snsPublishErrorMessage); | ||
} | ||
const snsPublishSuccessMessage = `Successfully got details from AWS Health event, ${eventName} and sent SMS via SNS.`; | ||
console.log(snsPublishSuccessMessage, data); | ||
callback(null, snsPublishSuccessMessage); //return success | ||
}); | ||
}; | ||
Runtime: nodejs4.3 | ||
|
||
AwsHealthEventRule: | ||
Type: AWS::Events::Rule | ||
Properties: | ||
Description: AWSHealthEventRule | ||
EventPattern: | ||
source: | ||
- aws.health | ||
State: ENABLED | ||
Targets: | ||
- | ||
Arn: !GetAtt SmsNotifierFunction.Arn | ||
Id: SmsNotifierLambdaFunction | ||
|
||
PermissionForEventsToInvokeLambda: | ||
Type: AWS::Lambda::Permission | ||
Properties: | ||
FunctionName: !Ref SmsNotifierFunction | ||
Action: lambda:InvokeFunction | ||
Principal: events.amazonaws.com | ||
SourceArn: !GetAtt AwsHealthEventRule.Arn |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters