title: Parse a CloudWatch alert in AWS Lambda Python function
body: <p>I'm working on Lambda function that will perform several actions based on CloudWatch alerts.</p>
  
  <p>The JSON format of the alerts is:</p>
  
  <pre><code>{
      'SignatureVersion': '1',
      'Timestamp': '2018-03-08T16: 06: 27.163Z',
      'MessageId': 'df82d564-1651-5dc6-a37a-867f779226ec',
      'Message': '{
          "AlarmName": "awsec2-i-08c38bb8af7962797-CPU-Utilization",
          "AlarmDescription": "Created from EC2 Console",
          "AWSAccountId": "111111111111",
          "NewStateValue": "ALARM",
          "NewStateReason": "Threshold Crossed: 1 datapoint [1.49999999999939 (08/03/18 16:04:00)] was greater than or equal to the threshold (1.0).",
          "StateChangeTime": "2018-03-08T16:06:27.124+0000",
          "Region": "EU (Ireland)",
          "OldStateValue": "OK",
          "Trigger": {
              "MetricName": "CPUUtilization",
              "Namespace": "AWS/EC2",
              "StatisticType": "Statistic",
              "Statistic": "AVERAGE",
              "Unit": null,
              "Dimensions": [
                  {
                      "name": "InstanceId",
                      "value": "i-08c38bb8af7962797"
                  }
              ],
              "Period": 60,
              "EvaluationPeriods": 1,
              "ComparisonOperator": "GreaterThanOrEqualToThreshold",
              "Threshold": 1.0,
              "TreatMissingData": "",
              "EvaluateLowSampleCountPercentile": ""
          }
      }',
      'Type': 'Notification',
      'TopicArn': 'arn:aws:sns:eu-west-1: 11111111111:test',
      'Subject': 'ALARM: "awsec2-i-08c38bb8af7962797-CPU-Utilization" in EU (Ireland)'
  }
  </code></pre>
  
  <p>What I need to understand is how I tell my function to extract only the <code>InstanceId</code> value and use it as variable for the rest of the function.</p>