为我提供了一个PEM文件来访问S3存储桶。我可以使用curl(例如curl -v -k --cert file_path_in_bucket ,-O https: ip / sourcefilepath )将文件复制到存储桶-这很好地表明PEM允许我访问存储桶。
我尝试将其转换为Python Requests: .pem -> .crt + key之后的Python request.get调用,但收到SSLError(“握手不正确:错误([(“ SSL例程”,“ ssl3_get_server_certificate”,“证书验证失败”)) ,))。在我看来,我需要提供其他信息。
任何帮助将不胜感激。
答案 0 :(得分:1)
原来的答案如下:
r = requests.get('https:// ip:port / file_path ',verify = False,cert =' pem_file_path ')
注意,请参考 cert 参数以传递pem文件。
快乐编码
答案 1 :(得分:0)
通过Python访问S3的首选方法是使用BOTO3库。
假设您已经非常简单地配置了SECRET KEY和Credentials。
import boto3
s3list = boto3.resource('s3')
print('Displaying list of Buckets I have access to ')
for bucket in s3list.buckets.all():
print(bucket.name)
答案 2 :(得分:0)
这是要使用Boto3上传图像
import boto3
img = open('some.jpg','rb')
s3list.Bucket('mybucket').put_object(Key='some.jpg', Body=img)
答案 3 :(得分:0)
正如他们已经向您建议的那样,boto3易于使用。 这里有我用于将对象放入s3存储桶或从中获取对象的函数。
def putdataons3(localfile, remotefile):
try:
bucket = 'yourbucket'
boto3accesskey = 'your access key'
boto3secretaccesskey = 'your secret access key'
boto3client = boto3.client('s3', region_name='eu-central-1', aws_access_key_id=boto3accesskey, aws_secret_access_key=boto3secretaccesskey)
d = boto3client.put_object(Body=open(localfile, 'rb').read(), Bucket=bucket, Key=remotefile)
if d['ResponseMetadata']['HTTPStatusCode'] == 200:
return True
return False
except:
return False
def getdatafroms3(remotefile, localfile, overwrite=True):
try:
if overwrite == False:
if os.path.isfile(localfile):
return False
bucket = 'yourbucket'
boto3accesskey = 'your access key'
boto3secretaccesskey = 'your secret access key'
boto3client = boto3.client('s3', region_name='eu-central-1', aws_access_key_id=boto3accesskey, aws_secret_access_key=boto3secretaccesskey)
d = boto3client.get_object(Bucket=bucket, Key=remotefile)
if d['ResponseMetadata']['HTTPStatusCode'] == 200:
f = open(localfile, "wb")
d = d['Body'].read()
f.write(d)
f.close()
return True
return False
except:
return False