title: Amazon SageMaker Downloading Files from S3
body: <p>I'm storing midi files in an S3 bucket and am trying to download them into the SageMake jupyter notebook.  I am using this code</p>
  
  <pre><code>import os
  import boto3  # Python library for Amazon API 
  import botocore
  from botocore.exceptions import ClientError
  def download_from_s3(url):
      """ex: url = s3://sagemakerbucketname/data/validation.tfrecords"""
      url_parts = url.split("/")  # =&gt; ['s3:', '', 'sagemakerbucketname', 'data', ...
      bucket_name = url_parts[2]
      key = os.path.join(*url_parts[3:])
      filename = url_parts[-1]
      if not os.path.exists(filename):
          try:
              # Create an S3 client
              s3 = boto3.resource('s3')
              print('Downloading {} to {}'.format(url, filename))
              s3.Bucket(bucket_name).download_file(key, filename)
          except botocore.exceptions.ClientError as e:
              if e.response['Error']['Code'] == "404":
                  print('The object {} does not exist in bucket {}'.format(
                      key, bucket_name))
              else:
                  raise
  </code></pre>
  
  <p>however I am getting An error occurred (403) when calling the HeadObject operation: Forbidden</p>
  
  <p>Here are the permissions attached for the S3:</p>
  
  <pre><code>{
      "Version": "2012-10-17",
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "s3:GetObject",
                  "s3:PutObject",
                  "s3:DeleteObject",
                  "s3:ListBucket"
              ],
              "Resource": [
                  "arn:aws:s3:::*"
              ]
          }
      ]
  }
  </code></pre>