title: Why does my AWS Lambda script return 'Instances' instead of the instance ID?
body: <p>Below is my Lambda script which is a work in progress to back up some of my EC2 instances. I printed out the value of instanceId immediately after assignment and, to my surprise, it returned the string 'Instances' rather than an instance ID. I checked the expected format of the response here: <a href="http://boto3.readthedocs.io/en/latest/reference/services/ec2.html#EC2.Client.describe_instances" rel="nofollow">http://boto3.readthedocs.io/en/latest/reference/services/ec2.html#EC2.Client.describe_instances</a> and I believe I'm doing the call correctly. I first get just the Instances item from the list (schedule_instances = schedulers['Instances']) and then try to get the instance ID from that new list. Is this correct? I also have similar doubts about getting the VolumeId.</p>
  
  <pre><code>from __future__ import print_function
  import json
  import boto3
  import datetime
  import time
  
  ec2 = boto3.client('ec2')
  
  def lambda_handler(event, context):
      try:
          print("Creating snapshots on " + str(datetime.datetime.today()) + ".")
          schedulers = ec2.describe_instances(MaxResults=50, Filters=[{'Name':'tag:GL-sub-purpose', 'Values':['Schedule']}])
          print("Performing backup on " + str(len(schedulers)) + " schedules.")
          successful = []
          failed     = []
          schedule_instances = schedulers['Instances']
          for s in schedulers:
              try:
                  instanceId=s['InstanceId']
                  print (instanceId)
                  snapshotDescription = instanceId + "-" + str(datetime.date.today().strftime('%Y-%m-%d')) + "-46130e7ac954-automated"
                  ec2.create_snapshot(
                  VolumeId=s['VolumeId'], 
                  Description=snapshotDescription
                  )
                  successful.append(instanceId)
              except Exception as e:
                  print(e)
                  failed.append(instanceId + " :\t" + str(e))
          print("Performed backup on " + str(len(successful)) + " schedulers. Failed backup on " + str(len(failed)) + " schedulers. ")
          sendEmail(successful, failed)
          return "Success"
      except Exception as e:
          print(e)
          return "Failed"
  </code></pre>