From c1943de2be0dd3093e7b86ad0fe8ba6644b0f957 Mon Sep 17 00:00:00 2001 From: Jordan Roth <41999487+jordanaroth@users.noreply.github.com> Date: Thu, 8 Jul 2021 14:33:36 -0700 Subject: [PATCH] multi-region beta --- ..._CFN_MGMT_ROLE.yml => 01_CFN_MGMT_ROLE.yml | 0 ...FN_DEPLOY_AHA.yml => 02_CFN_DEPLOY_AHA.yml | 51 +- BETA-multi-region/01_CFN_MGMT_ROLE.yml | 48 ++ BETA-multi-region/02_CFN_MR_DEPLOY_AHA.yaml | 682 ++++++++++++++++++ .../README.md | 120 +-- .../handler.py | 293 +++++--- .../messagegenerator.py | 369 ++++++---- BETA-org-member-deployment/CODE_OF_CONDUCT.md | 4 - BETA-org-member-deployment/CONTRIBUTING.md | 59 -- BETA-org-member-deployment/LICENSE | 15 - CFN_AHA.yml | 314 -------- README.md | 91 ++- handler.py | 292 +++++--- messagegenerator.py | 369 ++++++---- readme-images/architecture.png | Bin 103927 -> 229418 bytes readme-images/workflow.png | Bin 0 -> 32007 bytes 16 files changed, 1797 insertions(+), 910 deletions(-) rename BETA-org-member-deployment/01_CFN_MGMT_ROLE.yml => 01_CFN_MGMT_ROLE.yml (100%) rename BETA-org-member-deployment/02_CFN_DEPLOY_AHA.yml => 02_CFN_DEPLOY_AHA.yml (86%) create mode 100644 BETA-multi-region/01_CFN_MGMT_ROLE.yml create mode 100644 BETA-multi-region/02_CFN_MR_DEPLOY_AHA.yaml rename {BETA-org-member-deployment => BETA-multi-region}/README.md (69%) rename {BETA-org-member-deployment => BETA-multi-region}/handler.py (84%) rename {BETA-org-member-deployment => BETA-multi-region}/messagegenerator.py (63%) delete mode 100644 BETA-org-member-deployment/CODE_OF_CONDUCT.md delete mode 100644 BETA-org-member-deployment/CONTRIBUTING.md delete mode 100644 BETA-org-member-deployment/LICENSE delete mode 100644 CFN_AHA.yml create mode 100644 readme-images/workflow.png diff --git a/BETA-org-member-deployment/01_CFN_MGMT_ROLE.yml b/01_CFN_MGMT_ROLE.yml similarity index 100% rename from BETA-org-member-deployment/01_CFN_MGMT_ROLE.yml rename to 01_CFN_MGMT_ROLE.yml diff --git a/BETA-org-member-deployment/02_CFN_DEPLOY_AHA.yml b/02_CFN_DEPLOY_AHA.yml similarity index 86% rename from BETA-org-member-deployment/02_CFN_DEPLOY_AHA.yml rename to 02_CFN_DEPLOY_AHA.yml index cbd3cec..bd81eda 100644 --- a/BETA-org-member-deployment/02_CFN_DEPLOY_AHA.yml +++ b/02_CFN_DEPLOY_AHA.yml @@ -34,6 +34,36 @@ Metadata: - EventSearchBack - Regions - ManagementAccountRoleArn + - AccountIDs + ParameterLabels: + AWSOrganizationsEnabled: + default: AWS Organizations Enabled? + ManagementAccountRoleArn: + default: ARN of the AWS Organizations Management Account assume role (if using) + AWSHealthEventType: + default: The types of events to get alerted on + S3Bucket: + default: Name of S3 Bucket + S3Key: + default: Name of .zip file in S3 Bucket + SlackWebhookURL: + default: Slack Webhook URL + MicrosoftTeamsWebhookURL: + default: Microsoft Teams Webhook URL + AmazonChimeWebhookURL: + default: Amazon Chime Webhook URL + FromEmail: + default: Email From + ToEmail: + default: Email To + Subject: + default: Subject of Email + HealthAPIFrequency: + default: Hours back to search for events + Regions: + default: Which regions to search for events in + AccountIDs: + default: Exclude any account numbers? Conditions: UsingSlack: !Not [!Equals [!Ref SlackWebhookURL, None]] UsingTeams: !Not [!Equals [!Ref MicrosoftTeamsWebhookURL, None]] @@ -41,6 +71,7 @@ Conditions: UsingEventBridge: !Not [!Equals [!Ref EventBusName, None]] UsingSecrets: !Or [!Condition UsingSlack, !Condition UsingTeams, !Condition UsingChime, !Condition UsingEventBridge] UsingCrossAccountRole: !Not [!Equals [!Ref ManagementAccountRoleArn, None]] + UsingAccountIds: !Not [!Equals [!Ref AccountIDs, None]] Parameters: AWSOrganizationsEnabled: Description: >- @@ -113,6 +144,13 @@ Parameters: AllowedPattern: ".+" ConstraintDescription: No regions were entered, please read the documentation about selecting all regions or filtering on some. Type: String + AccountIDs: + Description: >- + If you would like to EXCLUDE any accounts from alerting, upload a .csv file of comma-seperated account numbers to the same S3 bucket + where the AHA.zip package is located. Sample AccountIDs file name: aha_account_ids.csv. If not, leave the default of None. + Default: None + Type: String + AllowedPattern: (None)|(.+(\.csv))$ EventSearchBack: Description: How far back to search for events in hours. Default is 1 hour Default: '1' @@ -186,6 +224,7 @@ Resources: - health:DescribeEventTypes - health:DescribeAffectedEntities - organizations:ListAccounts + - organizations:DescribeAccount Resource: "*" - Effect: Allow Action: @@ -211,6 +250,13 @@ Resources: Action: - events:PutEvents Resource: !Sub 'arn:aws:events:${AWS::Region}:${AWS::AccountId}:event-bus/${EventBusName}' + - !If + - UsingAccountIds + - Effect: Allow + Action: + - s3:GetObject + Resource: !Sub 'arn:aws:s3:::${S3Bucket}/${AccountIDs}' + - !Ref 'AWS::NoValue' - !If - UsingCrossAccountRole - Effect: Allow @@ -321,8 +367,12 @@ Resources: Runtime: python3.8 Environment: Variables: + ACCOUNT_IDS: + Ref: AccountIDs REGIONS: Ref: Regions + S3_BUCKET: + Ref: S3Bucket FROM_EMAIL: Ref: FromEmail TO_EMAIL: @@ -342,4 +392,3 @@ Resources: - UsingCrossAccountRole - !Ref ManagementAccountRoleArn - "None" - \ No newline at end of file diff --git a/BETA-multi-region/01_CFN_MGMT_ROLE.yml b/BETA-multi-region/01_CFN_MGMT_ROLE.yml new file mode 100644 index 0000000..d6c172b --- /dev/null +++ b/BETA-multi-region/01_CFN_MGMT_ROLE.yml @@ -0,0 +1,48 @@ +AWSTemplateFormatVersion: "2010-09-09" +Description: Deploy Cross-Account Role for PHD access +Parameters: + OrgMemberAccountId: + Type: String + AllowedPattern: '^\d{12}$' + Description: AWS Account ID of the AWS Organizations Member Account that will run AWS Health Aware +Resources: + AWSHealthAwareRoleForPHDEvents: + Type: "AWS::IAM::Role" + Properties: + Description: "Grants access to PHD events" + Path: / + AssumeRolePolicyDocument: + Version: '2012-10-17' + Statement: + - Action: + - sts:AssumeRole + Effect: Allow + Principal: + AWS: !Sub 'arn:aws:iam::${OrgMemberAccountId}:root' + Policies: + - PolicyName: AllowHealthCalls + PolicyDocument: + Statement: + - Effect: Allow + Action: + - health:DescribeAffectedAccountsForOrganization + - health:DescribeAffectedEntitiesForOrganization + - health:DescribeEventDetailsForOrganization + - health:DescribeEventsForOrganization + - health:DescribeEventDetails + - health:DescribeEvents + - health:DescribeEventTypes + - health:DescribeAffectedEntities + Resource: "*" + - PolicyName: AllowsDescribeOrg + PolicyDocument: + Statement: + - Effect: Allow + Action: + - organizations:ListAccounts + - organizations:ListAWSServiceAccessForOrganization + - organizations:DescribeAccount + Resource: "*" +Outputs: + AWSHealthAwareRoleForPHDEventsArn: + Value: !GetAtt AWSHealthAwareRoleForPHDEvents.Arn diff --git a/BETA-multi-region/02_CFN_MR_DEPLOY_AHA.yaml b/BETA-multi-region/02_CFN_MR_DEPLOY_AHA.yaml new file mode 100644 index 0000000..d468679 --- /dev/null +++ b/BETA-multi-region/02_CFN_MR_DEPLOY_AHA.yaml @@ -0,0 +1,682 @@ +AWSTemplateFormatVersion: '2010-09-09' +Description: CloudFormation Template for AWS Health Aware (AHA) +Metadata: + 'AWS::CloudFormation::Interface': + ParameterGroups: + - Label: + default: Customize Alerts/Notifications + Parameters: + - AWSOrganizationsEnabled + - AWSHealthEventType + - Label: + default: Package Information + Parameters: + - S3Bucket + - S3Key + - Label: + default: >- + Communication Channels - Slack/Microsoft Teams/Amazon Chime And/or + EventBridge + Parameters: + - SlackWebhookURL + - MicrosoftTeamsWebhookURL + - AmazonChimeWebhookURL + - EventBusName + - Label: + default: Email Setup - For Alerting via Email + Parameters: + - FromEmail + - ToEmail + - Subject + - Label: + default: More Configurations - Optional + Parameters: + - EventSearchBack + - Regions + - ManagementAccountRoleArn + - SecondaryRegion + - AccountIDs + ParameterLabels: + AWSOrganizationsEnabled: + default: AWS Organizations Enabled? + ManagementAccountRoleArn: + default: ARN of the AWS Organizations Management Account assume role (if using) + AWSHealthEventType: + default: The types of events to get alerted on + S3Bucket: + default: Name of S3 Bucket + S3Key: + default: Name of .zip file in S3 Bucket + SlackWebhookURL: + default: Slack Webhook URL + MicrosoftTeamsWebhookURL: + default: Microsoft Teams Webhook URL + AmazonChimeWebhookURL: + default: Amazon Chime Webhook URL + FromEmail: + default: Email From + ToEmail: + default: Email To + Subject: + default: Subject of Email + HealthAPIFrequency: + default: Hours back to search for events + Regions: + default: Which regions to search for events in + SecondaryRegion: + default: Deploy in secondary region? + AccountIDs: + default: Exclude any account numbers? +Conditions: + UsingSlack: !Not [!Equals [!Ref SlackWebhookURL, None]] + UsingTeams: !Not [!Equals [!Ref MicrosoftTeamsWebhookURL, None]] + UsingChime: !Not [!Equals [!Ref AmazonChimeWebhookURL, None]] + UsingEventBridge: !Not [!Equals [!Ref EventBusName, None]] + UsingSecrets: !Or [!Condition UsingSlack, !Condition UsingTeams, !Condition UsingChime, !Condition UsingEventBridge] + UsingCrossAccountRole: !Not [!Equals [!Ref ManagementAccountRoleArn, None]] + NotUsingMultiRegion: !Equals [!Ref SecondaryRegion, 'No'] + UsingMultiRegion: !Not [!Equals [!Ref SecondaryRegion, 'No']] + TestCondition: !Equals ['true', 'false'] + UsingMultiRegionTeams: !And [!Condition UsingTeams, !Condition UsingMultiRegion] + UsingMultiRegionSlack: !And [!Condition UsingSlack, !Condition UsingMultiRegion] + UsingMultiRegionEventBridge: !And [!Condition UsingEventBridge, !Condition UsingMultiRegion] + UsingMultiRegionChime: !And [!Condition UsingChime, !Condition UsingMultiRegion] + UsingMultiRegionCrossAccountRole: !And [!Condition UsingCrossAccountRole, !Condition UsingMultiRegion] + UsingAccountIds: !Not [!Equals [!Ref AccountIDs, None]] +Parameters: + AWSOrganizationsEnabled: + Description: >- + You can receive both PHD and SHD alerts if you're using AWS Organizations. + If you are, make sure to enable Organizational Health View: + (https://docs.aws.amazon.com/health/latest/ug/aggregate-events.html) to + aggregate all PHD events in your AWS Organization. If not, you can still + get SHD alerts. + Default: 'No' + AllowedValues: + - 'Yes' + - 'No' + Type: String + SecondaryRegion: + Description: You can deploy this in a secondary region for resiliency. As a result, + the DynamoDB table will become a Global DynamoDB table. Regions that support + Global DynamoDB tables are listed + Default: 'No' + AllowedValues: + - 'No' + - us-east-1 + - us-east-2 + - us-west-1 + - us-west-2 + - ap-south-1 + - ap-northeast-2 + - ap-southeast-1 + - ap-southeast-2 + - ap-northeast-1 + - ca-central-1 + - eu-central-1 + - eu-west-1 + - eu-west-2 + - eu-west-3 + - sa-east-1 + Type: String + ManagementAccountRoleArn: + Description: Arn of the IAM role in the top-level management account for collecting PHD Events. 'None' if deploying into the top-level management account. + Type: String + Default: None + AWSHealthEventType: + Description: >- + Select the event type that you want AHA to report on. Refer to + https://docs.aws.amazon.com/health/latest/APIReference/API_EventType.html for more information on EventType. + Default: 'issue | accountNotification | scheduledChange' + AllowedValues: + - 'issue | accountNotification | scheduledChange' + - 'issue' + Type: String + S3Bucket: + Description: >- + Name of your S3 Bucket where the AHA Package .zip resides. Just the name + of the bucket (e.g. my-s3-bucket) + Type: String + S3Key: + Description: >- + Name of the .zip in your S3 Bucket. Just the name of the file (e.g. + aha-v1.0.zip) + Type: String + EventBusName: + Description: >- + This is to ingest alerts into AWS EventBridge. Enter the event bus name if + you wish to send the alerts to the AWS EventBridge. Note: By ingesting + these alerts to AWS EventBridge, you can integrate with 35 SaaS vendors + such as DataDog/NewRelic/PagerDuty. If you don't prefer to use EventBridge, leave the default (None). + Type: String + Default: None + SlackWebhookURL: + Description: >- + Enter the Slack Webhook URL. If you don't prefer to use Slack, leave the default (None). + Type: String + Default: None + MicrosoftTeamsWebhookURL: + Description: >- + Enter Microsoft Teams Webhook URL. If you don't prefer to use MS Teams, + leave the default (None). + Type: String + Default: None + AmazonChimeWebhookURL: + Description: >- + Enter the Chime Webhook URL, If you don't prefer to use Amazon Chime, + leave the default (None). + Type: String + Default: None + Regions: + Description: >- + By default, AHA reports events affecting all AWS regions. + If you want to report on certain regions you can enter up to 10 in a comma separated format. + Available Regions: us-east-1,us-east-2,us-west-1,us-west-2,af-south-1,ap-east-1,ap-south-1,ap-northeast-3, + ap-northeast-2,ap-southeast-1,ap-southeast-2,ap-northeast-1,ca-central-1,eu-central-1,eu-west-1,eu-west-2, + eu-south-1,eu-south-3,eu-north-1,me-south-1,sa-east-1,global + Default: all regions + AllowedPattern: ".+" + ConstraintDescription: No regions were entered, please read the documentation about selecting all regions or filtering on some. + Type: String + AccountIDs: + Description: >- + If you would like to EXCLUDE any accounts from alerting, upload a .csv file of comma-seperated account numbers to the same S3 bucket + where the AHA.zip package is located. Sample AccountIDs file name: aha_account_ids.csv. If not, leave the default of None. + Default: None + Type: String + AllowedPattern: (None)|(.+(\.csv))$ + EventSearchBack: + Description: How far back to search for events in hours. Default is 1 hour + Default: '1' + Type: Number + FromEmail: + Description: Enter FROM Email Address + Type: String + Default: none@domain.com + AllowedPattern: ^([\w+-.%]+@[\w-.]+\.[A-Za-z]+)(, ?[\w+-.%]+@[\w-.]+\.[A-Za-z]+)*$ + ConstraintDescription: 'FromEmail is not a valid, please verify entry. If not sending to email, leave as the default, none@domain.com.' + ToEmail: + Description: >- + Enter email addresses separated by commas (for ex: abc@amazon.com, + bcd@amazon.com) + Type: String + Default: none@domain.com + AllowedPattern: ^([\w+-.%]+@[\w-.]+\.[A-Za-z]+)(, ?[\w+-.%]+@[\w-.]+\.[A-Za-z]+)*$ + ConstraintDescription: 'ToEmail is not a valid, please verify entry. If not sending to email, leave as the default, none@domain.com.' + Subject: + Description: Enter the subject of the email address + Type: String + Default: AWS Health Alert +Resources: + GlobalDDBTable: + Type: AWS::DynamoDB::GlobalTable + Condition: UsingMultiRegion + Properties: + AttributeDefinitions: + - AttributeName: arn + AttributeType: S + KeySchema: + - AttributeName: arn + KeyType: HASH + Replicas: + - Region: !Ref SecondaryRegion + ReadProvisionedThroughputSettings: + ReadCapacityUnits: 5 + - Region: !Ref "AWS::Region" + ReadProvisionedThroughputSettings: + ReadCapacityUnits: 5 + StreamSpecification: + StreamViewType: "NEW_AND_OLD_IMAGES" + TimeToLiveSpecification: + AttributeName: ttl + Enabled: true + WriteProvisionedThroughputSettings: + WriteCapacityAutoScalingSettings: + MaxCapacity: 10 + MinCapacity: 10 + TargetTrackingScalingPolicyConfiguration: + DisableScaleIn: false + ScaleInCooldown: 30 + ScaleOutCooldown: 30 + TargetValue: 10 + DynamoDBTable: + Type: 'AWS::DynamoDB::Table' + Condition: NotUsingMultiRegion + Properties: + AttributeDefinitions: + - AttributeName: arn + AttributeType: S + KeySchema: + - AttributeName: arn + KeyType: HASH + ProvisionedThroughput: + ReadCapacityUnits: 5 + WriteCapacityUnits: 5 + TimeToLiveSpecification: + AttributeName: ttl + Enabled: TRUE + AHASecondaryRegionStackSet: + Condition: UsingMultiRegion + DependsOn: GlobalDDBTable + Type: AWS::CloudFormation::StackSet + Properties: + Description: Secondary Region CloudFormation Template for AWS Health Aware (AHA) + PermissionModel: SELF_MANAGED + Capabilities: [CAPABILITY_IAM] + StackInstancesGroup: + - Regions: + - !Ref 'SecondaryRegion' + DeploymentTargets: + Accounts: + - !Ref 'AWS::AccountId' + StackSetName: 'aha-multi-region' + TemplateBody: + !Sub | + Resources: + AHA2ndRegionBucket: + Type: AWS::S3::Bucket + CopyAHA: + Type: Custom::CopyAHA + Properties: + DestBucket: !Ref 'AHA2ndRegionBucket' + ServiceToken: !GetAtt 'CopyAHAFunction.Arn' + SourceBucket: ${S3Bucket} + Object: + - ${S3Key} + CopyAHARole: + Type: AWS::IAM::Role + Properties: + AssumeRolePolicyDocument: + Version: '2012-10-17' + Statement: + - Effect: Allow + Principal: + Service: lambda.amazonaws.com + Action: sts:AssumeRole + ManagedPolicyArns: + - arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole + Path: / + Policies: + - PolicyName: aha-lambda-copier + PolicyDocument: + Version: '2012-10-17' + Statement: + - Effect: Allow + Action: + - s3:GetObject + Resource: + - 'arn:aws:s3:::${S3Bucket}*' + - Effect: Allow + Action: + - s3:PutObject + - s3:DeleteObject + Resource: + - !Join ['', [ 'arn:aws:s3:::', !Ref AHA2ndRegionBucket, '*']] + CopyAHAFunction: + Type: AWS::Lambda::Function + DependsOn: AHA2ndRegionBucket + Properties: + Description: Copies AHA .zip from a source S3 bucket to a destination + Handler: index.handler + Runtime: python3.8 + Role: !GetAtt 'CopyAHARole.Arn' + Timeout: 240 + Code: + ZipFile: | + import json + import logging + import threading + import boto3 + import cfnresponse + + def copy_object(source_bucket, dest_bucket, object): + s3 = boto3.client('s3') + for o in object: + key = o + copy_source = { + 'Bucket': source_bucket, + 'Key': key + } + print('copy_source: %s' % copy_source) + print('dest_bucket = %s'%dest_bucket) + print('key = %s' %key) + s3.copy_object(CopySource=copy_source, Bucket=dest_bucket, + Key=key) + + def delete_object(bucket, object): + s3 = boto3.client('s3') + objects = {'Objects': [{'Key': o} for o in object]} + s3.delete_objects(Bucket=bucket, Delete=objects) + + def timeout(event, context): + logging.error('Execution is about to time out, sending failure response to CloudFormation') + cfnresponse.send(event, context, cfnresponse.FAILED, {}, None) + + def handler(event, context): + # make sure we send a failure to CloudFormation if the function + # is going to timeout + timer = threading.Timer((context.get_remaining_time_in_millis() + / 1000.00) - 0.5, timeout, args=[event, context]) + timer.start() + + print('Received event: %s' % json.dumps(event)) + status = cfnresponse.SUCCESS + try: + source_bucket = event['ResourceProperties']['SourceBucket'] + dest_bucket = event['ResourceProperties']['DestBucket'] + object = event['ResourceProperties']['Object'] + if event['RequestType'] == 'Delete': + delete_object(dest_bucket, object) + else: + copy_object(source_bucket, dest_bucket, object) + except Exception as e: + logging.error('Exception: %s' % e, exc_info=True) + status = cfnresponse.FAILED + finally: + timer.cancel() + cfnresponse.send(event, context, status, {}, None) + LambdaSchedule: + Type: AWS::Events::Rule + Properties: + Description: Lambda trigger Event + ScheduleExpression: rate(1 minute) + State: ENABLED + Targets: + - Arn: !GetAtt 'LambdaFunction.Arn' + Id: LambdaSchedule + LambdaSchedulePermission: + Type: AWS::Lambda::Permission + Properties: + Action: lambda:InvokeFunction + FunctionName: !GetAtt 'LambdaFunction.Arn' + Principal: events.amazonaws.com + SourceArn: !GetAtt 'LambdaSchedule.Arn' + LambdaFunction: + Type: AWS::Lambda::Function + DependsOn: CopyAHA + Properties: + Description: Lambda function that runs AHA + Code: + S3Bucket: + Ref: AHA2ndRegionBucket + S3Key: "${S3Key}" + Handler: handler.main + MemorySize: 128 + Timeout: 600 + Role: ${LambdaExecutionRole.Arn} + Runtime: python3.8 + Environment: + Variables: + REGIONS: ${Regions} + FROM_EMAIL: "${FromEmail}" + TO_EMAIL: "${ToEmail}" + EMAIL_SUBJECT: "${Subject}" + DYNAMODB_TABLE: "${GlobalDDBTable}" + EVENT_SEARCH_BACK: ${EventSearchBack} + ORG_STATUS: ${AWSOrganizationsEnabled} + HEALTH_EVENT_TYPE: "${AWSHealthEventType}" + MANAGEMENT_ROLE_ARN: "${ManagementAccountRoleArn}" + LambdaExecutionRole: + Type: 'AWS::IAM::Role' + Properties: + AssumeRolePolicyDocument: + Version: '2012-10-17' + Statement: + - Effect: Allow + Principal: + Service: + - lambda.amazonaws.com + Action: + - 'sts:AssumeRole' + Path: / + Policies: + - PolicyName: AHA-LambdaPolicy + PolicyDocument: + Version: '2012-10-17' + Statement: + - Effect: Allow + Action: + - logs:CreateLogGroup + - logs:CreateLogStream + - logs:PutLogEvents + Resource: + - !Sub 'arn:aws:logs:${AWS::Region}:${AWS::AccountId}:*' + - !If [UsingMultiRegion, !Sub 'arn:aws:logs:${SecondaryRegion}:${AWS::AccountId}:*', !Ref AWS::NoValue] + - !If + - UsingSecrets + - Effect: Allow + Action: + - 'secretsmanager:GetResourcePolicy' + - 'secretsmanager:DescribeSecret' + - 'secretsmanager:ListSecretVersionIds' + - 'secretsmanager:GetSecretValue' + Resource: + - !If [UsingTeams, !Sub '${MicrosoftChannelSecret}', !Ref AWS::NoValue] + - !If [UsingSlack, !Sub '${SlackChannelSecret}', !Ref AWS::NoValue] + - !If [UsingEventBridge, !Sub '${EventBusNameSecret}', !Ref AWS::NoValue] + - !If [UsingChime, !Sub '${ChimeChannelSecret}', !Ref AWS::NoValue] + - !If [UsingCrossAccountRole, !Sub '${AssumeRoleSecret}', !Ref AWS::NoValue] + - !If + - UsingMultiRegionTeams + - !Sub + - 'arn:aws:secretsmanager:${SecondaryRegion}:${AWS::AccountId}:secret:${SecretNameWithSha}' + - { SecretNameWithSha: !Select [1, !Split [':secret:', !Sub '${MicrosoftChannelSecret}' ]]} + - !Ref AWS::NoValue + - !If + - UsingMultiRegionSlack + - !Sub + - 'arn:aws:secretsmanager:${SecondaryRegion}:${AWS::AccountId}:secret:${SecretNameWithSha}' + - { SecretNameWithSha: !Select [1, !Split [':secret:', !Sub '${SlackChannelSecret}' ]]} + - !Ref AWS::NoValue + - !If + - UsingMultiRegionEventBridge + - !Sub + - 'arn:aws:secretsmanager:${SecondaryRegion}:${AWS::AccountId}:secret:${SecretNameWithSha}' + - { SecretNameWithSha: !Select [1, !Split [':secret:', !Sub '${EventBusNameSecret}' ]]} + - !Ref AWS::NoValue + - !If + - UsingMultiRegionChime + - !Sub + - 'arn:aws:secretsmanager:${SecondaryRegion}:${AWS::AccountId}:secret:${SecretNameWithSha}' + - { SecretNameWithSha: !Select [1, !Split [':secret:', !Sub '${ChimeChannelSecret}' ]]} + - !Ref AWS::NoValue + - !If + - UsingMultiRegionCrossAccountRole + - !Sub + - 'arn:aws:secretsmanager:${SecondaryRegion}:${AWS::AccountId}:secret:${SecretNameWithSha}' + - { SecretNameWithSha: !Select [1, !Split [':secret:', !Sub '${AssumeRoleSecret}' ]]} + - !Ref AWS::NoValue + - !Ref 'AWS::NoValue' + - Effect: Allow + Action: + - health:DescribeAffectedAccountsForOrganization + - health:DescribeAffectedEntitiesForOrganization + - health:DescribeEventDetailsForOrganization + - health:DescribeEventsForOrganization + - health:DescribeEventDetails + - health:DescribeEvents + - health:DescribeEventTypes + - health:DescribeAffectedEntities + - organizations:ListAccounts + - organizations:DescribeAccount + Resource: "*" + - Effect: Allow + Action: + - dynamodb:ListTables + Resource: + - !Sub 'arn:aws:dynamodb:${AWS::Region}:${AWS::AccountId}:*' + - !If [UsingMultiRegion, !Sub 'arn:aws:dynamodb:${SecondaryRegion}:${AWS::AccountId}:*', !Ref AWS::NoValue] + - Effect: Allow + Action: + - ses:SendEmail + Resource: + - !Sub 'arn:aws:ses:${AWS::Region}:${AWS::AccountId}:*' + - !If [UsingMultiRegion, !Sub 'arn:aws:ses:${SecondaryRegion}:${AWS::AccountId}:*', !Ref AWS::NoValue] + - Effect: Allow + Action: + - dynamodb:UpdateTimeToLive + - dynamodb:PutItem + - dynamodb:DeleteItem + - dynamodb:GetItem + - dynamodb:Scan + - dynamodb:Query + - dynamodb:UpdateItem + - dynamodb:UpdateTable + - dynamodb:GetRecords + Resource: !If [UsingMultiRegion, !GetAtt GlobalDDBTable.Arn, !GetAtt DynamoDBTable.Arn] + - Effect: Allow + Action: + - events:PutEvents + Resource: + - !Sub 'arn:aws:events:${AWS::Region}:${AWS::AccountId}:event-bus/${EventBusName}' + - !If [UsingMultiRegion, !Sub 'arn:aws:events:${SecondaryRegion}:${AWS::AccountId}:event-bus/${EventBusName}', !Ref AWS::NoValue] + - !If + - UsingAccountIds + - Effect: Allow + Action: + - s3:GetObject + Resource: !Sub 'arn:aws:s3:::${S3Bucket}/${AccountIDs}' + - !Ref 'AWS::NoValue' + - !If + - UsingCrossAccountRole + - Effect: Allow + Action: + - sts:AssumeRole + Resource: !Ref ManagementAccountRoleArn + - !Ref 'AWS::NoValue' + LambdaSchedule: + Type: 'AWS::Events::Rule' + Properties: + Description: Lambda trigger Event + ScheduleExpression: rate(1 minute) + State: ENABLED + Targets: + - Arn: !GetAtt LambdaFunction.Arn + Id: LambdaSchedule + LambdaSchedulePermission: + Type: 'AWS::Lambda::Permission' + Properties: + Action: 'lambda:InvokeFunction' + FunctionName: !GetAtt LambdaFunction.Arn + Principal: events.amazonaws.com + SourceArn: !GetAtt LambdaSchedule.Arn + MicrosoftChannelSecret: + Type: 'AWS::SecretsManager::Secret' + Condition: UsingTeams + Properties: + Name: MicrosoftChannelID + Description: Microsoft Channel ID Secret + ReplicaRegions: + !If + - UsingMultiRegion + - [{ Region: !Sub '${SecondaryRegion}' }] + - !Ref "AWS::NoValue" + SecretString: + Ref: MicrosoftTeamsWebhookURL + Tags: + - Key: HealthCheckMicrosoft + Value: ChannelID + SlackChannelSecret: + Type: 'AWS::SecretsManager::Secret' + Condition: UsingSlack + Properties: + Name: SlackChannelID + Description: Slack Channel ID Secret + ReplicaRegions: + !If + - UsingMultiRegion + - [{ Region: !Sub '${SecondaryRegion}' }] + - !Ref "AWS::NoValue" + SecretString: + Ref: SlackWebhookURL + Tags: + - Key: HealthCheckSlack + Value: ChannelID + EventBusNameSecret: + Type: 'AWS::SecretsManager::Secret' + Condition: UsingEventBridge + Properties: + Name: EventBusName + Description: EventBus Name Secret + ReplicaRegions: + !If + - UsingMultiRegion + - [{ Region: !Sub '${SecondaryRegion}' }] + - !Ref "AWS::NoValue" + SecretString: + Ref: EventBusName + Tags: + - Key: EventBusName + Value: ChannelID + ChimeChannelSecret: + Type: 'AWS::SecretsManager::Secret' + Condition: UsingChime + Properties: + Name: ChimeChannelID + Description: Chime Channel ID Secret + ReplicaRegions: + !If + - UsingMultiRegion + - [{ Region: !Sub '${SecondaryRegion}' }] + - !Ref "AWS::NoValue" + SecretString: + Ref: AmazonChimeWebhookURL + Tags: + - Key: HealthCheckChime + Value: ChannelID + AssumeRoleSecret: + Type: 'AWS::SecretsManager::Secret' + Condition: UsingCrossAccountRole + Properties: + Name: AssumeRoleArn + Description: Management account role for AHA to assume + ReplicaRegions: + !If + - UsingMultiRegion + - [{ Region: !Sub '${SecondaryRegion}' }] + - !Ref "AWS::NoValue" + SecretString: + Ref: ManagementAccountRoleArn + Tags: + - Key: AssumeRoleArn + Value: ChannelID + LambdaFunction: + Type: 'AWS::Lambda::Function' + Properties: + Description: Lambda function that runs AHA + Code: + S3Bucket: + Ref: S3Bucket + S3Key: + Ref: S3Key + Handler: handler.main + MemorySize: 128 + Timeout: 600 + Role: + 'Fn::Sub': '${LambdaExecutionRole.Arn}' + Runtime: python3.8 + Environment: + Variables: + ACCOUNT_IDS: + Ref: AccountIDs + REGIONS: + Ref: Regions + S3_BUCKET: + Ref: S3Bucket + FROM_EMAIL: + Ref: FromEmail + TO_EMAIL: + Ref: ToEmail + EMAIL_SUBJECT: + Ref: Subject + DYNAMODB_TABLE: + !If [UsingMultiRegion, !Ref GlobalDDBTable, !Ref DynamoDBTable] + EVENT_SEARCH_BACK: + Ref: EventSearchBack + ORG_STATUS: + Ref: AWSOrganizationsEnabled + HEALTH_EVENT_TYPE: + Ref: AWSHealthEventType + MANAGEMENT_ROLE_ARN: + Ref: ManagementAccountRoleArn + diff --git a/BETA-org-member-deployment/README.md b/BETA-multi-region/README.md similarity index 69% rename from BETA-org-member-deployment/README.md rename to BETA-multi-region/README.md index 4a871a4..cbbfaad 100644 --- a/BETA-org-member-deployment/README.md +++ b/BETA-multi-region/README.md @@ -1,10 +1,8 @@ -# [IN BETA] Deploying AHA in a member account within an AWS Organization +# [IN BETA] Deploying AHA in 2 Regions for High Availability # Introduction -The #1 feature request from customers, is the ability to deploy the AHA resources (Lambda, DynamoDB, etc.) in a member account instead of the top-level management account. This process is currently **IN BETA** so we ask that you log any issues within Github issues. - -The steps below are relatively the same as a normal deployment, if you configured an Endpoint already you can skip to [**Deployment in AWS Organization Member Account**](#deployment-in-aws-organization-member-account) +Our next most requested feature was the ability to deploy AHA in more than 1 region in the event a region or specific service in a region was degraded. The process is currently **IN BETA** so we ask that you log any issues in this repo. # Configuring an Endpoint - AHA can send to multiple endpoints (webhook URLs, Email or EventBridge). To use any of these you'll need to set it up before-hand as some of these are done on 3rd party websites. We'll go over some of the common ones here. @@ -18,17 +16,39 @@ AHA can send to multiple endpoints (webhook URLs, Email or EventBridge). To use 4. **Type** a name for the bot (e.g. AWS Health Bot) and **click** *Create*. 5. **Click** *Copy URL*, we will need it for the deployment. -## Creating a Slack Webhook URL - +## Creating a Slack Webhook URL **You will need to have access to add a new channel and app to your Slack Workspace**. +*Webhook* 1. Create a new [channel](https://slack.com/help/articles/201402297-Create-a-channel) for events (i.e. aws_events) -2. In your browser go to: workspace-name.slack.com/apps where workspace-name is the name of your Slack Workspace. -3. In the search bar, search for: *Incoming Webhooks* and **click** on it. -4. **Click** on *Add to Slack*. -5. From the dropdown **click** on the channel your created in step 1 and **click** *Add Incoming Webhooks integration*. -6. From this page you can change the name of the webhook (i.e. AWS Bot), the icon/emoji to use, etc. +2. In your browser go to: workspace-name.slack.com/apps where workspace-name is the name of your Slack Workspace. +3. In the search bar, search for: *Incoming Webhooks* and **click** on it. +4. **Click** on *Add to Slack*. +5. From the dropdown **click** on the channel your created in step 1 and **click** *Add Incoming Webhooks integration*. +6. From this page you can change the name of the webhook (i.e. AWS Bot), the icon/emoji to use, etc. 7. For the deployment we will need the *Webhook URL*. +*Workflow* + +1. Create a new [channel](https://slack.com/help/articles/201402297-Create-a-channel) for events (i.e. aws_events) +2. Within Slack **click** on your workspace name drop down arrow in the upper left. **click on Tools > Workflow Builder** +3. **Click** Create in the upper right hand corner of the Workflow Builder and give your workflow a name **click** next. +4. **Click** on *select* next to **Webhook** and then **click** *add variable* add the following variables one at a time in the *Key* section. All *data type* will be *text*: +-text +-accounts +-resources +-service +-region +-start_time +-event_arn +-updates +5. When done you should have 8 variables, double check them as they are case sensitive and will be referenced. When checked **click** on *done* and *next*. +6. **Click** on *add step* and then on the add a workflow step **click** *add* next to *send a message*. +7. Under *send this message to:* select the channel you created in Step 1 in *message text* you can should recreate this following: +![](https://github.com/aws-samples/aws-health-aware/blob/main/readme-images/workflow.png?raw=1) +8. **Click** *save* and the **click** *publish* +9. For the deployment we will need the *Webhook URL*. + ## Creating a Microsoft Teams Webhook URL - **You will need to have access to add a new channel and app to your Microsoft Teams channel**. @@ -60,7 +80,7 @@ There are 2 available ways to deploy AHA, both are done via the same CloudFormat The 2 deployment methods for AHA are: 1. [**AHA for users NOT using AWS Organizations**](#aha-without-aws-organizations): Users NOT using AWS Organizations will be able to get Service Health Dashboard (SHD) events ONLY. -2. [**AHA for users who ARE using AWS Organizations**](#aha-with-organizations): Users who ARE using AWS Organizations will be able to get Service Health Dashboard (SHD) events as well as aggregated Personal Health Dashboard (PHD) events for all accounts in their AWS Organization. +2. [**AHA for users who ARE using AWS Organizations**](#aha-with-aws-organizations): Users who ARE using AWS Organizations will be able to get Service Health Dashboard (SHD) events as well as aggregated Personal Health Dashboard (PHD) events for all accounts in their AWS Organization. ## AHA Without AWS Organizations @@ -68,15 +88,19 @@ The 2 deployment methods for AHA are: 1. Have at least 1 [endpoint](#configuring-an-endpoint) configured (you can have multiple) 2. Have access to deploy Cloudformation Templates with the following resources: AWS IAM policies, Amazon DynamoDB Tables, AWS Lambda, Amazon EventBridge and AWS Secrets Manager. - +3. -If using Multi-Region, you must deploy the following 2 CloudFormation templates to allow the Stackset deployment to deploy resources **even if you have full administrator privileges, you still need to follow these steps**. +-In CloudFormation Console create a stack with new resources from the following S3 URL: https://s3.amazonaws.com/cloudformation-stackset-sample-templates-us-east-1/AWSCloudFormationStackSetAdministrationRole.yml - this will allows CFT Stacksets to launch AHA in another region +-Launch the stack. +-In CloudFormation Console create a stack with new resources from the following S3 URL: https://s3.amazonaws.com/cloudformation-stackset-sample-templates-us-east-1/AWSCloudFormationStackSetExecutionRole.yml) - In *AdministratorAccountId* type in the 12 digit account number you're running the solution in (e.g. 000123456789) +-Launch the stack. ### Deployment 1. Clone the AHA package that from this repository. If you're not familiar with the process, [here](https://git-scm.com/docs/git-clone) is some documentation. The URL to clone is in the upper right-hand corner labeled `Clone uri` 2. In the root of this package you'll have two files; `handler.py` and `messagegenerator.py`. Use your tool of choice to zip them both up and name them with a unique name (e.g. aha-v1.8.zip). **Note: Putting the version number in the name will make upgrading AHA seamless.** -3. Upload the .zip you created in Step 2 to an S3 in the same region you plan to deploy this in. +3. Upload the .zip you created in Step 1 to an S3 in the same region you plan to deploy this in. 4. In your AWS console go to *CloudFormation*. 5. In the *CloudFormation* console **click** *Create stack > With new resources (standard)*. -6. Under *Template Source* **click** *Upload a template file* and **click** *Choose file* and select `CFN_AHA.yml` **Click** *Next*. +6. Under *Template Source* **click** *Upload a template file* and **click** *Choose file* and select `02_CFN_MR_DEPLOY_AHA.yml` **Click** *Next*. 7. -In *Stack name* type a stack name (i.e. AHA-Deployment). -In *AWSOrganizationsEnabled* leave it set to default which is `No`. If you do have AWS Organizations enabled and you want to aggregate across all your accounts, you should be following the step for [AHA for users who ARE using AWS Organizations](#aha-with-aws-organizations) -In *AWSHealthEventType* select whether you want to receive *all* event types or *only* issues. @@ -86,27 +110,34 @@ The 2 deployment methods for AHA are: -In the *Email Setup* section enter the From and To Email addresses as well as the Email subject. If you aren't configuring email, just leave it as is. -In *EventSearchBack* enter in the amount of hours you want to search back for events. Default is 1 hour. -In *Regions* enter in the regions you want to search for events in. Default is all regions. You can filter for up to 10, comma separated (e.g. us-east-1, us-east-2). +-In *ARN of the AWS Organizations Management Account assume role* leave it set to default None as this is only for customers using AWS Organizations. +-In *Deploy in secondary region?* select another region to deploy AHA in. Otherwise leave to default No. 8. Scroll to the bottom and **click** *Next*. 9. Scroll to the bottom and **click** *Next* again. 10. Scroll to the bottom and **click** the *checkbox* and **click** *Create stack*. -11. Wait until *Status* changes to *CREATE_COMPLETE* (roughly 2-4 minutes). +11. Wait until *Status* changes to *CREATE_COMPLETE* (roughly 2-4 minutes or if deploying in a secondary region, it can take up to 30 minutes). ## AHA With AWS Organizations + ### Prerequisites 1. [Enable Health Organizational View](https://docs.aws.amazon.com/health/latest/ug/enable-organizational-view-in-health-console.html) from the console, so that you can aggregate all Personal Health Dashboard (PHD) events for all accounts in your AWS Organization. 2. Have at least 1 [endpoint](#configuring-an-endpoint) configured (you can have multiple) -3. Have access to deploy Cloudformation Templates with the following resources: AWS IAM policies, Amazon DynamoDB Tables, AWS Lambda, Amazon EventBridge and AWS Secrets Manager. - -### Deployment in Top Level Management Account +3. Have access to deploy Cloudformation Templates with the following resources: AWS IAM policies, Amazon DynamoDB Tables, AWS Lambda, Amazon EventBridge and AWS Secrets Manager in the **AWS Organizations Master Account**. +4. -If using Multi-Region, you must deploy the following 2 CloudFormation templates to allow the Stackset deployment to deploy resources **even if you have full administrator privileges, you still need to follow these steps**. +-In CloudFormation Console create a stack with new resources from the following S3 URL: https://s3.amazonaws.com/cloudformation-stackset-sample-templates-us-east-1/AWSCloudFormationStackSetAdministrationRole.yml - this will allows CFT Stacksets to launch AHA in another region +-Launch the stack. +-In CloudFormation Console create a stack with new resources from the following S3 URL: https://s3.amazonaws.com/cloudformation-stackset-sample-templates-us-east-1/AWSCloudFormationStackSetExecutionRole.yml) - In *AdministratorAccountId* type in the 12 digit account number you're running the solution in (e.g. 000123456789) +-Launch the stack. +### Deployment 1. Clone the AHA package that from this repository. If you're not familiar with the process, [here](https://git-scm.com/docs/git-clone) is some documentation. The URL to clone is in the upper right-hand corner labeled `Clone uri` 2. In the root of this package you'll have two files; `handler.py` and `messagegenerator.py`. Use your tool of choice to zip them both up and name them with a unique name (e.g. aha-v1.8.zip). **Note: Putting the version number in the name will make upgrading AHA seamless.** -3. Upload the .zip you created in Step 2 to an S3 in the same region you plan to deploy this in. +3. Upload the .zip you created in Step 1 to an S3 in the same region you plan to deploy this in. 4. In your AWS console go to *CloudFormation*. 5. In the *CloudFormation* console **click** *Create stack > With new resources (standard)*. -6. Under *Template Source* **click** *Upload a template file* and **click** *Choose file* and select `CFN_AHA.yml` **Click** *Next*. +6. Under *Template Source* **click** *Upload a template file* and **click** *Choose file* and select `02_CFN_MR_DEPLOY_AHA.yml` **Click** *Next*. 7. -In *Stack name* type a stack name (i.e. AHA-Deployment). -In *AWSOrganizationsEnabled* change the dropdown to `Yes`. If you do NOT have AWS Organizations enabled you should be following the steps for [AHA for users who are NOT using AWS Organizations](#aha-without-aws-organizations) -In *AWSHealthEventType* select whether you want to receive *all* event types or *only* issues. @@ -116,50 +147,53 @@ The 2 deployment methods for AHA are: -In the *Email Setup* section enter the From and To Email addresses as well as the Email subject. If you aren't configuring email, just leave it as is. -In *EventSearchBack* enter in the amount of hours you want to search back for events. Default is 1 hour. -In *Regions* enter in the regions you want to search for events in. Default is all regions. You can filter for up to 10, comma separated with (e.g. us-east-1, us-east-2). +-In *ARN of the AWS Organizations Management Account assume role* leave it set to default None, unless you are using a member account instead of the management account. Instructions for this configuration are in the next section. +-In *Deploy in secondary region?* select another region to deploy AHA in. Otherwise leave to default No. 8. Scroll to the bottom and **click** *Next*. 9. Scroll to the bottom and **click** *Next* again. 10. Scroll to the bottom and **click** the *checkbox* and **click** *Create stack*. -11. Wait until *Status* changes to *CREATE_COMPLETE* (roughly 2-4 minutes). +11. Wait until *Status* changes to *CREATE_COMPLETE* (roughly 2-4 minutes or if deploying in a secondary region, it can take up to 30 minutes). ### Deployment in AWS Organization Member Account 1. Clone the AHA package from the BETA-member-deployment folder. If you're not familiar with the process, [here](https://git-scm.com/docs/git-clone) is some documentation. The URL to clone is in the upper right-hand corner labeled `Clone uri` -2. In your top-level management account AWS console go to *CloudFormation* -3. In the *CloudFormation* console **click** *Create stack > With new resources (standard)*. -4. Under *Template Source* **click** *Upload a template file* and **click** *Choose file* and select `01_CFN_MGMT_ROLE.yml` **Click** *Next*. +2. In your top-level management account AWS console go to *CloudFormation* +3. In the *CloudFormation* console **click** *Create stack > With new resources (standard)*. +4. Under *Template Source* **click** *Upload a template file* and **click** *Choose file* and select `01_CFN_MGMT_ROLE.yml` **Click** *Next*. 5. -In *Stack name* type a stack name (i.e. aha-assume-role). --In *OrgMemberAccountId* put in the account id of the member account you plan to run AHA in (e.g. 000123456789). -6. Scroll to the bottom and **click** *Next*. -7. Scroll to the bottom and **click** *Next* again. -8. Scroll to the bottom and **click** the *checkbox* and **click** *Create stack*. +-In *OrgMemberAccountId* put in the account id of the member account you plan to run AHA in (e.g. 000123456789). +6. Scroll to the bottom and **click** *Next*. +7. Scroll to the bottom and **click** *Next* again. +8. Scroll to the bottom and **click** the *checkbox* and **click** *Create stack*. 9. Wait until *Status* changes to *CREATE_COMPLETE* (roughly 1-2 minutes). This will create an IAM role with the necessary AWS Organizations and AWS Health API permissions for the member account to assume. 10. In the *Outputs* tab, there will be a value for *AWSHealthAwareRoleForPHDEventsArn* (e.g. arn:aws:iam::000123456789:role/aha-org-role-AWSHealthAwareRoleForPHDEvents-ABCSDE12201), copy that down as you will need it for step 16. 11. Back In the root of the package you downloaded/cloned you'll have two files; `handler.py` and `messagegenerator.py`. Use your tool of choice to zip them both up and name them with a unique name (e.g. aha-v1.8.zip). **Note: Putting the version number in the name will make upgrading AHA seamless.** -12. Upload the .zip you created in Step 11 to an S3 in the same region you plan to deploy this in. -13. Login to the member account you plan to deploy this in and in your AWS console go to *CloudFormation*. -14. In the *CloudFormation* console **click** *Create stack > With new resources (standard)*. -15. Under *Template Source* **click** *Upload a template file* and **click** *Choose file* and select `02_CFN_DEPLOY_AHA.yml` **Click** *Next*. +12. Upload the .zip you created in Step 11 to an S3 in the same region you plan to deploy this in. +13. Login to the member account you plan to deploy this in and in your AWS console go to *CloudFormation*. +14. In the *CloudFormation* console **click** *Create stack > With new resources (standard)*. +15. Under *Template Source* **click** *Upload a template file* and **click** *Choose file* and select `02_CFN_MR_DEPLOY_AHA.yml` **Click** *Next*. 16. -In *Stack name* type a stack name (i.e. AHA-Deployment). --In *AWSOrganizationsEnabled* change the dropdown to `Yes`. If you do NOT have AWS Organizations enabled you should be following the steps for [AHA for users who are NOT using AWS Organizations](#aha-without-aws-organizations) --In *AWSHealthEventType* select whether you want to receive *all* event types or *only* issues. --In *S3Bucket* type ***just*** the bucket name of the S3 bucket used in step 12 (e.g. my-aha-bucket). --In *S3Key* type ***just*** the name of the .zip file you created in Step 11 (e.g. aha-v1.8.zip). --In the *Communications Channels* section enter the URLs, Emails and/or ARN of the endpoints you configured previously. +-In *AWSOrganizationsEnabled* change the dropdown to `Yes`. If you do NOT have AWS Organizations enabled you should be following the steps for [AHA for users who are NOT using AWS Organizations](#aha-without-aws-organizations) +-In *AWSHealthEventType* select whether you want to receive *all* event types or *only* issues. +-In *S3Bucket* type ***just*** the bucket name of the S3 bucket used in step 12 (e.g. my-aha-bucket). +-In *S3Key* type ***just*** the name of the .zip file you created in Step 11 (e.g. aha-v1.8.zip). +-In the *Communications Channels* section enter the URLs, Emails and/or ARN of the endpoints you configured previously. -In the *Email Setup* section enter the From and To Email addresses as well as the Email subject. If you aren't configuring email, just leave it as is. --In *EventSearchBack* enter in the amount of hours you want to search back for events. Default is 1 hour. +-In *EventSearchBack* enter in the amount of hours you want to search back for events. Default is 1 hour. -In *Regions* enter in the regions you want to search for events in. Default is all regions. You can filter for up to 10, comma separated with (e.g. us-east-1, us-east-2). -In *ManagementAccountRoleArn* enter in the full IAM arn from step 10 (e.g. arn:aws:iam::000123456789:role/aha-org-role-AWSHealthAwareRoleForPHDEvents-ABCSDE12201) -17. Scroll to the bottom and **click** *Next*. -18. Scroll to the bottom and **click** *Next* again. -19. Scroll to the bottom and **click** the *checkbox* and **click** *Create stack*. -12. Wait until *Status* changes to *CREATE_COMPLETE* (roughly 2-4 minutes). +-In *Deploy in secondary region?* select another region to deploy AHA in. Otherwise leave to default No. +17. Scroll to the bottom and **click** *Next*. +18. Scroll to the bottom and **click** *Next* again. +19. Scroll to the bottom and **click** the *checkbox* and **click** *Create stack*. +12. Wait until *Status* changes to *CREATE_COMPLETE* (roughly 2-4 minutes or if deploying in a secondary region, it can take up to 30 minutes). # Updating **Until this project is migrated to the AWS Serverless Application Model (SAM), updates will have to be done as described below:** 1. Download the updated CloudFormation Template .yml file and 2 `.py` files. 2. Zip up the 2 `.py` files and name the .zip with a different version number than before (e.g. if the .zip you originally uploaded is aha-v1.8.zip the new one should be aha-v1.9.zip) 3. In the AWS CloudFormation console **click** on the name of your stack, then **click** *Update*. -4. In the *Prepare template* section **click** *Replace current template*, **click** *Upload a template file*, **click** *Choose file*, select the newer `CFN_AHA.yml` file you downloaded and finally **click** *Next*. +4. In the *Prepare template* section **click** *Replace current template*, **click** *Upload a template file*, **click** *Choose file*, select the newer `02_CFN_MR_DEPLOY_AHA.yml` file you downloaded and finally **click** *Next*. 5. In the *S3Key* text box change the version number in the name of the .zip to match name of the .zip you uploaded in Step 2 (The name of the .zip has to be different for CloudFormation to recognize a change). **Click** *Next*. 6. At the next screen **click** *Next* and finally **click** *Update stack*. This will now upgrade your environment to the latest version you downloaded. diff --git a/BETA-org-member-deployment/handler.py b/BETA-multi-region/handler.py similarity index 84% rename from BETA-org-member-deployment/handler.py rename to BETA-multi-region/handler.py index cc20deb..17d246e 100644 --- a/BETA-org-member-deployment/handler.py +++ b/BETA-multi-region/handler.py @@ -4,7 +4,6 @@ import re import time import decimal -import uuid import socket import configparser from dateutil import parser @@ -25,7 +24,6 @@ health_active_list = current_endpoint.split('.') health_active_region = health_active_list[1] print("current health region: ", health_active_region) -management_role_arn = os.environ["MANAGEMENT_ROLE_ARN"] # create a boto3 health client w/ backoff/retry config = Config( @@ -37,7 +35,16 @@ ) ) -# Send alert module +# Get Account Name +def get_account_name(account_id): + org_client = get_sts_token('organizations') + try: + account_name = org_client.describe_account(AccountId=account_id)['Account']['Name'] + except Exception: + account_name = account_id + + return account_name + def send_alert(event_details, event_type): slack_url = get_secrets()["slack"] teams_url = get_secrets()["teams"] @@ -49,7 +56,7 @@ def send_alert(event_details, event_type): if "None" not in event_bus_name: try: print("Sending the alert to Event Bridge") - send_to_eventbridge(get_message_for_eventbridge(event_details, event_type), event_type, event_bus_name) + send_to_eventbridge(get_message_for_eventbridge(event_details, event_type, affected_accounts, affected_entities), event_type, event_bus_name) except HTTPError as e: print("Got an error while sending message to EventBridge: ", e.code, e.reason) except URLError as e: @@ -57,17 +64,26 @@ def send_alert(event_details, event_type): pass if "hooks.slack.com/services" in slack_url: try: - print("Sending the alert to Slack Channel") - send_to_slack(get_message_for_slack(event_details, event_type), slack_url) + print("Sending the alert to Slack Webhook Channel") + send_to_slack(get_message_for_slack(event_details, event_type, affected_accounts, affected_entities, slack_webhook="webhook"), slack_url) except HTTPError as e: print("Got an error while sending message to Slack: ", e.code, e.reason) except URLError as e: print("Server connection failed: ", e.reason) pass + if "hooks.slack.com/workflows" in slack_url: + try: + print("Sending the alert to Slack Workflows Channel") + send_to_slack(get_message_for_slack(event_details, event_type, affected_accounts, affected_entities, slack_webhook="workflow"), slack_url) + except HTTPError as e: + print("Got an error while sending message to Slack: ", e.code, e.reason) + except URLError as e: + print("Server connection failed: ", e.reason) + pass if "office.com/webhook" in teams_url: try: print("Sending the alert to Teams") - send_to_teams(get_message_for_teams(event_details, event_type), teams_url) + send_to_teams(get_message_for_teams(event_details, event_type, affected_accounts, affected_entities), teams_url) except HTTPError as e: print("Got an error while sending message to Teams: ", e.code, e.reason) except URLError as e: @@ -77,7 +93,7 @@ def send_alert(event_details, event_type): if "none@domain.com" not in SENDER and RECIPIENT: try: print("Sending the alert to the emails") - send_email(event_details, event_type) + send_email(event_details, event_type, affected_accounts, affected_entities) except HTTPError as e: print("Got an error while sending message to Email: ", e.code, e.reason) except URLError as e: @@ -86,7 +102,7 @@ def send_alert(event_details, event_type): if "hooks.chime.aws/incomingwebhooks" in chime_url: try: print("Sending the alert to Chime channel") - send_to_chime(get_message_for_chime(event_details, event_type), chime_url) + send_to_chime(get_message_for_chime(event_details, event_type, affected_accounts, affected_entities), chime_url) except HTTPError as e: print("Got an error while sending message to Chime: ", e.code, e.reason) except URLError as e: @@ -115,15 +131,26 @@ def send_org_alert(event_details, affected_org_accounts, affected_org_entities, pass if "hooks.slack.com/services" in slack_url: try: - print("Sending the alert to Slack Channel") + print("Sending the alert to Slack Webhook Channel") send_to_slack( - get_org_message_for_slack(event_details, event_type, affected_org_accounts, affected_org_entities), + get_org_message_for_slack(event_details, event_type, affected_org_accounts, affected_org_entities, slack_webhook="webhook"), slack_url) except HTTPError as e: print("Got an error while sending message to Slack: ", e.code, e.reason) except URLError as e: print("Server connection failed: ", e.reason) pass + if "hooks.slack.com/workflows" in slack_url: + try: + print("Sending the alert to Slack Workflow Channel") + send_to_slack( + get_org_message_for_slack(event_details, event_type, affected_org_accounts, affected_org_entities, slack_webhook="workflow"), + slack_url) + except HTTPError as e: + print("Got an error while sending message to Slack: ", e.code, e.reason) + except URLError as e: + print("Server connection failed: ", e.reason) + pass if "office.com/webhook" in teams_url: try: print("Sending the alert to Teams") @@ -250,6 +277,31 @@ def send_org_email(event_details, eventType, affected_org_accounts, affected_org }, ) +# organization view affected accounts +def get_health_accounts(health_client, event, event_arn): + affected_accounts = [] + accounts_paginator = health_client.get_paginator('describe_affected_entities') + event_accounts_page_iterator = event_accounts_paginator.paginate( + eventArn=event_arn + ) + for event_accounts_page in event_accounts_page_iterator: + json_event_accounts = json.dumps(event_accounts_page, default=myconverter) + parsed_event_accounts = json.loads(json_event_accounts) + affected_org_accounts = (parsed_event_accounts['entities'][0]['awsAccountId']) + return affected_accounts + +def get_health_entities(health_client, event, event_arn): + affected_entities = [] + event_entities_paginator = health_client.get_paginator('describe_affected_entities') + event_entities_page_iterator = event_entities_paginator.paginate( + eventArn=event_arn + ) + for event_entities_page in event_entities_page_iterator: + json_event_entities = json.dumps(event_entities_page, default=myconverter) + parsed_event_entities = json.loads(json_event_entities) + for entity in parsed_event_entities['entities']: + affected_entities.append(entity['entityValue']) + return affected_entities # organization view affected accounts def get_health_org_accounts(health_client, event, event_arn): @@ -301,12 +353,12 @@ def update_org_ddb(event_arn, str_update, status_code, event_details, affected_o delta_hours = os.environ['EVENT_SEARCH_BACK'] delta_hours = int(delta_hours) delta_hours_sec = delta_hours * 3600 - + # formatting time in seconds srt_ddb_format_full = "%Y-%m-%d %H:%M:%S" str_ddb_format_sec = '%s' sec_now = datetime.strftime(datetime.now(), str_ddb_format_sec) - + # check if event arn already exists try: response = aha_ddb_table.get_item( @@ -333,12 +385,14 @@ def update_org_ddb(event_arn, str_update, status_code, event_details, affected_o # Cleanup: DynamoDB entry deleted 24 hours after last update } ) + affected_org_accounts_details = [ + f"{get_account_name(account_id)} ({account_id})" for account_id in affected_org_accounts] # send to configured endpoints if status_code != "closed": - send_org_alert(event_details, affected_org_accounts, affected_org_entities, event_type="create") + send_org_alert(event_details, affected_org_accounts_details, affected_org_entities, event_type="create") else: - send_org_alert(event_details, affected_org_accounts, affected_org_entities, event_type="resolve") - + send_org_alert(event_details, affected_org_accounts_details, affected_org_entities, event_type="resolve") + else: item = response['Item'] if item['lastUpdatedTime'] != str_update and (item['statusCode'] != status_code or @@ -358,32 +412,34 @@ def update_org_ddb(event_arn, str_update, status_code, event_details, affected_o # Cleanup: DynamoDB entry deleted 24 hours after last update } ) + affected_org_accounts_details = [ + f"{get_account_name(account_id)} ({account_id})" for account_id in affected_org_accounts] # send to configured endpoints if status_code != "closed": - send_org_alert(event_details, affected_org_accounts, affected_org_entities, event_type="create") + send_org_alert(event_details, affected_org_accounts_details, affected_org_entities, event_type="create") else: - send_org_alert(event_details, affected_org_accounts, affected_org_entities, event_type="resolve") + send_org_alert(event_details, affected_org_accounts_details, affected_org_entities, event_type="resolve") else: print("No new updates found, checking again in 1 minute.") - - + + # For Customers not using AWS Organizations -def update_ddb(event_arn, str_update, status_code, event_details): +def update_ddb(event_arn, str_update, status_code, event_details, affected_accounts, affected_entities): # open dynamoDB dynamodb = boto3.resource("dynamodb") ddb_table = os.environ['DYNAMODB_TABLE'] aha_ddb_table = dynamodb.Table(ddb_table) - + # set time parameters delta_hours = os.environ['EVENT_SEARCH_BACK'] delta_hours = int(delta_hours) delta_hours_sec = delta_hours * 3600 - + # formatting time in seconds srt_ddb_format_full = "%Y-%m-%d %H:%M:%S" str_ddb_format_sec = '%s' sec_now = datetime.strftime(datetime.now(), str_ddb_format_sec) - + # check if event arn already exists try: response = aha_ddb_table.get_item( @@ -407,12 +463,14 @@ def update_ddb(event_arn, str_update, status_code, event_details): # Cleanup: DynamoDB entry deleted 24 hours after last update } ) + affected_accounts_details = [ + f"{get_account_name(account_id)} ({account_id})" for account_id in affected_accounts] # send to configured endpoints if status_code != "closed": - send_alert(event_details, event_type="create") + send_alert(event_details, affected_accounts, affected_entities, event_type="create") else: - send_alert(event_details, event_type="resolve") - + send_alert(event_details, affected_accounts, affected_entities, event_type="resolve") + else: item = response['Item'] if item['lastUpdatedTime'] != str_update: @@ -429,12 +487,13 @@ def update_ddb(event_arn, str_update, status_code, event_details): ) # send to configured endpoints if status_code != "closed": - send_alert(event_details, event_type="create") + send_alert(event_details, affected_accounts_details, affected_entities, event_type="create") else: - send_alert(event_details, event_type="resolve") + send_alert(event_details, affected_accounts_details, affected_entities, event_type="resolve") else: print("No new updates found, checking again in 1 minute.") + def get_secrets(): secret_teams_name = "MicrosoftChannelID" secret_slack_name = "SlackChannelID" @@ -446,8 +505,8 @@ def get_secrets(): get_secret_value_response_teams = "" get_secret_value_response_slack = "" event_bus_name = "EventBusName" - secret_assumerole_name = "AssumeRoleArn" - + secret_assumerole_name = "AssumeRoleArn" + # create a Secrets Manager client session = boto3.session.Session() client = session.client( @@ -503,7 +562,6 @@ def get_secrets(): chime_channel_id = get_secret_value_response_chime['SecretString'] else: chime_channel_id = "None" - try: get_secret_value_response_assumerole = client.get_secret_value( SecretId=secret_assumerole_name @@ -519,8 +577,7 @@ def get_secrets(): if 'SecretString' in get_secret_value_response_assumerole: assumerole_channel_id = get_secret_value_response_assumerole['SecretString'] else: - assumerole_channel_id = "None" - + assumerole_channel_id = "None" try: get_secret_value_response_eventbus = client.get_secret_value( SecretId=event_bus_name @@ -542,13 +599,15 @@ def get_secrets(): "slack": slack_channel_id, "chime": chime_channel_id, "eventbusname": eventbus_channel_id, - "ahaassumerole": assumerole_channel_id, - } + "ahaassumerole": assumerole_channel_id + } # uncomment below to verify secrets values - #print("Secrets: ",secrets) + #print("Secrets: ",secrets) return secrets + def describe_events(health_client): + str_ddb_format_sec = '%s' # set hours to search back in time for events delta_hours = os.environ['EVENT_SEARCH_BACK'] health_event_type = os.environ['HEALTH_EVENT_TYPE'] @@ -556,7 +615,7 @@ def describe_events(health_client): time_delta = (datetime.now() - timedelta(hours=delta_hours)) print("Searching for events and updates made after: ", time_delta) dict_regions = os.environ['REGIONS'] - + str_filter = { 'lastUpdatedTimes': [ { @@ -564,26 +623,50 @@ def describe_events(health_client): } ] } - + if health_event_type == "issue": - event_type_filter = {'eventTypeCategories': ["issue"]} + event_type_filter = {'eventTypeCategories': ['issue','investigation']} print("AHA will be monitoring events with event type categories as 'issue' only!") str_filter.update(event_type_filter) - + if dict_regions != "all regions": dict_regions = [region.strip() for region in dict_regions.split(',')] print("AHA will monitor for events only in the selected regions: ", dict_regions) region_filter = {'regions': dict_regions} str_filter.update(region_filter) - + event_paginator = health_client.get_paginator('describe_events') event_page_iterator = event_paginator.paginate(filter=str_filter) for response in event_page_iterator: events = response.get('events', []) - return events - + aws_events = json.dumps(events, default=myconverter) + aws_events = json.loads(aws_events) + print('Event(s) Received: ', json.dumps(aws_events)) + if len(aws_events) > 0: # if there are new event(s) from AWS + for event in aws_events: + event_arn = event['arn'] + status_code = event['statusCode'] + str_update = parser.parse((event['lastUpdatedTime'])) + str_update = str_update.strftime(str_ddb_format_sec) + + # get event details + event_details = json.dumps(describe_event_details(health_client, event_arn), default=myconverter) + event_details = json.loads(event_details) + print("Event Details: ", event_details) + if event_details['successfulSet'] == []: + print("An error occured with account:", event_details['failedSet'][0]['awsAccountId'], "due to:", + event_details['failedSet'][0]['errorName'], ":", + event_details['failedSet'][0]['errorMessage']) + continue + else: + # write to dynamoDB for persistence + update_ddb(event_arn, str_update, status_code, event_details, affected_accounts, affected_entities) + else: + print("No events found in time frame, checking again in 1 minute.") + def describe_org_events(health_client): + str_ddb_format_sec = '%s' # set hours to search back in time for events delta_hours = os.environ['EVENT_SEARCH_BACK'] health_event_type = os.environ['HEALTH_EVENT_TYPE'] @@ -591,29 +674,56 @@ def describe_org_events(health_client): delta_hours = int(delta_hours) time_delta = (datetime.now() - timedelta(hours=delta_hours)) print("Searching for events and updates made after: ", time_delta) - + str_filter = { 'lastUpdatedTime': { 'from': time_delta } } - + if health_event_type == "issue": - event_type_filter = {'eventTypeCategories': ["issue"]} + event_type_filter = {'eventTypeCategories': ['issue','investigation']} print("AHA will be monitoring events with event type categories as 'issue' only!") str_filter.update(event_type_filter) - + if dict_regions != "all regions": dict_regions = [region.strip() for region in dict_regions.split(',')] print("AHA will monitor for events only in the selected regions: ", dict_regions) region_filter = {'regions': dict_regions} str_filter.update(region_filter) - + org_event_paginator = health_client.get_paginator('describe_events_for_organization') org_event_page_iterator = org_event_paginator.paginate(filter=str_filter) for response in org_event_page_iterator: events = response.get('events', []) - return events + aws_events = json.dumps(events, default=myconverter) + aws_events = json.loads(aws_events) + print('Event(s) Received: ', json.dumps(aws_events)) + if len(aws_events) > 0: + for event in aws_events: + event_arn = event['arn'] + status_code = event['statusCode'] + str_update = parser.parse((event['lastUpdatedTime'])) + str_update = str_update.strftime(str_ddb_format_sec) + + # get organizational view requirements + affected_org_accounts = get_health_org_accounts(health_client, event, event_arn) + affected_org_entities = get_health_org_entities(health_client, event, event_arn, affected_org_accounts) + + # get event details + event_details = json.dumps(describe_org_event_details(health_client, event_arn, affected_org_accounts), + default=myconverter) + event_details = json.loads(event_details) + print("Event Details: ", event_details) + if event_details['successfulSet'] == []: + print("An error occured with account:", event_details['failedSet'][0]['awsAccountId'], "due to:", + event_details['failedSet'][0]['errorName'], ":", + event_details['failedSet'][0]['errorMessage']) + continue + else: + # write to dynamoDB for persistence + update_org_ddb(event_arn, str_update, status_code, event_details, affected_org_accounts, + affected_org_entities) def myconverter(json_object): if isinstance(json_object, datetime): @@ -626,6 +736,7 @@ def describe_event_details(health_client, event_arn): ) return response + def describe_org_event_details(health_client, event_arn, affected_org_accounts): if len(affected_org_accounts) >= 1: affected_account_ids = affected_org_accounts[0] @@ -641,8 +752,8 @@ def describe_org_event_details(health_client, event_arn, affected_org_accounts): else: response = describe_event_details(health_client, event_arn) return response - - + + def send_to_eventbridge(message, event_type, event_bus): print("Sending response to Eventbridge - event_type, event_bus", event_type, event_bus) client = boto3.client('events') @@ -651,9 +762,9 @@ def send_to_eventbridge(message, event_type, event_bus): 'EventBusName': event_bus}, ]) print("Response is:", response) -def get_sts_token(): +def get_sts_token(service): assumeRoleArn = get_secrets()["ahaassumerole"] - health_client = None + boto3_client = None if "arn:aws:iam::" in assumeRoleArn: ACCESS_KEY = [] @@ -676,8 +787,8 @@ def get_sts_token(): SESSION_TOKEN = acct_b['Credentials']['SessionToken'] # create service client using the assumed role credentials, e.g. S3 - health_client = boto3.client( - 'health', + boto3_client = boto3.client( + service, config=config, aws_access_key_id=ACCESS_KEY, aws_secret_access_key=SECRET_KEY, @@ -685,79 +796,25 @@ def get_sts_token(): ) print("Running in member account deployment mode") else: - health_client = boto3.client('health', config=config) - print("Running in management account demployment mode") + boto3_client = boto3.client(service, config=config) + print("Running in management account deployment mode") - return health_client + return boto3_client def main(event, context): print("THANK YOU FOR CHOOSING AWS HEALTH AWARE!") - health_client = get_sts_token() + health_client = get_sts_token('health') org_status = os.environ['ORG_STATUS'] - str_ddb_format_sec = '%s' + #str_ddb_format_sec = '%s' # check for AWS Organizations Status if org_status == "No": print("AWS Organizations is not enabled. Only Service Health Dashboard messages will be alerted.") - aws_events = describe_events(health_client) - aws_events = json.dumps(aws_events, default=myconverter) - aws_events = json.loads(aws_events) - print('Event(s) Received: ', json.dumps(aws_events)) - if len(aws_events) > 0: # if there are new event(s) from AWS - for event in aws_events: - event_arn = event['arn'] - status_code = event['statusCode'] - str_update = parser.parse((event['lastUpdatedTime'])) - str_update = str_update.strftime(str_ddb_format_sec) - - # get event details - event_details = json.dumps(describe_event_details(event_arn), default=myconverter) - event_details = json.loads(event_details) - print("Event Details: ", event_details) - if event_details['successfulSet'] == []: - print("An error occured with account:", event_details['failedSet'][0]['awsAccountId'], "due to:", - event_details['failedSet'][0]['errorName'], ":", - event_details['failedSet'][0]['errorMessage']) - continue - else: - # write to dynamoDB for persistence - update_ddb(event_arn, str_update, status_code, event_details) - else: - print("No events found in time frame, checking again in 1 minute.") + describe_events(health_client) else: print( "AWS Organizations is enabled. Personal Health Dashboard and Service Health Dashboard messages will be alerted.") - aws_events = describe_org_events(health_client) - aws_events = json.dumps(aws_events, default=myconverter) - aws_events = json.loads(aws_events) - print('Event(s) Received: ', json.dumps(aws_events)) - if len(aws_events) > 0: - for event in aws_events: - event_arn = event['arn'] - status_code = event['statusCode'] - str_update = parser.parse((event['lastUpdatedTime'])) - str_update = str_update.strftime(str_ddb_format_sec) - - # get organizational view requirements - affected_org_accounts = get_health_org_accounts(health_client, event, event_arn) - affected_org_entities = get_health_org_entities(health_client, event, event_arn, affected_org_accounts) - - # get event details - event_details = json.dumps(describe_org_event_details(health_client, event_arn, affected_org_accounts), - default=myconverter) - event_details = json.loads(event_details) - print("Event Details: ", event_details) - if event_details['successfulSet'] == []: - print("An error occured with account:", event_details['failedSet'][0]['awsAccountId'], "due to:", - event_details['failedSet'][0]['errorName'], ":", - event_details['failedSet'][0]['errorMessage']) - continue - else: - # write to dynamoDB for persistence - update_org_ddb(event_arn, str_update, status_code, event_details, affected_org_accounts, - affected_org_entities) - else: - print("No events found in time frame, checking again in 1 minute.") + describe_org_events(health_client) if __name__ == "__main__": - main('', '') \ No newline at end of file + main('', '') diff --git a/BETA-org-member-deployment/messagegenerator.py b/BETA-multi-region/messagegenerator.py similarity index 63% rename from BETA-org-member-deployment/messagegenerator.py rename to BETA-multi-region/messagegenerator.py index e455b65..52755ae 100644 --- a/BETA-org-member-deployment/messagegenerator.py +++ b/BETA-multi-region/messagegenerator.py @@ -6,69 +6,129 @@ import time -def get_message_for_slack(event_details, event_type): +def get_message_for_slack(event_details, event_type, affected_accounts, affected_entities, slack_webhook): message = "" summary = "" - if event_type == "create": - summary += ( - f":rotating_light:*[NEW] AWS Health reported an issue with the {event_details['successfulSet'][0]['event']['service'].upper()} service in " - f"the {event_details['successfulSet'][0]['event']['region'].upper()} region.*" - ) - message = { - "text": summary, - "attachments": [ - { - "color": "danger", - "fields": [ - { "title": "Account(s)", "value": "All accounts\nin region", "short": True }, - { "title": "Resource(s)", "value": "All resources\nin region", "short": True }, - { "title": "Service", "value": event_details['successfulSet'][0]['event']['service'], "short": True }, - { "title": "Region", "value": event_details['successfulSet'][0]['event']['region'], "short": True }, - { "title": "Start Time (UTC)", "value": cleanup_time(event_details['successfulSet'][0]['event']['startTime']), "short": True }, - { "title": "Status", "value": event_details['successfulSet'][0]['event']['statusCode'], "short": True }, - { "title": "Event ARN", "value": event_details['successfulSet'][0]['event']['arn'], "short": False }, - { "title": "Updates", "value": get_last_aws_update(event_details), "short": False } - ], - } - ] - } - - elif event_type == "resolve": - summary += ( - f":heavy_check_mark:*[RESOLVED] The AWS Health issue with the {event_details['successfulSet'][0]['event']['service'].upper()} service in " - f"the {event_details['successfulSet'][0]['event']['region'].upper()} region is now resolved.*" - ) - message = { - "text": summary, - "attachments": [ - { - "color": "00ff00", - "fields": [ - { "title": "Account(s)", "value": "All accounts\nin region", "short": True }, - { "title": "Resource(s)", "value": "All resources\nin region", "short": True }, - { "title": "Service", "value": event_details['successfulSet'][0]['event']['service'], "short": True }, - { "title": "Region", "value": event_details['successfulSet'][0]['event']['region'], "short": True }, - { "title": "Start Time (UTC)", "value": cleanup_time(event_details['successfulSet'][0]['event']['startTime']), "short": True }, - { "title": "End Time (UTC)", "value": cleanup_time(event_details['successfulSet'][0]['event']['endTime']), "short": True }, - { "title": "Status", "value": event_details['successfulSet'][0]['event']['statusCode'], "short": True }, - { "title": "Event ARN", "value": event_details['successfulSet'][0]['event']['arn'], "short": False }, - { "title": "Updates", "value": get_last_aws_update(event_details), "short": False } - ], - } - ] - } + if slack_webhook == "webhook": + if len(affected_entities) >= 1: + affected_entities = "\n".join(affected_entities) + else: + affected_entities = "All resources\nin region" + if len(affected_accounts) >= 1: + affected_accounts = "\n".join(affected_accounts) + else: + affected_accounts = "All accounts\nin region" + if event_type == "create": + summary += ( + f":rotating_light:*[NEW] AWS Health reported an issue with the {event_details['successfulSet'][0]['event']['service'].upper()} service in " + f"the {event_details['successfulSet'][0]['event']['region'].upper()} region.*" + ) + message = { + "text": summary, + "attachments": [ + { + "color": "danger", + "fields": [ + { "title": "Account(s)", "value": affected_accounts, "short": True }, + { "title": "Resource(s)", "value": affected_entities, "short": True }, + { "title": "Service", "value": event_details['successfulSet'][0]['event']['service'], "short": True }, + { "title": "Region", "value": event_details['successfulSet'][0]['event']['region'], "short": True }, + { "title": "Start Time (UTC)", "value": cleanup_time(event_details['successfulSet'][0]['event']['startTime']), "short": True }, + { "title": "Status", "value": event_details['successfulSet'][0]['event']['statusCode'], "short": True }, + { "title": "Event ARN", "value": event_details['successfulSet'][0]['event']['arn'], "short": False }, + { "title": "Updates", "value": get_last_aws_update(event_details), "short": False } + ], + } + ] + } + + elif event_type == "resolve": + summary += ( + f":heavy_check_mark:*[RESOLVED] The AWS Health issue with the {event_details['successfulSet'][0]['event']['service'].upper()} service in " + f"the {event_details['successfulSet'][0]['event']['region'].upper()} region is now resolved.*" + ) + message = { + "text": summary, + "attachments": [ + { + "color": "00ff00", + "fields": [ + { "title": "Account(s)", "value": affected_accounts, "short": True }, + { "title": "Resource(s)", "value": affected_entities, "short": True }, + { "title": "Service", "value": event_details['successfulSet'][0]['event']['service'], "short": True }, + { "title": "Region", "value": event_details['successfulSet'][0]['event']['region'], "short": True }, + { "title": "Start Time (UTC)", "value": cleanup_time(event_details['successfulSet'][0]['event']['startTime']), "short": True }, + { "title": "End Time (UTC)", "value": cleanup_time(event_details['successfulSet'][0]['event']['endTime']), "short": True }, + { "title": "Status", "value": event_details['successfulSet'][0]['event']['statusCode'], "short": True }, + { "title": "Event ARN", "value": event_details['successfulSet'][0]['event']['arn'], "short": False }, + { "title": "Updates", "value": get_last_aws_update(event_details), "short": False } + ], + } + ] + } + else: + if len(affected_entities) >= 1: + affected_entities = "\n".join(affected_entities) + else: + affected_entities = "All resources in region" + if len(affected_accounts) >= 1: + affected_accounts = "\n".join(affected_accounts) + else: + affected_accounts = "All accounts in region" + if event_type == "create": + summary += ( + f":rotating_light:*[NEW] AWS Health reported an issue with the {event_details['successfulSet'][0]['event']['service'].upper()} service in " + f"the {event_details['successfulSet'][0]['event']['region'].upper()} region.*" + ) + message = { + "text": summary, + "accounts": affected_accounts, + "resources": affected_entities, + "service": event_details['successfulSet'][0]['event']['service'], + "region": event_details['successfulSet'][0]['event']['region'], + "start_time": cleanup_time(event_details['successfulSet'][0]['event']['startTime']), + "status": event_details['successfulSet'][0]['event']['statusCode'], + "event_arn": event_details['successfulSet'][0]['event']['arn'], + "updates": get_last_aws_update(event_details) + } + + elif event_type == "resolve": + summary += ( + f":heavy_check_mark:*[RESOLVED] The AWS Health issue with the {event_details['successfulSet'][0]['event']['service'].upper()} service in " + f"the {event_details['successfulSet'][0]['event']['region'].upper()} region is now resolved.*" + ) + message = { + "text": summary, + "accounts": affected_accounts, + "resources": affected_entities, + "service": event_details['successfulSet'][0]['event']['service'], + "region": event_details['successfulSet'][0]['event']['region'], + "start_time": cleanup_time(event_details['successfulSet'][0]['event']['startTime']), + "status": event_details['successfulSet'][0]['event']['statusCode'], + "event_arn": event_details['successfulSet'][0]['event']['arn'], + "updates": get_last_aws_update(event_details) + } + print("Message sent to Slack: ", message) return message -def get_message_for_eventbridge(event_details, event_type): +def get_message_for_eventbridge(event_details, event_type, affected_accounts, affected_entities): message = "" + if len(affected_entities) >= 1: + affected_entities = "\n".join(affected_entities) + else: + affected_entities = "All resources\nin region" + if len(affected_accounts) >= 1: + affected_accounts = "\n".join(affected_accounts) + else: + affected_accounts = "All accounts\nin region" if event_type == "create": message = { "attachments": [ { "fields": [ - { "title": "Account(s)", "value": "All accounts\nin region", "short": True }, - { "title": "Resource(s)", "value": "All resources\nin region", "short": True }, + { "title": "Account(s)", "value": affected_accounts, "short": True }, + { "title": "Resource(s)", "value": affected_entities, "short": True }, { "title": "Service", "value": event_details['successfulSet'][0]['event']['service'], "short": True }, { "title": "Region", "value": event_details['successfulSet'][0]['event']['region'], "short": True }, { "title": "Start Time (UTC)", "value": cleanup_time(event_details['successfulSet'][0]['event']['startTime']), "short": True }, @@ -85,8 +145,8 @@ def get_message_for_eventbridge(event_details, event_type): "attachments": [ { "fields": [ - { "title": "Account(s)", "value": "All accounts\nin region", "short": True }, - { "title": "Resource(s)", "value": "All resources\nin region", "short": True }, + { "title": "Account(s)", "value": affected_accounts, "short": True }, + { "title": "Resource(s)", "value": affected_entities, "short": True }, { "title": "Service", "value": event_details['successfulSet'][0]['event']['service'], "short": True }, { "title": "Region", "value": event_details['successfulSet'][0]['event']['region'], "short": True }, { "title": "Start Time (UTC)", "value": cleanup_time(event_details['successfulSet'][0]['event']['startTime']), "short": True }, @@ -152,79 +212,130 @@ def get_org_message_for_eventbridge(event_details, event_type, affected_org_acco return message -def get_org_message_for_slack(event_details, event_type, affected_org_accounts, affected_org_entities): +def get_org_message_for_slack(event_details, event_type, affected_org_accounts, affected_org_entities, slack_webhook): message = "" summary = "" - if len(affected_org_entities) >= 1: - affected_org_entities = "\n".join(affected_org_entities) - else: - affected_org_entities = "All resources\nin region" - if len(affected_org_accounts) >= 1: - affected_org_accounts = "\n".join(affected_org_accounts) + if slack_webhook == "webhook": + if len(affected_org_entities) >= 1: + affected_org_entities = "\n".join(affected_org_entities) + else: + affected_org_entities = "All resources\nin region" + if len(affected_org_accounts) >= 1: + affected_org_accounts = "\n".join(affected_org_accounts) + else: + affected_org_accounts = "All accounts\nin region" + if event_type == "create": + summary += ( + f":rotating_light:*[NEW] AWS Health reported an issue with the {event_details['successfulSet'][0]['event']['service'].upper()} service in " + f"the {event_details['successfulSet'][0]['event']['region'].upper()} region.*" + ) + message = { + "text": summary, + "attachments": [ + { + "color": "danger", + "fields": [ + { "title": "Account(s)", "value": affected_org_accounts, "short": True }, + { "title": "Resource(s)", "value": affected_org_entities, "short": True }, + { "title": "Service", "value": event_details['successfulSet'][0]['event']['service'], "short": True }, + { "title": "Region", "value": event_details['successfulSet'][0]['event']['region'], "short": True }, + { "title": "Start Time (UTC)", "value": cleanup_time(event_details['successfulSet'][0]['event']['startTime']), "short": True }, + { "title": "Status", "value": event_details['successfulSet'][0]['event']['statusCode'], "short": True }, + { "title": "Event ARN", "value": event_details['successfulSet'][0]['event']['arn'], "short": False }, + { "title": "Updates", "value": get_last_aws_update(event_details), "short": False } + ], + } + ] + } + + elif event_type == "resolve": + summary += ( + f":heavy_check_mark:*[RESOLVED] The AWS Health issue with the {event_details['successfulSet'][0]['event']['service'].upper()} service in " + f"the {event_details['successfulSet'][0]['event']['region'].upper()} region is now resolved.*" + ) + message = { + "text": summary, + "attachments": [ + { + "color": "00ff00", + "fields": [ + { "title": "Account(s)", "value": affected_org_accounts, "short": True }, + { "title": "Resource(s)", "value": affected_org_entities, "short": True }, + { "title": "Service", "value": event_details['successfulSet'][0]['event']['service'], "short": True }, + { "title": "Region", "value": event_details['successfulSet'][0]['event']['region'], "short": True }, + { "title": "Start Time (UTC)", "value": cleanup_time(event_details['successfulSet'][0]['event']['startTime']), "short": True }, + { "title": "End Time (UTC)", "value": cleanup_time(event_details['successfulSet'][0]['event']['endTime']), "short": True }, + { "title": "Status", "value": event_details['successfulSet'][0]['event']['statusCode'], "short": True }, + { "title": "Event ARN", "value": event_details['successfulSet'][0]['event']['arn'], "short": False }, + { "title": "Updates", "value": get_last_aws_update(event_details), "short": False } + ], + } + ] + } else: - affected_org_accounts = "All accounts\nin region" - if event_type == "create": - summary += ( - f":rotating_light:*[NEW] AWS Health reported an issue with the {event_details['successfulSet'][0]['event']['service'].upper()} service in " - f"the {event_details['successfulSet'][0]['event']['region'].upper()} region.*" - ) - message = { - "text": summary, - "attachments": [ - { - "color": "danger", - "fields": [ - { "title": "Account(s)", "value": affected_org_accounts, "short": True }, - { "title": "Resource(s)", "value": affected_org_entities, "short": True }, - { "title": "Service", "value": event_details['successfulSet'][0]['event']['service'], "short": True }, - { "title": "Region", "value": event_details['successfulSet'][0]['event']['region'], "short": True }, - { "title": "Start Time (UTC)", "value": cleanup_time(event_details['successfulSet'][0]['event']['startTime']), "short": True }, - { "title": "Status", "value": event_details['successfulSet'][0]['event']['statusCode'], "short": True }, - { "title": "Event ARN", "value": event_details['successfulSet'][0]['event']['arn'], "short": False }, - { "title": "Updates", "value": get_last_aws_update(event_details), "short": False } - ], - } - ] - } - - elif event_type == "resolve": - summary += ( - f":heavy_check_mark:*[RESOLVED] The AWS Health issue with the {event_details['successfulSet'][0]['event']['service'].upper()} service in " - f"the {event_details['successfulSet'][0]['event']['region'].upper()} region is now resolved.*" - ) - message = { - "text": summary, - "attachments": [ - { - "color": "00ff00", - "fields": [ - { "title": "Account(s)", "value": affected_org_accounts, "short": True }, - { "title": "Resource(s)", "value": affected_org_entities, "short": True }, - { "title": "Service", "value": event_details['successfulSet'][0]['event']['service'], "short": True }, - { "title": "Region", "value": event_details['successfulSet'][0]['event']['region'], "short": True }, - { "title": "Start Time (UTC)", "value": cleanup_time(event_details['successfulSet'][0]['event']['startTime']), "short": True }, - { "title": "End Time (UTC)", "value": cleanup_time(event_details['successfulSet'][0]['event']['endTime']), "short": True }, - { "title": "Status", "value": event_details['successfulSet'][0]['event']['statusCode'], "short": True }, - { "title": "Event ARN", "value": event_details['successfulSet'][0]['event']['arn'], "short": False }, - { "title": "Updates", "value": get_last_aws_update(event_details), "short": False } - ], - } - ] - } + if len(affected_org_entities) >= 1: + affected_org_entities = "\n".join(affected_org_entities) + else: + affected_org_entities = "All resources in region" + if len(affected_org_accounts) >= 1: + affected_org_accounts = "\n".join(affected_org_accounts) + else: + affected_org_accounts = "All accounts in region" + if event_type == "create": + summary += ( + f":rotating_light:*[NEW] AWS Health reported an issue with the {event_details['successfulSet'][0]['event']['service'].upper()} service in " + f"the {event_details['successfulSet'][0]['event']['region'].upper()} region.*" + ) + message = { + "text": summary, + "accounts": affected_org_accounts, + "resources": affected_org_entities, + "service": event_details['successfulSet'][0]['event']['service'], + "region": event_details['successfulSet'][0]['event']['region'], + "start_time": cleanup_time(event_details['successfulSet'][0]['event']['startTime']), + "status": event_details['successfulSet'][0]['event']['statusCode'], + "event_arn": event_details['successfulSet'][0]['event']['arn'], + "updates": get_last_aws_update(event_details) + } + + elif event_type == "resolve": + summary += ( + f":heavy_check_mark:*[RESOLVED] The AWS Health issue with the {event_details['successfulSet'][0]['event']['service'].upper()} service in " + f"the {event_details['successfulSet'][0]['event']['region'].upper()} region is now resolved.*" + ) + message = { + "text": summary, + "accounts": affected_org_accounts, + "resources": affected_org_entities, + "service": event_details['successfulSet'][0]['event']['service'], + "region": event_details['successfulSet'][0]['event']['region'], + "start_time": cleanup_time(event_details['successfulSet'][0]['event']['startTime']), + "status": event_details['successfulSet'][0]['event']['statusCode'], + "event_arn": event_details['successfulSet'][0]['event']['arn'], + "updates": get_last_aws_update(event_details) + } json.dumps(message) print("Message sent to Slack: ", message) return message -def get_message_for_chime(event_details, event_type): +def get_message_for_chime(event_details, event_type, affected_accounts, affected_entities): message = "" + if len(affected_entities) >= 1: + affected_entities = "\n".join(affected_entities) + else: + affected_entities = "All resources\nin region" + if len(affected_accounts) >= 1: + affected_accounts = "\n".join(affected_accounts) + else: + affected_accounts = "All accounts\nin region" summary = "" if event_type == "create": message = str("/md" + "\n" + "**:rotating_light:\[NEW\] AWS Health reported an issue with the " + event_details['successfulSet'][0]['event']['service'].upper() + " service in " + event_details['successfulSet'][0]['event']['region'].upper() + " region.**" + "\n" "---" + "\n" - "**Account(s)**: " + "All accounts in region" + "\n" - "**Resource(s)**: " + "All resources in region" + "\n" + "**Account(s)**: " + affected_accounts + "\n" + "**Resource(s)**: " + affected_entities + "\n" "**Service**: " + event_details['successfulSet'][0]['event']['service'] + "\n" "**Region**: " + event_details['successfulSet'][0]['event']['region'] + "\n" "**Start Time (UTC)**: " + cleanup_time(event_details['successfulSet'][0]['event']['startTime']) + "\n" @@ -237,8 +348,8 @@ def get_message_for_chime(event_details, event_type): message = str("/md" + "\n" + "**:heavy_check_mark:\[RESOLVED\] The AWS Health issue with the " + event_details['successfulSet'][0]['event']['service'].upper() + " service in " + event_details['successfulSet'][0]['event']['region'].upper() + " region is now resolved.**" + "\n" "---" + "\n" - "**Account(s)**: " + "All accounts in region" + "\n" - "**Resource(s)**: " + "All resources in region" + "\n" + "**Account(s)**: " + affected_accounts + "\n" + "**Resource(s)**: " + affected_entities + "\n" "**Service**: " + event_details['successfulSet'][0]['event']['service'] + "\n" "**Region**: " + event_details['successfulSet'][0]['event']['region'] + "\n" "**Start Time (UTC)**: " + cleanup_time(event_details['successfulSet'][0]['event']['startTime']) + "\n" @@ -296,8 +407,16 @@ def get_org_message_for_chime(event_details, event_type, affected_org_accounts, -def get_message_for_teams(event_details, event_type): +def get_message_for_teams(event_details, event_type, affected_accounts, affected_entities): message = "" + if len(affected_entities) >= 1: + affected_entities = "\n".join(affected_entities) + else: + affected_entities = "All resources\nin region" + if len(affected_accounts) >= 1: + affected_accounts = "\n".join(affected_accounts) + else: + affected_accounts = "All accounts\nin region" summary = "" if event_type == "create": title = "🚨 [NEW] AWS Health reported an issue with the " + event_details['successfulSet'][0]['event'][ @@ -313,8 +432,8 @@ def get_message_for_teams(event_details, event_type): "activityTitle": str(title), "markdown": False, "facts": [ - {"name": "Account(s)", "value": "All accounts\nin region"}, - {"name": "Resource(s)", "value": "All resources\nin region"}, + {"name": "Account(s)", "value": affected_accounts}, + {"name": "Resource(s)", "value": affected_entities}, {"name": "Service", "value": event_details['successfulSet'][0]['event']['service']}, {"name": "Region", "value": event_details['successfulSet'][0]['event']['region']}, {"name": "Start Time (UTC)", "value": cleanup_time(event_details['successfulSet'][0]['event']['startTime'])}, @@ -340,8 +459,8 @@ def get_message_for_teams(event_details, event_type): "activityTitle": str(title), "markdown": False, "facts": [ - {"name": "Account(s)", "value": "All accounts\nin region"}, - {"name": "Resource(s)", "value": "All resources\nin region"}, + {"name": "Account(s)", "value": affected_accounts}, + {"name": "Resource(s)", "value": affected_entities}, {"name": "Service", "value": event_details['successfulSet'][0]['event']['service']}, {"name": "Region", "value": event_details['successfulSet'][0]['event']['region']}, {"name": "Start Time (UTC)", "value": cleanup_time(event_details['successfulSet'][0]['event']['startTime'])}, @@ -426,15 +545,15 @@ def get_org_message_for_teams(event_details, event_type, affected_org_accounts, print("Message sent to Teams: ", message) -def get_message_for_email(event_details, event_type): +def get_message_for_email(event_details, event_type, affected_accounts, affected_entities): if event_type == "create": BODY_HTML = f""" Greetings from AWS Health Aware,

There is an AWS incident that is in effect which may likely impact your resources. Here are the details:

- Account(s): All accounts in region
- Resource(s): All service related resources in region
+ Account(s): {affected_accounts}
+ Resource(s): {affected_entities}
Service: {event_details['successfulSet'][0]['event']['service']}
Region: {event_details['successfulSet'][0]['event']['region']}
Start Time (UTC): {cleanup_time(event_details['successfulSet'][0]['event']['startTime'])}
@@ -454,8 +573,8 @@ def get_message_for_email(event_details, event_type): Greetings again from AWS Health Aware,

Good news! The AWS Health incident from earlier has now been marked as resolved.

- Account(s): All accounts in region
- Resource(s): All service related resources in region
+ Account(s): {affected_accounts}
+ Resource(s): {affected_entities}
Service: {event_details['successfulSet'][0]['event']['service']}
Region: {event_details['successfulSet'][0]['event']['region']}
Start Time (UTC): {cleanup_time(event_details['successfulSet'][0]['event']['startTime'])}
diff --git a/BETA-org-member-deployment/CODE_OF_CONDUCT.md b/BETA-org-member-deployment/CODE_OF_CONDUCT.md deleted file mode 100644 index 5b627cf..0000000 --- a/BETA-org-member-deployment/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,4 +0,0 @@ -## Code of Conduct -This project has adopted the [Amazon Open Source Code of Conduct](https://aws.github.io/code-of-conduct). -For more information see the [Code of Conduct FAQ](https://aws.github.io/code-of-conduct-faq) or contact -opensource-codeofconduct@amazon.com with any additional questions or comments. diff --git a/BETA-org-member-deployment/CONTRIBUTING.md b/BETA-org-member-deployment/CONTRIBUTING.md deleted file mode 100644 index c4b6a1c..0000000 --- a/BETA-org-member-deployment/CONTRIBUTING.md +++ /dev/null @@ -1,59 +0,0 @@ -# Contributing Guidelines - -Thank you for your interest in contributing to our project. Whether it's a bug report, new feature, correction, or additional -documentation, we greatly value feedback and contributions from our community. - -Please read through this document before submitting any issues or pull requests to ensure we have all the necessary -information to effectively respond to your bug report or contribution. - - -## Reporting Bugs/Feature Requests - -We welcome you to use the GitHub issue tracker to report bugs or suggest features. - -When filing an issue, please check existing open, or recently closed, issues to make sure somebody else hasn't already -reported the issue. Please try to include as much information as you can. Details like these are incredibly useful: - -* A reproducible test case or series of steps -* The version of our code being used -* Any modifications you've made relevant to the bug -* Anything unusual about your environment or deployment - - -## Contributing via Pull Requests -Contributions via pull requests are much appreciated. Before sending us a pull request, please ensure that: - -1. You are working against the latest source on the *main* branch. -2. You check existing open, and recently merged, pull requests to make sure someone else hasn't addressed the problem already. -3. You open an issue to discuss any significant work - we would hate for your time to be wasted. - -To send us a pull request, please: - -1. Fork the repository. -2. Modify the source; please focus on the specific change you are contributing. If you also reformat all the code, it will be hard for us to focus on your change. -3. Ensure local tests pass. -4. Commit to your fork using clear commit messages. -5. Send us a pull request, answering any default questions in the pull request interface. -6. Pay attention to any automated CI failures reported in the pull request, and stay involved in the conversation. - -GitHub provides additional document on [forking a repository](https://help.github.com/articles/fork-a-repo/) and -[creating a pull request](https://help.github.com/articles/creating-a-pull-request/). - - -## Finding contributions to work on -Looking at the existing issues is a great way to find something to contribute on. As our projects, by default, use the default GitHub issue labels (enhancement/bug/duplicate/help wanted/invalid/question/wontfix), looking at any 'help wanted' issues is a great place to start. - - -## Code of Conduct -This project has adopted the [Amazon Open Source Code of Conduct](https://aws.github.io/code-of-conduct). -For more information see the [Code of Conduct FAQ](https://aws.github.io/code-of-conduct-faq) or contact -opensource-codeofconduct@amazon.com with any additional questions or comments. - - -## Security issue notifications -If you discover a potential security issue in this project we ask that you notify AWS/Amazon Security via our [vulnerability reporting page](http://aws.amazon.com/security/vulnerability-reporting/). Please do **not** create a public github issue. - - -## Licensing - -See the [LICENSE](LICENSE) file for our project's licensing. We will ask you to confirm the licensing of your contribution. diff --git a/BETA-org-member-deployment/LICENSE b/BETA-org-member-deployment/LICENSE deleted file mode 100644 index 1bb4f21..0000000 --- a/BETA-org-member-deployment/LICENSE +++ /dev/null @@ -1,15 +0,0 @@ -Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - diff --git a/CFN_AHA.yml b/CFN_AHA.yml deleted file mode 100644 index 9f8191f..0000000 --- a/CFN_AHA.yml +++ /dev/null @@ -1,314 +0,0 @@ -AWSTemplateFormatVersion: '2010-09-09' -Description: CloudFormation Template for AWS Health Aware (AHA) -Metadata: - 'AWS::CloudFormation::Interface': - ParameterGroups: - - Label: - default: Customize Alerts/Notifications - Parameters: - - AWSOrganizationsEnabled - - AWSHealthEventType - - Label: - default: Package Information - Parameters: - - S3Bucket - - S3Key - - Label: - default: >- - Communication Channels - Slack/Microsoft Teams/Amazon Chime And/or - EventBridge - Parameters: - - SlackWebhookURL - - MicrosoftTeamsWebhookURL - - AmazonChimeWebhookURL - - EventBusName - - Label: - default: Email Setup - For Alerting via Email - Parameters: - - FromEmail - - ToEmail - - Subject - - Label: - default: More Configurations - Optional - Parameters: - - EventSearchBack - - Regions -Conditions: - UsingSlack: !Not [!Equals [!Ref SlackWebhookURL, None]] - UsingTeams: !Not [!Equals [!Ref MicrosoftTeamsWebhookURL, None]] - UsingChime: !Not [!Equals [!Ref AmazonChimeWebhookURL, None]] - UsingEventBridge: !Not [!Equals [!Ref EventBusName, None]] - UsingSecrets: !Or [!Condition UsingSlack, !Condition UsingTeams, !Condition UsingChime, !Condition UsingEventBridge] -Parameters: - AWSOrganizationsEnabled: - Description: >- - You can receive both PHD and SHD alerts if you're using AWS Organizations. - If you are, make sure to enable Organizational Health View: - (https://docs.aws.amazon.com/health/latest/ug/aggregate-events.html) to - aggregate all PHD events in your AWS Organization. If not, you can still - get SHD alerts. - Default: 'No' - AllowedValues: - - 'Yes' - - 'No' - Type: String - AWSHealthEventType: - Description: >- - Select the event type that you want AHA to report on. Refer to - https://docs.aws.amazon.com/health/latest/APIReference/API_EventType.html for more information on EventType. - Default: 'issue | accountNotification | scheduledChange' - AllowedValues: - - 'issue | accountNotification | scheduledChange' - - 'issue' - Type: String - S3Bucket: - Description: >- - Name of your S3 Bucket where the AHA Package .zip resides. Just the name - of the bucket (e.g. my-s3-bucket) - Type: String - S3Key: - Description: >- - Name of the .zip in your S3 Bucket. Just the name of the file (e.g. - aha-v1.0.zip) - Type: String - EventBusName: - Description: >- - This is to ingest alerts into AWS EventBridge. Enter the event bus name if - you wish to send the alerts to the AWS EventBridge. Note: By ingesting - these alerts to AWS EventBridge, you can integrate with 35 SaaS vendors - such as DataDog/NewRelic/PagerDuty. If you don't prefer to use EventBridge, leave the default (None). - Type: String - Default: None - SlackWebhookURL: - Description: >- - Enter the Slack Webhook URL. If you don't prefer to use Slack, leave the default (None). - Type: String - Default: None - MicrosoftTeamsWebhookURL: - Description: >- - Enter Microsoft Teams Webhook URL. If you don't prefer to use MS Teams, - leave the default (None). - Type: String - Default: None - AmazonChimeWebhookURL: - Description: >- - Enter the Chime Webhook URL, If you don't prefer to use Amazon Chime, - leave the default (None). - Type: String - Default: None - Regions: - Description: >- - By default, AHA reports events affecting all AWS regions. - If you want to report on certain regions you can enter up to 10 in a comma separated format. - Available Regions: us-east-1,us-east-2,us-west-1,us-west-2,af-south-1,ap-east-1,ap-south-1,ap-northeast-3, - ap-northeast-2,ap-southeast-1,ap-southeast-2,ap-northeast-1,ca-central-1,eu-central-1,eu-west-1,eu-west-2, - eu-south-1,eu-south-3,eu-north-1,me-south-1,sa-east-1,global - Default: all regions - AllowedPattern: ".+" - ConstraintDescription: No regions were entered, please read the documentation about selecting all regions or filtering on some. - Type: String - EventSearchBack: - Description: How far back to search for events in hours. Default is 1 hour - Default: '1' - Type: Number - FromEmail: - Description: Enter FROM Email Address - Type: String - Default: none@domain.com - AllowedPattern: ^([\w+-.%]+@[\w-.]+\.[A-Za-z]+)(, ?[\w+-.%]+@[\w-.]+\.[A-Za-z]+)*$ - ConstraintDescription: 'FromEmail is not a valid, please verify entry. If not sending to email, leave as the default, none@domain.com.' - ToEmail: - Description: >- - Enter email addresses separated by commas (for ex: abc@amazon.com, - bcd@amazon.com) - Type: String - Default: none@domain.com - AllowedPattern: ^([\w+-.%]+@[\w-.]+\.[A-Za-z]+)(, ?[\w+-.%]+@[\w-.]+\.[A-Za-z]+)*$ - ConstraintDescription: 'ToEmail is not a valid, please verify entry. If not sending to email, leave as the default, none@domain.com.' - Subject: - Description: Enter the subject of the email address - Type: String - Default: AWS Health Alert -Resources: - LambdaExecutionRole: - Type: 'AWS::IAM::Role' - Properties: - AssumeRolePolicyDocument: - Version: '2012-10-17' - Statement: - - Effect: Allow - Principal: - Service: - - lambda.amazonaws.com - Action: - - 'sts:AssumeRole' - Path: / - Policies: - - PolicyName: AHA-LambdaPolicy - PolicyDocument: - Version: '2012-10-17' - Statement: - - Effect: Allow - Action: - - logs:CreateLogGroup - - logs:CreateLogStream - - logs:PutLogEvents - Resource: !Sub 'arn:aws:logs:${AWS::Region}:${AWS::AccountId}:*' - - !If - - UsingSecrets - - Effect: Allow - Action: - - 'secretsmanager:GetResourcePolicy' - - 'secretsmanager:DescribeSecret' - - 'secretsmanager:ListSecretVersionIds' - - 'secretsmanager:GetSecretValue' - Resource: - - !If [UsingTeams, !Sub '${MicrosoftChannelSecret}', !Ref AWS::NoValue] - - !If [UsingSlack, !Sub '${SlackChannelSecret}', !Ref AWS::NoValue] - - !If [UsingEventBridge, !Sub '${EventBusNameSecret}', !Ref AWS::NoValue] - - !If [UsingChime, !Sub '${ChimeChannelSecret}', !Ref AWS::NoValue] - - !Ref 'AWS::NoValue' - - Effect: Allow - Action: - - health:DescribeAffectedAccountsForOrganization - - health:DescribeAffectedEntitiesForOrganization - - health:DescribeEventDetailsForOrganization - - health:DescribeEventsForOrganization - - health:DescribeEventDetails - - health:DescribeEvents - - health:DescribeEventTypes - - health:DescribeAffectedEntities - - organizations:ListAccounts - Resource: "*" - - Effect: Allow - Action: - - dynamodb:ListTables - Resource: !Sub 'arn:aws:dynamodb:${AWS::Region}:${AWS::AccountId}:*' - - Effect: Allow - Action: - - ses:SendEmail - Resource: !Sub 'arn:aws:ses:${AWS::Region}:${AWS::AccountId}:*' - - Effect: Allow - Action: - - dynamodb:UpdateTimeToLive - - dynamodb:PutItem - - dynamodb:DeleteItem - - dynamodb:GetItem - - dynamodb:Scan - - dynamodb:Query - - dynamodb:UpdateItem - - dynamodb:UpdateTable - - dynamodb:GetRecords - Resource: !GetAtt DynamoDBTable.Arn - - Effect: Allow - Action: - - events:PutEvents - Resource: !Sub 'arn:aws:events:${AWS::Region}:${AWS::AccountId}:event-bus/${EventBusName}' - DynamoDBTable: - Type: 'AWS::DynamoDB::Table' - Properties: - AttributeDefinitions: - - AttributeName: arn - AttributeType: S - KeySchema: - - AttributeName: arn - KeyType: HASH - ProvisionedThroughput: - ReadCapacityUnits: 5 - WriteCapacityUnits: 5 - TimeToLiveSpecification: - AttributeName: ttl - Enabled: TRUE - LambdaSchedule: - Type: 'AWS::Events::Rule' - Properties: - Description: Lambda trigger Event - ScheduleExpression: rate(1 minute) - State: ENABLED - Targets: - - Arn: !GetAtt LambdaFunction.Arn - Id: LambdaSchedule - LambdaSchedulePermission: - Type: 'AWS::Lambda::Permission' - Properties: - Action: 'lambda:InvokeFunction' - FunctionName: !GetAtt LambdaFunction.Arn - Principal: events.amazonaws.com - SourceArn: !GetAtt LambdaSchedule.Arn - MicrosoftChannelSecret: - Type: 'AWS::SecretsManager::Secret' - Condition: UsingTeams - Properties: - Name: MicrosoftChannelID - Description: Microsoft Channel ID Secret - SecretString: - Ref: MicrosoftTeamsWebhookURL - Tags: - - Key: HealthCheckMicrosoft - Value: ChannelID - SlackChannelSecret: - Type: 'AWS::SecretsManager::Secret' - Condition: UsingSlack - Properties: - Name: SlackChannelID - Description: Slack Channel ID Secret - SecretString: - Ref: SlackWebhookURL - Tags: - - Key: HealthCheckSlack - Value: ChannelID - EventBusNameSecret: - Type: 'AWS::SecretsManager::Secret' - Condition: UsingEventBridge - Properties: - Name: EventBusName - Description: EventBus Name Secret - SecretString: - Ref: EventBusName - Tags: - - Key: EventBusName - Value: ChannelID - ChimeChannelSecret: - Type: 'AWS::SecretsManager::Secret' - Condition: UsingChime - Properties: - Name: ChimeChannelID - Description: Chime Channel ID Secret - SecretString: - Ref: AmazonChimeWebhookURL - Tags: - - Key: HealthCheckChime - Value: ChannelID - LambdaFunction: - Type: 'AWS::Lambda::Function' - Properties: - Description: Lambda function that runs AHA - Code: - S3Bucket: - Ref: S3Bucket - S3Key: - Ref: S3Key - Handler: handler.main - MemorySize: 128 - Timeout: 600 - Role: - 'Fn::Sub': '${LambdaExecutionRole.Arn}' - Runtime: python3.8 - Environment: - Variables: - REGIONS: - Ref: Regions - FROM_EMAIL: - Ref: FromEmail - TO_EMAIL: - Ref: ToEmail - EMAIL_SUBJECT: - Ref: Subject - DYNAMODB_TABLE: - Ref: DynamoDBTable - EVENT_SEARCH_BACK: - Ref: EventSearchBack - ORG_STATUS: - Ref: AWSOrganizationsEnabled - HEALTH_EVENT_TYPE: - Ref: AWSHealthEventType \ No newline at end of file diff --git a/README.md b/README.md index 9446343..4829877 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,10 @@ ![](https://github.com/aws-samples/aws-health-aware/blob/main/readme-images/aha_banner.png?raw=1) + **Table of Contents** -- [Introduction](#introduction) +- [Introduction](#introduction) - [Architecture](#architecture) - [Configuring an Endpoint](#configuring-an-endpoint) * [Creating a Amazon Chime Webhook URL](#creating-a-amazon-chime-webhook-url) @@ -20,8 +21,6 @@ # Introduction AWS Health Aware (AHA) is an automated notification tool for sending well-formatted AWS Health Alerts to Amazon Chime, Slack, Microsoft Teams, E-mail or an AWS Eventbridge compatible endpoint as long as you have Business or Enterprise Support. -![](https://github.com/aws-samples/aws-health-aware/blob/main/readme-images/aha-logo.png?raw=1) - # Architecture ![](https://github.com/aws-samples/aws-health-aware/blob/main/readme-images/architecture.png?raw=1) @@ -37,10 +36,10 @@ AWS Health Aware (AHA) is an automated notification tool for sending well-format | `MicrosoftChannelSecret` | Webhook URL for Microsoft Teams stored in AWS Secrets Manager | | `SlackChannelSecret` | Webhook URL for Slack stored in AWS Secrets Manager | -# Configuring an Endpoint - +# Configuring an Endpoint AHA can send to multiple endpoints (webhook URLs, Email or EventBridge). To use any of these you'll need to set it up before-hand as some of these are done on 3rd party websites. We'll go over some of the common ones here. -## Creating a Amazon Chime Webhook URL - +## Creating a Amazon Chime Webhook URL **You will need to have access to create a Amazon Chime room and manage webhooks.** 1. Create a new [chat room](https://docs.aws.amazon.com/chime/latest/ug/chime-chat-room.html) for events (i.e. aws_events). @@ -49,18 +48,40 @@ AHA can send to multiple endpoints (webhook URLs, Email or EventBridge). To use 4. **Type** a name for the bot (e.g. AWS Health Bot) and **click** *Create*. 5. **Click** *Copy URL*, we will need it for the deployment. -## Creating a Slack Webhook URL - +## Creating a Slack Webhook URL **You will need to have access to add a new channel and app to your Slack Workspace**. +*Webhook* 1. Create a new [channel](https://slack.com/help/articles/201402297-Create-a-channel) for events (i.e. aws_events) -2. In your browser go to: workspace-name.slack.com/apps where workspace-name is the name of your Slack Workspace. -3. In the search bar, search for: *Incoming Webhooks* and **click** on it. -4. **Click** on *Add to Slack*. -5. From the dropdown **click** on the channel your created in step 1 and **click** *Add Incoming Webhooks integration*. -6. From this page you can change the name of the webhook (i.e. AWS Bot), the icon/emoji to use, etc. +2. In your browser go to: workspace-name.slack.com/apps where workspace-name is the name of your Slack Workspace. +3. In the search bar, search for: *Incoming Webhooks* and **click** on it. +4. **Click** on *Add to Slack*. +5. From the dropdown **click** on the channel your created in step 1 and **click** *Add Incoming Webhooks integration*. +6. From this page you can change the name of the webhook (i.e. AWS Bot), the icon/emoji to use, etc. 7. For the deployment we will need the *Webhook URL*. -## Creating a Microsoft Teams Webhook URL - +*Workflow* + +1. Create a new [channel](https://slack.com/help/articles/201402297-Create-a-channel) for events (i.e. aws_events) +2. Within Slack **click** on your workspace name drop down arrow in the upper left. **click on Tools > Workflow Builder** +3. **Click** Create in the upper right hand corner of the Workflow Builder and give your workflow a name **click** next. +4. **Click** on *select* next to **Webhook** and then **click** *add variable* add the following variables one at a time in the *Key* section. All *data type* will be *text*: +-text +-accounts +-resources +-service +-region +-start_time +-event_arn +-updates +5. When done you should have 8 variables, double check them as they are case sensitive and will be referenced. When checked **click** on *done* and *next*. +6. **Click** on *add step* and then on the add a workflow step **click** *add* next to *send a message*. +7. Under *send this message to:* select the channel you created in Step 1 in *message text* you can should recreate this following: +![](https://github.com/aws-samples/aws-health-aware/blob/main/readme-images/workflow.png?raw=1) +8. **Click** *save* and the **click** *publish* +9. For the deployment we will need the *Webhook URL*. + +## Creating a Microsoft Teams Webhook URL **You will need to have access to add a new channel and app to your Microsoft Teams channel**. 1. Create a new [channel](https://docs.microsoft.com/en-us/microsoftteams/get-started-with-teams-create-your-first-teams-and-channels) for events (i.e. aws_events) @@ -71,13 +92,13 @@ AHA can send to multiple endpoints (webhook URLs, Email or EventBridge). To use 6. From this page you can change the name of the webhook (i.e. AWS Bot), the icon/emoji to use, etc. **Click** *Create* when done. 7. For the deployment we will need the webhook *URL* that is presented. -## Configuring an Email - +## Configuring an Email 1. You'll be able to send email alerts to one or many addresses. However, you must first [verify](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/verify-email-addresses-procedure.html) the email(s) in the Simple Email Service (SES) console. 2. AHA utilizes Amazon SES so all you need is to enter in a To: address and a From: address. 3. You *may* have to allow a rule in your environment so that the emails don't get labeled as SPAM. This will be something you have to congfigure on your own. -## Creating a Amazon EventBridge Ingestion ARN - +## Creating a Amazon EventBridge Ingestion ARN 1. In the AWS Console, search for **Amazon EventBridge**. 2. On the left hand side, **click** *Event buses*. @@ -85,7 +106,7 @@ AHA can send to multiple endpoints (webhook URLs, Email or EventBridge). To use 4. Give your Event bus a name and **click** *Create*. 5. For the deployment we will need the *Name* of the Event bus **(not the ARN)**. -# Setup - +# Setup There are 2 available ways to deploy AHA, both are done via the same CloudFormation template to make deployment as easy as possible. The 2 deployment methods for AHA are: @@ -107,7 +128,7 @@ The 2 deployment methods for AHA are: 3. Upload the .zip you created in Step 1 to an S3 in the same region you plan to deploy this in. 4. In your AWS console go to *CloudFormation*. 5. In the *CloudFormation* console **click** *Create stack > With new resources (standard)*. -6. Under *Template Source* **click** *Upload a template file* and **click** *Choose file* and select `CFN_AHA.yml` **Click** *Next*. +6. Under *Template Source* **click** *Upload a template file* and **click** *Choose file* and select `02_CFN_DEPLOY_AHA.yml` **Click** *Next*. 7. -In *Stack name* type a stack name (i.e. AHA-Deployment). -In *AWSOrganizationsEnabled* leave it set to default which is `No`. If you do have AWS Organizations enabled and you want to aggregate across all your accounts, you should be following the step for [AHA for users who ARE using AWS Organizations](#aha-with-aws-organizations) -In *AWSHealthEventType* select whether you want to receive *all* event types or *only* issues. @@ -138,7 +159,7 @@ The 2 deployment methods for AHA are: 3. Upload the .zip you created in Step 1 to an S3 in the same region you plan to deploy this in. 4. In your AWS console go to *CloudFormation*. 5. In the *CloudFormation* console **click** *Create stack > With new resources (standard)*. -6. Under *Template Source* **click** *Upload a template file* and **click** *Choose file* and select `CFN_AHA.yml` **Click** *Next*. +6. Under *Template Source* **click** *Upload a template file* and **click** *Choose file* and select `02_CFN_DEPLOY_AHA.yml` **Click** *Next*. 7. -In *Stack name* type a stack name (i.e. AHA-Deployment). -In *AWSOrganizationsEnabled* change the dropdown to `Yes`. If you do NOT have AWS Organizations enabled you should be following the steps for [AHA for users who are NOT using AWS Organizations](#aha-without-aws-organizations) -In *AWSHealthEventType* select whether you want to receive *all* event types or *only* issues. @@ -153,12 +174,46 @@ The 2 deployment methods for AHA are: 10. Scroll to the bottom and **click** the *checkbox* and **click** *Create stack*. 11. Wait until *Status* changes to *CREATE_COMPLETE* (roughly 2-4 minutes). +### Deployment in AWS Organization Member Account + +1. Clone the AHA package from the BETA-member-deployment folder. If you're not familiar with the process, [here](https://git-scm.com/docs/git-clone) is some documentation. The URL to clone is in the upper right-hand corner labeled `Clone uri` +2. In your top-level management account AWS console go to *CloudFormation* +3. In the *CloudFormation* console **click** *Create stack > With new resources (standard)*. +4. Under *Template Source* **click** *Upload a template file* and **click** *Choose file* and select `01_CFN_MGMT_ROLE.yml` **Click** *Next*. +5. -In *Stack name* type a stack name (i.e. aha-assume-role). +-In *OrgMemberAccountId* put in the account id of the member account you plan to run AHA in (e.g. 000123456789). +6. Scroll to the bottom and **click** *Next*. +7. Scroll to the bottom and **click** *Next* again. +8. Scroll to the bottom and **click** the *checkbox* and **click** *Create stack*. +9. Wait until *Status* changes to *CREATE_COMPLETE* (roughly 1-2 minutes). This will create an IAM role with the necessary AWS Organizations and AWS Health API permissions for the member account to assume. +10. In the *Outputs* tab, there will be a value for *AWSHealthAwareRoleForPHDEventsArn* (e.g. arn:aws:iam::000123456789:role/aha-org-role-AWSHealthAwareRoleForPHDEvents-ABCSDE12201), copy that down as you will need it for step 16. +11. Back In the root of the package you downloaded/cloned you'll have two files; `handler.py` and `messagegenerator.py`. Use your tool of choice to zip them both up and name them with a unique name (e.g. aha-v1.8.zip). **Note: Putting the version number in the name will make upgrading AHA seamless.** +12. Upload the .zip you created in Step 11 to an S3 in the same region you plan to deploy this in. +13. Login to the member account you plan to deploy this in and in your AWS console go to *CloudFormation*. +14. In the *CloudFormation* console **click** *Create stack > With new resources (standard)*. +15. Under *Template Source* **click** *Upload a template file* and **click** *Choose file* and select `02_CFN_DEPLOY_AHA.yml` **Click** *Next*. +16. -In *Stack name* type a stack name (i.e. AHA-Deployment). +-In *AWSOrganizationsEnabled* change the dropdown to `Yes`. If you do NOT have AWS Organizations enabled you should be following the steps for [AHA for users who are NOT using AWS Organizations](#aha-without-aws-organizations) +-In *AWSHealthEventType* select whether you want to receive *all* event types or *only* issues. +-In *S3Bucket* type ***just*** the bucket name of the S3 bucket used in step 12 (e.g. my-aha-bucket). +-In *S3Key* type ***just*** the name of the .zip file you created in Step 11 (e.g. aha-v1.8.zip). +-In the *Communications Channels* section enter the URLs, Emails and/or ARN of the endpoints you configured previously. +-In the *Email Setup* section enter the From and To Email addresses as well as the Email subject. If you aren't configuring email, just leave it as is. +-In *EventSearchBack* enter in the amount of hours you want to search back for events. Default is 1 hour. +-In *Regions* enter in the regions you want to search for events in. Default is all regions. You can filter for up to 10, comma separated with (e.g. us-east-1, us-east-2). +-In *ManagementAccountRoleArn* enter in the full IAM arn from step 10 (e.g. arn:aws:iam::000123456789:role/aha-org-role-AWSHealthAwareRoleForPHDEvents-ABCSDE12201) +17. Scroll to the bottom and **click** *Next*. +18. Scroll to the bottom and **click** *Next* again. +19. Scroll to the bottom and **click** the *checkbox* and **click** *Create stack*. +12. Wait until *Status* changes to *CREATE_COMPLETE* (roughly 2-4 minutes). + + # Updating **Until this project is migrated to the AWS Serverless Application Model (SAM), updates will have to be done as described below:** 1. Download the updated CloudFormation Template .yml file and 2 `.py` files. 2. Zip up the 2 `.py` files and name the .zip with a different version number than before (e.g. if the .zip you originally uploaded is aha-v1.8.zip the new one should be aha-v1.9.zip) 3. In the AWS CloudFormation console **click** on the name of your stack, then **click** *Update*. -4. In the *Prepare template* section **click** *Replace current template*, **click** *Upload a template file*, **click** *Choose file*, select the newer `CFN_AHA.yml` file you downloaded and finally **click** *Next*. +4. In the *Prepare template* section **click** *Replace current template*, **click** *Upload a template file*, **click** *Choose file*, select the newer `02_CFN_DEPLOY_AHA.yml` file you downloaded and finally **click** *Next*. 5. In the *S3Key* text box change the version number in the name of the .zip to match name of the .zip you uploaded in Step 2 (The name of the .zip has to be different for CloudFormation to recognize a change). **Click** *Next*. 6. At the next screen **click** *Next* and finally **click** *Update stack*. This will now upgrade your environment to the latest version you downloaded. diff --git a/handler.py b/handler.py index 9147ccd..17d246e 100644 --- a/handler.py +++ b/handler.py @@ -34,7 +34,16 @@ # backoff/retry values than than the boto defaults ) ) -health_client = boto3.client('health', config=config) + +# Get Account Name +def get_account_name(account_id): + org_client = get_sts_token('organizations') + try: + account_name = org_client.describe_account(AccountId=account_id)['Account']['Name'] + except Exception: + account_name = account_id + + return account_name def send_alert(event_details, event_type): slack_url = get_secrets()["slack"] @@ -47,7 +56,7 @@ def send_alert(event_details, event_type): if "None" not in event_bus_name: try: print("Sending the alert to Event Bridge") - send_to_eventbridge(get_message_for_eventbridge(event_details, event_type), event_type, event_bus_name) + send_to_eventbridge(get_message_for_eventbridge(event_details, event_type, affected_accounts, affected_entities), event_type, event_bus_name) except HTTPError as e: print("Got an error while sending message to EventBridge: ", e.code, e.reason) except URLError as e: @@ -55,17 +64,26 @@ def send_alert(event_details, event_type): pass if "hooks.slack.com/services" in slack_url: try: - print("Sending the alert to Slack Channel") - send_to_slack(get_message_for_slack(event_details, event_type), slack_url) + print("Sending the alert to Slack Webhook Channel") + send_to_slack(get_message_for_slack(event_details, event_type, affected_accounts, affected_entities, slack_webhook="webhook"), slack_url) except HTTPError as e: print("Got an error while sending message to Slack: ", e.code, e.reason) except URLError as e: print("Server connection failed: ", e.reason) pass + if "hooks.slack.com/workflows" in slack_url: + try: + print("Sending the alert to Slack Workflows Channel") + send_to_slack(get_message_for_slack(event_details, event_type, affected_accounts, affected_entities, slack_webhook="workflow"), slack_url) + except HTTPError as e: + print("Got an error while sending message to Slack: ", e.code, e.reason) + except URLError as e: + print("Server connection failed: ", e.reason) + pass if "office.com/webhook" in teams_url: try: print("Sending the alert to Teams") - send_to_teams(get_message_for_teams(event_details, event_type), teams_url) + send_to_teams(get_message_for_teams(event_details, event_type, affected_accounts, affected_entities), teams_url) except HTTPError as e: print("Got an error while sending message to Teams: ", e.code, e.reason) except URLError as e: @@ -75,7 +93,7 @@ def send_alert(event_details, event_type): if "none@domain.com" not in SENDER and RECIPIENT: try: print("Sending the alert to the emails") - send_email(event_details, event_type) + send_email(event_details, event_type, affected_accounts, affected_entities) except HTTPError as e: print("Got an error while sending message to Email: ", e.code, e.reason) except URLError as e: @@ -84,7 +102,7 @@ def send_alert(event_details, event_type): if "hooks.chime.aws/incomingwebhooks" in chime_url: try: print("Sending the alert to Chime channel") - send_to_chime(get_message_for_chime(event_details, event_type), chime_url) + send_to_chime(get_message_for_chime(event_details, event_type, affected_accounts, affected_entities), chime_url) except HTTPError as e: print("Got an error while sending message to Chime: ", e.code, e.reason) except URLError as e: @@ -113,15 +131,26 @@ def send_org_alert(event_details, affected_org_accounts, affected_org_entities, pass if "hooks.slack.com/services" in slack_url: try: - print("Sending the alert to Slack Channel") + print("Sending the alert to Slack Webhook Channel") send_to_slack( - get_org_message_for_slack(event_details, event_type, affected_org_accounts, affected_org_entities), + get_org_message_for_slack(event_details, event_type, affected_org_accounts, affected_org_entities, slack_webhook="webhook"), slack_url) except HTTPError as e: print("Got an error while sending message to Slack: ", e.code, e.reason) except URLError as e: print("Server connection failed: ", e.reason) pass + if "hooks.slack.com/workflows" in slack_url: + try: + print("Sending the alert to Slack Workflow Channel") + send_to_slack( + get_org_message_for_slack(event_details, event_type, affected_org_accounts, affected_org_entities, slack_webhook="workflow"), + slack_url) + except HTTPError as e: + print("Got an error while sending message to Slack: ", e.code, e.reason) + except URLError as e: + print("Server connection failed: ", e.reason) + pass if "office.com/webhook" in teams_url: try: print("Sending the alert to Teams") @@ -248,6 +277,31 @@ def send_org_email(event_details, eventType, affected_org_accounts, affected_org }, ) +# organization view affected accounts +def get_health_accounts(health_client, event, event_arn): + affected_accounts = [] + accounts_paginator = health_client.get_paginator('describe_affected_entities') + event_accounts_page_iterator = event_accounts_paginator.paginate( + eventArn=event_arn + ) + for event_accounts_page in event_accounts_page_iterator: + json_event_accounts = json.dumps(event_accounts_page, default=myconverter) + parsed_event_accounts = json.loads(json_event_accounts) + affected_org_accounts = (parsed_event_accounts['entities'][0]['awsAccountId']) + return affected_accounts + +def get_health_entities(health_client, event, event_arn): + affected_entities = [] + event_entities_paginator = health_client.get_paginator('describe_affected_entities') + event_entities_page_iterator = event_entities_paginator.paginate( + eventArn=event_arn + ) + for event_entities_page in event_entities_page_iterator: + json_event_entities = json.dumps(event_entities_page, default=myconverter) + parsed_event_entities = json.loads(json_event_entities) + for entity in parsed_event_entities['entities']: + affected_entities.append(entity['entityValue']) + return affected_entities # organization view affected accounts def get_health_org_accounts(health_client, event, event_arn): @@ -331,11 +385,13 @@ def update_org_ddb(event_arn, str_update, status_code, event_details, affected_o # Cleanup: DynamoDB entry deleted 24 hours after last update } ) + affected_org_accounts_details = [ + f"{get_account_name(account_id)} ({account_id})" for account_id in affected_org_accounts] # send to configured endpoints if status_code != "closed": - send_org_alert(event_details, affected_org_accounts, affected_org_entities, event_type="create") + send_org_alert(event_details, affected_org_accounts_details, affected_org_entities, event_type="create") else: - send_org_alert(event_details, affected_org_accounts, affected_org_entities, event_type="resolve") + send_org_alert(event_details, affected_org_accounts_details, affected_org_entities, event_type="resolve") else: item = response['Item'] @@ -356,17 +412,19 @@ def update_org_ddb(event_arn, str_update, status_code, event_details, affected_o # Cleanup: DynamoDB entry deleted 24 hours after last update } ) + affected_org_accounts_details = [ + f"{get_account_name(account_id)} ({account_id})" for account_id in affected_org_accounts] # send to configured endpoints if status_code != "closed": - send_org_alert(event_details, affected_org_accounts, affected_org_entities, event_type="create") + send_org_alert(event_details, affected_org_accounts_details, affected_org_entities, event_type="create") else: - send_org_alert(event_details, affected_org_accounts, affected_org_entities, event_type="resolve") + send_org_alert(event_details, affected_org_accounts_details, affected_org_entities, event_type="resolve") else: print("No new updates found, checking again in 1 minute.") # For Customers not using AWS Organizations -def update_ddb(event_arn, str_update, status_code, event_details): +def update_ddb(event_arn, str_update, status_code, event_details, affected_accounts, affected_entities): # open dynamoDB dynamodb = boto3.resource("dynamodb") ddb_table = os.environ['DYNAMODB_TABLE'] @@ -405,11 +463,13 @@ def update_ddb(event_arn, str_update, status_code, event_details): # Cleanup: DynamoDB entry deleted 24 hours after last update } ) + affected_accounts_details = [ + f"{get_account_name(account_id)} ({account_id})" for account_id in affected_accounts] # send to configured endpoints if status_code != "closed": - send_alert(event_details, event_type="create") + send_alert(event_details, affected_accounts, affected_entities, event_type="create") else: - send_alert(event_details, event_type="resolve") + send_alert(event_details, affected_accounts, affected_entities, event_type="resolve") else: item = response['Item'] @@ -427,9 +487,9 @@ def update_ddb(event_arn, str_update, status_code, event_details): ) # send to configured endpoints if status_code != "closed": - send_alert(event_details, event_type="create") + send_alert(event_details, affected_accounts_details, affected_entities, event_type="create") else: - send_alert(event_details, event_type="resolve") + send_alert(event_details, affected_accounts_details, affected_entities, event_type="resolve") else: print("No new updates found, checking again in 1 minute.") @@ -439,11 +499,13 @@ def get_secrets(): secret_slack_name = "SlackChannelID" secret_chime_name = "ChimeChannelID" region_name = os.environ['AWS_REGION'] + get_secret_value_response_assumerole = "" get_secret_value_response_eventbus = "" get_secret_value_response_chime = "" get_secret_value_response_teams = "" get_secret_value_response_slack = "" event_bus_name = "EventBusName" + secret_assumerole_name = "AssumeRoleArn" # create a Secrets Manager client session = boto3.session.Session() @@ -500,6 +562,22 @@ def get_secrets(): chime_channel_id = get_secret_value_response_chime['SecretString'] else: chime_channel_id = "None" + try: + get_secret_value_response_assumerole = client.get_secret_value( + SecretId=secret_assumerole_name + ) + except ClientError as e: + if e.response['Error']['Code'] == 'AccessDeniedException': + print("No AWS Secret configured for Assume Role, skipping") + assumerole_channel_id = "None" + else: + print("There was an error with the Assume Role secret: ",e.response) + assumerole_channel_id = "None" + finally: + if 'SecretString' in get_secret_value_response_assumerole: + assumerole_channel_id = get_secret_value_response_assumerole['SecretString'] + else: + assumerole_channel_id = "None" try: get_secret_value_response_eventbus = client.get_secret_value( SecretId=event_bus_name @@ -520,12 +598,16 @@ def get_secrets(): "teams": teams_channel_id, "slack": slack_channel_id, "chime": chime_channel_id, - "eventbusname": eventbus_channel_id} - print("Secrets: ",secrets) + "eventbusname": eventbus_channel_id, + "ahaassumerole": assumerole_channel_id + } + # uncomment below to verify secrets values + #print("Secrets: ",secrets) return secrets -def describe_events(): +def describe_events(health_client): + str_ddb_format_sec = '%s' # set hours to search back in time for events delta_hours = os.environ['EVENT_SEARCH_BACK'] health_event_type = os.environ['HEALTH_EVENT_TYPE'] @@ -543,7 +625,7 @@ def describe_events(): } if health_event_type == "issue": - event_type_filter = {'eventTypeCategories': ["issue"]} + event_type_filter = {'eventTypeCategories': ['issue','investigation']} print("AHA will be monitoring events with event type categories as 'issue' only!") str_filter.update(event_type_filter) @@ -557,10 +639,34 @@ def describe_events(): event_page_iterator = event_paginator.paginate(filter=str_filter) for response in event_page_iterator: events = response.get('events', []) - return events + aws_events = json.dumps(events, default=myconverter) + aws_events = json.loads(aws_events) + print('Event(s) Received: ', json.dumps(aws_events)) + if len(aws_events) > 0: # if there are new event(s) from AWS + for event in aws_events: + event_arn = event['arn'] + status_code = event['statusCode'] + str_update = parser.parse((event['lastUpdatedTime'])) + str_update = str_update.strftime(str_ddb_format_sec) + # get event details + event_details = json.dumps(describe_event_details(health_client, event_arn), default=myconverter) + event_details = json.loads(event_details) + print("Event Details: ", event_details) + if event_details['successfulSet'] == []: + print("An error occured with account:", event_details['failedSet'][0]['awsAccountId'], "due to:", + event_details['failedSet'][0]['errorName'], ":", + event_details['failedSet'][0]['errorMessage']) + continue + else: + # write to dynamoDB for persistence + update_ddb(event_arn, str_update, status_code, event_details, affected_accounts, affected_entities) + else: + print("No events found in time frame, checking again in 1 minute.") -def describe_org_events(): + +def describe_org_events(health_client): + str_ddb_format_sec = '%s' # set hours to search back in time for events delta_hours = os.environ['EVENT_SEARCH_BACK'] health_event_type = os.environ['HEALTH_EVENT_TYPE'] @@ -576,7 +682,7 @@ def describe_org_events(): } if health_event_type == "issue": - event_type_filter = {'eventTypeCategories': ["issue"]} + event_type_filter = {'eventTypeCategories': ['issue','investigation']} print("AHA will be monitoring events with event type categories as 'issue' only!") str_filter.update(event_type_filter) @@ -590,22 +696,48 @@ def describe_org_events(): org_event_page_iterator = org_event_paginator.paginate(filter=str_filter) for response in org_event_page_iterator: events = response.get('events', []) - return events + aws_events = json.dumps(events, default=myconverter) + aws_events = json.loads(aws_events) + print('Event(s) Received: ', json.dumps(aws_events)) + if len(aws_events) > 0: + for event in aws_events: + event_arn = event['arn'] + status_code = event['statusCode'] + str_update = parser.parse((event['lastUpdatedTime'])) + str_update = str_update.strftime(str_ddb_format_sec) + + # get organizational view requirements + affected_org_accounts = get_health_org_accounts(health_client, event, event_arn) + affected_org_entities = get_health_org_entities(health_client, event, event_arn, affected_org_accounts) + # get event details + event_details = json.dumps(describe_org_event_details(health_client, event_arn, affected_org_accounts), + default=myconverter) + event_details = json.loads(event_details) + print("Event Details: ", event_details) + if event_details['successfulSet'] == []: + print("An error occured with account:", event_details['failedSet'][0]['awsAccountId'], "due to:", + event_details['failedSet'][0]['errorName'], ":", + event_details['failedSet'][0]['errorMessage']) + continue + else: + # write to dynamoDB for persistence + update_org_ddb(event_arn, str_update, status_code, event_details, affected_org_accounts, + affected_org_entities) def myconverter(json_object): if isinstance(json_object, datetime): return json_object.__str__() -def describe_event_details(event_arn): +def describe_event_details(health_client, event_arn): response = health_client.describe_event_details( eventArns=[event_arn], ) return response -def describe_org_event_details(event_arn, affected_org_accounts): +def describe_org_event_details(health_client, event_arn, affected_org_accounts): if len(affected_org_accounts) >= 1: affected_account_ids = affected_org_accounts[0] response = health_client.describe_event_details_for_organization( @@ -618,7 +750,7 @@ def describe_org_event_details(event_arn, affected_org_accounts): ) return response else: - response = describe_event_details(event_arn) + response = describe_event_details(health_client, event_arn) return response @@ -630,75 +762,59 @@ def send_to_eventbridge(message, event_type, event_bus): 'EventBusName': event_bus}, ]) print("Response is:", response) +def get_sts_token(service): + assumeRoleArn = get_secrets()["ahaassumerole"] + boto3_client = None + + if "arn:aws:iam::" in assumeRoleArn: + ACCESS_KEY = [] + SECRET_KEY = [] + SESSION_TOKEN = [] + + sts_connection = boto3.client('sts') + + ct = datetime.now() + role_session_name = "cross_acct_aha_session" + + acct_b = sts_connection.assume_role( + RoleArn=assumeRoleArn, + RoleSessionName=role_session_name, + DurationSeconds=900, + ) + + ACCESS_KEY = acct_b['Credentials']['AccessKeyId'] + SECRET_KEY = acct_b['Credentials']['SecretAccessKey'] + SESSION_TOKEN = acct_b['Credentials']['SessionToken'] + + # create service client using the assumed role credentials, e.g. S3 + boto3_client = boto3.client( + service, + config=config, + aws_access_key_id=ACCESS_KEY, + aws_secret_access_key=SECRET_KEY, + aws_session_token=SESSION_TOKEN, + ) + print("Running in member account deployment mode") + else: + boto3_client = boto3.client(service, config=config) + print("Running in management account deployment mode") + + return boto3_client def main(event, context): print("THANK YOU FOR CHOOSING AWS HEALTH AWARE!") + health_client = get_sts_token('health') org_status = os.environ['ORG_STATUS'] - str_ddb_format_sec = '%s' + #str_ddb_format_sec = '%s' # check for AWS Organizations Status if org_status == "No": print("AWS Organizations is not enabled. Only Service Health Dashboard messages will be alerted.") - aws_events = describe_events() - aws_events = json.dumps(aws_events, default=myconverter) - aws_events = json.loads(aws_events) - print('Event(s) Received: ', json.dumps(aws_events)) - if len(aws_events) > 0: # if there are new event(s) from AWS - for event in aws_events: - event_arn = event['arn'] - status_code = event['statusCode'] - str_update = parser.parse((event['lastUpdatedTime'])) - str_update = str_update.strftime(str_ddb_format_sec) - - # get event details - event_details = json.dumps(describe_event_details(event_arn), default=myconverter) - event_details = json.loads(event_details) - print("Event Details: ", event_details) - if event_details['successfulSet'] == []: - print("An error occured with account:", event_details['failedSet'][0]['awsAccountId'], "due to:", - event_details['failedSet'][0]['errorName'], ":", - event_details['failedSet'][0]['errorMessage']) - continue - else: - # write to dynamoDB for persistence - update_ddb(event_arn, str_update, status_code, event_details) - else: - print("No events found in time frame, checking again in 1 minute.") + describe_events(health_client) else: print( "AWS Organizations is enabled. Personal Health Dashboard and Service Health Dashboard messages will be alerted.") - aws_events = describe_org_events() - aws_events = json.dumps(aws_events, default=myconverter) - aws_events = json.loads(aws_events) - print('Event(s) Received: ', json.dumps(aws_events)) - if len(aws_events) > 0: - for event in aws_events: - event_arn = event['arn'] - status_code = event['statusCode'] - str_update = parser.parse((event['lastUpdatedTime'])) - str_update = str_update.strftime(str_ddb_format_sec) - - # get organizational view requirements - affected_org_accounts = get_health_org_accounts(health_client, event, event_arn) - affected_org_entities = get_health_org_entities(health_client, event, event_arn, affected_org_accounts) - - # get event details - event_details = json.dumps(describe_org_event_details(event_arn, affected_org_accounts), - default=myconverter) - event_details = json.loads(event_details) - print("Event Details: ", event_details) - if event_details['successfulSet'] == []: - print("An error occured with account:", event_details['failedSet'][0]['awsAccountId'], "due to:", - event_details['failedSet'][0]['errorName'], ":", - event_details['failedSet'][0]['errorMessage']) - continue - else: - # write to dynamoDB for persistence - update_org_ddb(event_arn, str_update, status_code, event_details, affected_org_accounts, - affected_org_entities) - else: - print("No events found in time frame, checking again in 1 minute.") - + describe_org_events(health_client) if __name__ == "__main__": - main('', '') \ No newline at end of file + main('', '') diff --git a/messagegenerator.py b/messagegenerator.py index e455b65..52755ae 100644 --- a/messagegenerator.py +++ b/messagegenerator.py @@ -6,69 +6,129 @@ import time -def get_message_for_slack(event_details, event_type): +def get_message_for_slack(event_details, event_type, affected_accounts, affected_entities, slack_webhook): message = "" summary = "" - if event_type == "create": - summary += ( - f":rotating_light:*[NEW] AWS Health reported an issue with the {event_details['successfulSet'][0]['event']['service'].upper()} service in " - f"the {event_details['successfulSet'][0]['event']['region'].upper()} region.*" - ) - message = { - "text": summary, - "attachments": [ - { - "color": "danger", - "fields": [ - { "title": "Account(s)", "value": "All accounts\nin region", "short": True }, - { "title": "Resource(s)", "value": "All resources\nin region", "short": True }, - { "title": "Service", "value": event_details['successfulSet'][0]['event']['service'], "short": True }, - { "title": "Region", "value": event_details['successfulSet'][0]['event']['region'], "short": True }, - { "title": "Start Time (UTC)", "value": cleanup_time(event_details['successfulSet'][0]['event']['startTime']), "short": True }, - { "title": "Status", "value": event_details['successfulSet'][0]['event']['statusCode'], "short": True }, - { "title": "Event ARN", "value": event_details['successfulSet'][0]['event']['arn'], "short": False }, - { "title": "Updates", "value": get_last_aws_update(event_details), "short": False } - ], - } - ] - } - - elif event_type == "resolve": - summary += ( - f":heavy_check_mark:*[RESOLVED] The AWS Health issue with the {event_details['successfulSet'][0]['event']['service'].upper()} service in " - f"the {event_details['successfulSet'][0]['event']['region'].upper()} region is now resolved.*" - ) - message = { - "text": summary, - "attachments": [ - { - "color": "00ff00", - "fields": [ - { "title": "Account(s)", "value": "All accounts\nin region", "short": True }, - { "title": "Resource(s)", "value": "All resources\nin region", "short": True }, - { "title": "Service", "value": event_details['successfulSet'][0]['event']['service'], "short": True }, - { "title": "Region", "value": event_details['successfulSet'][0]['event']['region'], "short": True }, - { "title": "Start Time (UTC)", "value": cleanup_time(event_details['successfulSet'][0]['event']['startTime']), "short": True }, - { "title": "End Time (UTC)", "value": cleanup_time(event_details['successfulSet'][0]['event']['endTime']), "short": True }, - { "title": "Status", "value": event_details['successfulSet'][0]['event']['statusCode'], "short": True }, - { "title": "Event ARN", "value": event_details['successfulSet'][0]['event']['arn'], "short": False }, - { "title": "Updates", "value": get_last_aws_update(event_details), "short": False } - ], - } - ] - } + if slack_webhook == "webhook": + if len(affected_entities) >= 1: + affected_entities = "\n".join(affected_entities) + else: + affected_entities = "All resources\nin region" + if len(affected_accounts) >= 1: + affected_accounts = "\n".join(affected_accounts) + else: + affected_accounts = "All accounts\nin region" + if event_type == "create": + summary += ( + f":rotating_light:*[NEW] AWS Health reported an issue with the {event_details['successfulSet'][0]['event']['service'].upper()} service in " + f"the {event_details['successfulSet'][0]['event']['region'].upper()} region.*" + ) + message = { + "text": summary, + "attachments": [ + { + "color": "danger", + "fields": [ + { "title": "Account(s)", "value": affected_accounts, "short": True }, + { "title": "Resource(s)", "value": affected_entities, "short": True }, + { "title": "Service", "value": event_details['successfulSet'][0]['event']['service'], "short": True }, + { "title": "Region", "value": event_details['successfulSet'][0]['event']['region'], "short": True }, + { "title": "Start Time (UTC)", "value": cleanup_time(event_details['successfulSet'][0]['event']['startTime']), "short": True }, + { "title": "Status", "value": event_details['successfulSet'][0]['event']['statusCode'], "short": True }, + { "title": "Event ARN", "value": event_details['successfulSet'][0]['event']['arn'], "short": False }, + { "title": "Updates", "value": get_last_aws_update(event_details), "short": False } + ], + } + ] + } + + elif event_type == "resolve": + summary += ( + f":heavy_check_mark:*[RESOLVED] The AWS Health issue with the {event_details['successfulSet'][0]['event']['service'].upper()} service in " + f"the {event_details['successfulSet'][0]['event']['region'].upper()} region is now resolved.*" + ) + message = { + "text": summary, + "attachments": [ + { + "color": "00ff00", + "fields": [ + { "title": "Account(s)", "value": affected_accounts, "short": True }, + { "title": "Resource(s)", "value": affected_entities, "short": True }, + { "title": "Service", "value": event_details['successfulSet'][0]['event']['service'], "short": True }, + { "title": "Region", "value": event_details['successfulSet'][0]['event']['region'], "short": True }, + { "title": "Start Time (UTC)", "value": cleanup_time(event_details['successfulSet'][0]['event']['startTime']), "short": True }, + { "title": "End Time (UTC)", "value": cleanup_time(event_details['successfulSet'][0]['event']['endTime']), "short": True }, + { "title": "Status", "value": event_details['successfulSet'][0]['event']['statusCode'], "short": True }, + { "title": "Event ARN", "value": event_details['successfulSet'][0]['event']['arn'], "short": False }, + { "title": "Updates", "value": get_last_aws_update(event_details), "short": False } + ], + } + ] + } + else: + if len(affected_entities) >= 1: + affected_entities = "\n".join(affected_entities) + else: + affected_entities = "All resources in region" + if len(affected_accounts) >= 1: + affected_accounts = "\n".join(affected_accounts) + else: + affected_accounts = "All accounts in region" + if event_type == "create": + summary += ( + f":rotating_light:*[NEW] AWS Health reported an issue with the {event_details['successfulSet'][0]['event']['service'].upper()} service in " + f"the {event_details['successfulSet'][0]['event']['region'].upper()} region.*" + ) + message = { + "text": summary, + "accounts": affected_accounts, + "resources": affected_entities, + "service": event_details['successfulSet'][0]['event']['service'], + "region": event_details['successfulSet'][0]['event']['region'], + "start_time": cleanup_time(event_details['successfulSet'][0]['event']['startTime']), + "status": event_details['successfulSet'][0]['event']['statusCode'], + "event_arn": event_details['successfulSet'][0]['event']['arn'], + "updates": get_last_aws_update(event_details) + } + + elif event_type == "resolve": + summary += ( + f":heavy_check_mark:*[RESOLVED] The AWS Health issue with the {event_details['successfulSet'][0]['event']['service'].upper()} service in " + f"the {event_details['successfulSet'][0]['event']['region'].upper()} region is now resolved.*" + ) + message = { + "text": summary, + "accounts": affected_accounts, + "resources": affected_entities, + "service": event_details['successfulSet'][0]['event']['service'], + "region": event_details['successfulSet'][0]['event']['region'], + "start_time": cleanup_time(event_details['successfulSet'][0]['event']['startTime']), + "status": event_details['successfulSet'][0]['event']['statusCode'], + "event_arn": event_details['successfulSet'][0]['event']['arn'], + "updates": get_last_aws_update(event_details) + } + print("Message sent to Slack: ", message) return message -def get_message_for_eventbridge(event_details, event_type): +def get_message_for_eventbridge(event_details, event_type, affected_accounts, affected_entities): message = "" + if len(affected_entities) >= 1: + affected_entities = "\n".join(affected_entities) + else: + affected_entities = "All resources\nin region" + if len(affected_accounts) >= 1: + affected_accounts = "\n".join(affected_accounts) + else: + affected_accounts = "All accounts\nin region" if event_type == "create": message = { "attachments": [ { "fields": [ - { "title": "Account(s)", "value": "All accounts\nin region", "short": True }, - { "title": "Resource(s)", "value": "All resources\nin region", "short": True }, + { "title": "Account(s)", "value": affected_accounts, "short": True }, + { "title": "Resource(s)", "value": affected_entities, "short": True }, { "title": "Service", "value": event_details['successfulSet'][0]['event']['service'], "short": True }, { "title": "Region", "value": event_details['successfulSet'][0]['event']['region'], "short": True }, { "title": "Start Time (UTC)", "value": cleanup_time(event_details['successfulSet'][0]['event']['startTime']), "short": True }, @@ -85,8 +145,8 @@ def get_message_for_eventbridge(event_details, event_type): "attachments": [ { "fields": [ - { "title": "Account(s)", "value": "All accounts\nin region", "short": True }, - { "title": "Resource(s)", "value": "All resources\nin region", "short": True }, + { "title": "Account(s)", "value": affected_accounts, "short": True }, + { "title": "Resource(s)", "value": affected_entities, "short": True }, { "title": "Service", "value": event_details['successfulSet'][0]['event']['service'], "short": True }, { "title": "Region", "value": event_details['successfulSet'][0]['event']['region'], "short": True }, { "title": "Start Time (UTC)", "value": cleanup_time(event_details['successfulSet'][0]['event']['startTime']), "short": True }, @@ -152,79 +212,130 @@ def get_org_message_for_eventbridge(event_details, event_type, affected_org_acco return message -def get_org_message_for_slack(event_details, event_type, affected_org_accounts, affected_org_entities): +def get_org_message_for_slack(event_details, event_type, affected_org_accounts, affected_org_entities, slack_webhook): message = "" summary = "" - if len(affected_org_entities) >= 1: - affected_org_entities = "\n".join(affected_org_entities) - else: - affected_org_entities = "All resources\nin region" - if len(affected_org_accounts) >= 1: - affected_org_accounts = "\n".join(affected_org_accounts) + if slack_webhook == "webhook": + if len(affected_org_entities) >= 1: + affected_org_entities = "\n".join(affected_org_entities) + else: + affected_org_entities = "All resources\nin region" + if len(affected_org_accounts) >= 1: + affected_org_accounts = "\n".join(affected_org_accounts) + else: + affected_org_accounts = "All accounts\nin region" + if event_type == "create": + summary += ( + f":rotating_light:*[NEW] AWS Health reported an issue with the {event_details['successfulSet'][0]['event']['service'].upper()} service in " + f"the {event_details['successfulSet'][0]['event']['region'].upper()} region.*" + ) + message = { + "text": summary, + "attachments": [ + { + "color": "danger", + "fields": [ + { "title": "Account(s)", "value": affected_org_accounts, "short": True }, + { "title": "Resource(s)", "value": affected_org_entities, "short": True }, + { "title": "Service", "value": event_details['successfulSet'][0]['event']['service'], "short": True }, + { "title": "Region", "value": event_details['successfulSet'][0]['event']['region'], "short": True }, + { "title": "Start Time (UTC)", "value": cleanup_time(event_details['successfulSet'][0]['event']['startTime']), "short": True }, + { "title": "Status", "value": event_details['successfulSet'][0]['event']['statusCode'], "short": True }, + { "title": "Event ARN", "value": event_details['successfulSet'][0]['event']['arn'], "short": False }, + { "title": "Updates", "value": get_last_aws_update(event_details), "short": False } + ], + } + ] + } + + elif event_type == "resolve": + summary += ( + f":heavy_check_mark:*[RESOLVED] The AWS Health issue with the {event_details['successfulSet'][0]['event']['service'].upper()} service in " + f"the {event_details['successfulSet'][0]['event']['region'].upper()} region is now resolved.*" + ) + message = { + "text": summary, + "attachments": [ + { + "color": "00ff00", + "fields": [ + { "title": "Account(s)", "value": affected_org_accounts, "short": True }, + { "title": "Resource(s)", "value": affected_org_entities, "short": True }, + { "title": "Service", "value": event_details['successfulSet'][0]['event']['service'], "short": True }, + { "title": "Region", "value": event_details['successfulSet'][0]['event']['region'], "short": True }, + { "title": "Start Time (UTC)", "value": cleanup_time(event_details['successfulSet'][0]['event']['startTime']), "short": True }, + { "title": "End Time (UTC)", "value": cleanup_time(event_details['successfulSet'][0]['event']['endTime']), "short": True }, + { "title": "Status", "value": event_details['successfulSet'][0]['event']['statusCode'], "short": True }, + { "title": "Event ARN", "value": event_details['successfulSet'][0]['event']['arn'], "short": False }, + { "title": "Updates", "value": get_last_aws_update(event_details), "short": False } + ], + } + ] + } else: - affected_org_accounts = "All accounts\nin region" - if event_type == "create": - summary += ( - f":rotating_light:*[NEW] AWS Health reported an issue with the {event_details['successfulSet'][0]['event']['service'].upper()} service in " - f"the {event_details['successfulSet'][0]['event']['region'].upper()} region.*" - ) - message = { - "text": summary, - "attachments": [ - { - "color": "danger", - "fields": [ - { "title": "Account(s)", "value": affected_org_accounts, "short": True }, - { "title": "Resource(s)", "value": affected_org_entities, "short": True }, - { "title": "Service", "value": event_details['successfulSet'][0]['event']['service'], "short": True }, - { "title": "Region", "value": event_details['successfulSet'][0]['event']['region'], "short": True }, - { "title": "Start Time (UTC)", "value": cleanup_time(event_details['successfulSet'][0]['event']['startTime']), "short": True }, - { "title": "Status", "value": event_details['successfulSet'][0]['event']['statusCode'], "short": True }, - { "title": "Event ARN", "value": event_details['successfulSet'][0]['event']['arn'], "short": False }, - { "title": "Updates", "value": get_last_aws_update(event_details), "short": False } - ], - } - ] - } - - elif event_type == "resolve": - summary += ( - f":heavy_check_mark:*[RESOLVED] The AWS Health issue with the {event_details['successfulSet'][0]['event']['service'].upper()} service in " - f"the {event_details['successfulSet'][0]['event']['region'].upper()} region is now resolved.*" - ) - message = { - "text": summary, - "attachments": [ - { - "color": "00ff00", - "fields": [ - { "title": "Account(s)", "value": affected_org_accounts, "short": True }, - { "title": "Resource(s)", "value": affected_org_entities, "short": True }, - { "title": "Service", "value": event_details['successfulSet'][0]['event']['service'], "short": True }, - { "title": "Region", "value": event_details['successfulSet'][0]['event']['region'], "short": True }, - { "title": "Start Time (UTC)", "value": cleanup_time(event_details['successfulSet'][0]['event']['startTime']), "short": True }, - { "title": "End Time (UTC)", "value": cleanup_time(event_details['successfulSet'][0]['event']['endTime']), "short": True }, - { "title": "Status", "value": event_details['successfulSet'][0]['event']['statusCode'], "short": True }, - { "title": "Event ARN", "value": event_details['successfulSet'][0]['event']['arn'], "short": False }, - { "title": "Updates", "value": get_last_aws_update(event_details), "short": False } - ], - } - ] - } + if len(affected_org_entities) >= 1: + affected_org_entities = "\n".join(affected_org_entities) + else: + affected_org_entities = "All resources in region" + if len(affected_org_accounts) >= 1: + affected_org_accounts = "\n".join(affected_org_accounts) + else: + affected_org_accounts = "All accounts in region" + if event_type == "create": + summary += ( + f":rotating_light:*[NEW] AWS Health reported an issue with the {event_details['successfulSet'][0]['event']['service'].upper()} service in " + f"the {event_details['successfulSet'][0]['event']['region'].upper()} region.*" + ) + message = { + "text": summary, + "accounts": affected_org_accounts, + "resources": affected_org_entities, + "service": event_details['successfulSet'][0]['event']['service'], + "region": event_details['successfulSet'][0]['event']['region'], + "start_time": cleanup_time(event_details['successfulSet'][0]['event']['startTime']), + "status": event_details['successfulSet'][0]['event']['statusCode'], + "event_arn": event_details['successfulSet'][0]['event']['arn'], + "updates": get_last_aws_update(event_details) + } + + elif event_type == "resolve": + summary += ( + f":heavy_check_mark:*[RESOLVED] The AWS Health issue with the {event_details['successfulSet'][0]['event']['service'].upper()} service in " + f"the {event_details['successfulSet'][0]['event']['region'].upper()} region is now resolved.*" + ) + message = { + "text": summary, + "accounts": affected_org_accounts, + "resources": affected_org_entities, + "service": event_details['successfulSet'][0]['event']['service'], + "region": event_details['successfulSet'][0]['event']['region'], + "start_time": cleanup_time(event_details['successfulSet'][0]['event']['startTime']), + "status": event_details['successfulSet'][0]['event']['statusCode'], + "event_arn": event_details['successfulSet'][0]['event']['arn'], + "updates": get_last_aws_update(event_details) + } json.dumps(message) print("Message sent to Slack: ", message) return message -def get_message_for_chime(event_details, event_type): +def get_message_for_chime(event_details, event_type, affected_accounts, affected_entities): message = "" + if len(affected_entities) >= 1: + affected_entities = "\n".join(affected_entities) + else: + affected_entities = "All resources\nin region" + if len(affected_accounts) >= 1: + affected_accounts = "\n".join(affected_accounts) + else: + affected_accounts = "All accounts\nin region" summary = "" if event_type == "create": message = str("/md" + "\n" + "**:rotating_light:\[NEW\] AWS Health reported an issue with the " + event_details['successfulSet'][0]['event']['service'].upper() + " service in " + event_details['successfulSet'][0]['event']['region'].upper() + " region.**" + "\n" "---" + "\n" - "**Account(s)**: " + "All accounts in region" + "\n" - "**Resource(s)**: " + "All resources in region" + "\n" + "**Account(s)**: " + affected_accounts + "\n" + "**Resource(s)**: " + affected_entities + "\n" "**Service**: " + event_details['successfulSet'][0]['event']['service'] + "\n" "**Region**: " + event_details['successfulSet'][0]['event']['region'] + "\n" "**Start Time (UTC)**: " + cleanup_time(event_details['successfulSet'][0]['event']['startTime']) + "\n" @@ -237,8 +348,8 @@ def get_message_for_chime(event_details, event_type): message = str("/md" + "\n" + "**:heavy_check_mark:\[RESOLVED\] The AWS Health issue with the " + event_details['successfulSet'][0]['event']['service'].upper() + " service in " + event_details['successfulSet'][0]['event']['region'].upper() + " region is now resolved.**" + "\n" "---" + "\n" - "**Account(s)**: " + "All accounts in region" + "\n" - "**Resource(s)**: " + "All resources in region" + "\n" + "**Account(s)**: " + affected_accounts + "\n" + "**Resource(s)**: " + affected_entities + "\n" "**Service**: " + event_details['successfulSet'][0]['event']['service'] + "\n" "**Region**: " + event_details['successfulSet'][0]['event']['region'] + "\n" "**Start Time (UTC)**: " + cleanup_time(event_details['successfulSet'][0]['event']['startTime']) + "\n" @@ -296,8 +407,16 @@ def get_org_message_for_chime(event_details, event_type, affected_org_accounts, -def get_message_for_teams(event_details, event_type): +def get_message_for_teams(event_details, event_type, affected_accounts, affected_entities): message = "" + if len(affected_entities) >= 1: + affected_entities = "\n".join(affected_entities) + else: + affected_entities = "All resources\nin region" + if len(affected_accounts) >= 1: + affected_accounts = "\n".join(affected_accounts) + else: + affected_accounts = "All accounts\nin region" summary = "" if event_type == "create": title = "🚨 [NEW] AWS Health reported an issue with the " + event_details['successfulSet'][0]['event'][ @@ -313,8 +432,8 @@ def get_message_for_teams(event_details, event_type): "activityTitle": str(title), "markdown": False, "facts": [ - {"name": "Account(s)", "value": "All accounts\nin region"}, - {"name": "Resource(s)", "value": "All resources\nin region"}, + {"name": "Account(s)", "value": affected_accounts}, + {"name": "Resource(s)", "value": affected_entities}, {"name": "Service", "value": event_details['successfulSet'][0]['event']['service']}, {"name": "Region", "value": event_details['successfulSet'][0]['event']['region']}, {"name": "Start Time (UTC)", "value": cleanup_time(event_details['successfulSet'][0]['event']['startTime'])}, @@ -340,8 +459,8 @@ def get_message_for_teams(event_details, event_type): "activityTitle": str(title), "markdown": False, "facts": [ - {"name": "Account(s)", "value": "All accounts\nin region"}, - {"name": "Resource(s)", "value": "All resources\nin region"}, + {"name": "Account(s)", "value": affected_accounts}, + {"name": "Resource(s)", "value": affected_entities}, {"name": "Service", "value": event_details['successfulSet'][0]['event']['service']}, {"name": "Region", "value": event_details['successfulSet'][0]['event']['region']}, {"name": "Start Time (UTC)", "value": cleanup_time(event_details['successfulSet'][0]['event']['startTime'])}, @@ -426,15 +545,15 @@ def get_org_message_for_teams(event_details, event_type, affected_org_accounts, print("Message sent to Teams: ", message) -def get_message_for_email(event_details, event_type): +def get_message_for_email(event_details, event_type, affected_accounts, affected_entities): if event_type == "create": BODY_HTML = f""" Greetings from AWS Health Aware,

