title: python upload to S3 without credentials
body: <p>I have S3 bucket which has following policy to allow full access from specific IP</p>
  
  <pre><code>{
      "Version": "2012-10-17",
      "Statement": [
          {
              "Sid": "PublicWriteFromIP",
              "Effect": "Allow",
              "Principal": "*",
              "Action": "s3:*",
              "Resource": [
                  "arn:aws:s3:::logs-dev",
                  "arn:aws:s3:::logs-dev/*"
              ],
              "Condition": {
                  "IpAddress": {
                      "aws:SourceIp": "#.#.#.#/32"
                  }
              }
          }
      ]
  }
  </code></pre>
  
  <p>I want to upload file to S3 bucket without any credentials using python. When I tried to use boto/boto3 with empty env <code>AWS_ACCESS_KEY_ID=''</code> &amp; <code>AWS_SECRET_ACCESS_KEY=''</code> I got following error</p>
  
  <pre><code>Traceback (most recent call last):
    File "&lt;stdin&gt;", line 1, in &lt;module&gt;
    File "/usr/local/lib/python2.7/site-packages/boto3/s3/inject.py", line 209, in bucket_upload_file
      ExtraArgs=ExtraArgs, Callback=Callback, Config=Config)
    File "/usr/local/lib/python2.7/site-packages/boto3/s3/inject.py", line 131, in upload_file
      extra_args=ExtraArgs, callback=Callback)
    File "/usr/local/lib/python2.7/site-packages/boto3/s3/transfer.py", line 279, in upload_file
      future.result()
    File "/usr/local/lib/python2.7/site-packages/s3transfer/futures.py", line 106, in result
      return self._coordinator.result()
    File "/usr/local/lib/python2.7/site-packages/s3transfer/futures.py", line 265, in result
      raise self._exception
  botocore.exceptions.NoCredentialsError: Unable to locate credentials
  </code></pre>
  
  <p>How can I upload files to S3 bucket without credentials ? Is it possible to just use <code>urllib2</code> to upload file to S3 (public) ?</p>