【发布时间】:2020-02-20 06:12:45
【问题描述】:
我有 S3 存储桶,它具有以下策略以允许从特定 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 存储桶。当我尝试将 boto/boto3 与空环境 AWS_ACCESS_KEY_ID='' 和 AWS_SECRET_ACCESS_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
如何在没有凭据的情况下将文件上传到 S3 存储桶?是否可以只使用urllib2 将文件上传到 S3(公共)?
【问题讨论】:
标签: python-2.7 amazon-s3 boto3 boto