There is an AWS incident that is in effect which may likely impact your resources. Here are the details:

- Account(s): All accounts in region
- Resource(s): All service related resources in region
+ Account(s): {affected_accounts}
+ Resource(s): {affected_entities}
Service: {event_details['successfulSet'][0]['event']['service']}
Region: {event_details['successfulSet'][0]['event']['region']}
Start Time (UTC): {cleanup_time(event_details['successfulSet'][0]['event']['startTime'])}
@@ -454,8 +573,8 @@ def get_message_for_email(event_details, event_type): Greetings again from AWS Health Aware,

Good news! The AWS Health incident from earlier has now been marked as resolved.

- Account(s): All accounts in region
- Resource(s): All service related resources in region
+ Account(s): {affected_accounts}
+ Resource(s): {affected_entities}
Service: {event_details['successfulSet'][0]['event']['service']}
Region: {event_details['successfulSet'][0]['event']['region']}
Start Time (UTC): {cleanup_time(event_details['successfulSet'][0]['event']['startTime'])}
diff --git a/readme-images/architecture.png b/readme-images/architecture.png index a7ffbab8f1e609b608de42fa931bd0e338d6ed8d..57dbed644c754ec770338074a1ff42fd385e6924 100644 GIT binary patch literal 229418 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 @^e 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%0AZc~7@7}D4lUA?l8hm52Eb52(TlJd_D)IgL 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Ʒ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