Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 python不带凭据上传到S3_Python 2.7_Amazon S3_Boto3_Boto - Fatal编程技术网

Python 2.7 python不带凭据上传到S3

Python 2.7 python不带凭据上传到S3,python-2.7,amazon-s3,boto3,boto,Python 2.7,Amazon S3,Boto3,Boto,我有一个S3 bucket,它有以下策略允许从特定IP完全访问 { "Version": "2012-10-17", "Statement": [ { "Sid": "PublicWriteFromIP", "Effect": "Allow", "Principal": "*", "Action": "s3:*", "Resource": [

我有一个S3 bucket,它有以下策略允许从特定IP完全访问

{
    "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"
                }
            }
        }
    ]
}
我想使用python将文件上传到S3 bucket,而不需要任何凭据。当我尝试将boto/boto3与空env
AWS\u ACCESS\u KEY\u ID=''
&
AWS\u SECRET\u ACCESS\u KEY=''一起使用时,我遇到了以下错误

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  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
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“/usr/local/lib/python2.7/site packages/boto3/s3/inject.py”,第209行,在bucket\u upload\u文件中
ExtraArgs=ExtraArgs,Callback=Callback,Config=Config)
文件“/usr/local/lib/python2.7/site packages/boto3/s3/inject.py”,上传文件第131行
额外参数=额外参数,回调=回调)
文件“/usr/local/lib/python2.7/site packages/boto3/s3/transfer.py”,上传文件第279行
future.result()
文件“/usr/local/lib/python2.7/site packages/s3transfer/futures.py”,结果中的第106行
返回self.\u coordinator.result()
文件“/usr/local/lib/python2.7/site packages/s3transfer/futures.py”,结果中第265行
提出自己的意见
botocore.exceptions.NoCredentialsError:找不到凭据

如果没有凭据,如何将文件上载到S3存储桶?是否可以只使用
urllib2
将文件上载到S3(公共)?

我必须启用
静态Web主机
&将
阻止所有公共访问
设置为关闭

然后下面的代码起作用了

import requests
url = "https://logs-dev.s3-us-east-1.amazonaws.com/"
data = { 'key': '/test.txt' }
files = { 'file': open('/tmp/test.txt', 'rb') }
r = requests.post(url, data=data, files=files)
print "status %s" % r.status_code
也许它可以帮助你: