title: Simplest lambda function to copy a file from one s3 bucket to another
body: <p>I'm a total noob to working with AWS.  I am trying to get a pretty simple and basic operation to work.   What I want to do is, upon a file being uploaded to one s3 bucket, I want that upload to trigger a Lambda function that will copy that file to another bucket.  </p>
  
  <p>I went to the AWS management console, created an s3 bucket on the us-west2 server called "test-bucket-3x1" to use as my "source" bucket and another called "test-bucket-3x2" as my 'destination' bucket.  I did not change or modify any settings when creating these buckets.  </p>
  
  <p>In the Lambda console, I created an s3 trigger for the 'test-bucket-3x1', changed 'event type' to "ObjectCreatedByPut", and didn't change any other settings.</p>
  
  <p>This is my actual lamda_function code:</p>
  
  <pre><code>import boto3
  import json
  s3 = boto3.resource('s3')
  
  
  def lambda_handler(event, context):
      bucket = s3.Bucket('test-bucket-3x1')
      dest_bucket = s3.Bucket('test-bucket-3x2')
      print(bucket)
      print(dest_bucket)
  
      for obj in bucket.objects():
          dest_key = obj.key
          print(dest_key)
          s3.Object(dest_bucket.name, dest_key).copy_from(CopySource = {'Bucket': obj.bucket_name, 'Key': obj.key})
  </code></pre>
  
  <p>When I test this function with the basic "HelloWorld" test available from the AWS Lambda Console, I receive this"</p>
  
  <pre><code>{
    "errorMessage": "'s3.Bucket.objectsCollectionManager' object is not callable",
    "errorType": "TypeError",
    "stackTrace": [
      [
        "/var/task/lambda_function.py",
        12,
        "lambda_handler",
        "for obj in bucket.objects():"
      ]
    ]
  }
  </code></pre>
  
  <p>What changes do I need to make to my code in order to, upon uploading a file to test-bucket-3x1, a lambda function is triggered and the file is copied to test-bucket-3x2?  </p>
  
  <p>Thanks for your time.  </p>