Доступ к S3 с использованием PEM для аутентификации с помощью Python - PullRequest
1 голос
/ 17 мая 2019

Мне дали файл PEM для доступа к корзине S3.Я могу использовать curl (например, curl -v -k --cert file_path_in_bucket , -O https: ip / sourcefilepath ) для копирования файлов в корзину -- хороший признак того, что PEM позволяет мне получить доступ к ведру.

Я пытался преобразовать это в вызов Python request.get после Запросов Python: .pem -> .crt + key , но получил SSLError ("плохое рукопожатие: ошибка ([('Подпрограммы SSL ',' ssl3_get_server_certificate ',' сбой проверки сертификата ')],)). Мне кажется, мне нужно предоставить дополнительную информацию.

Любая помощь очень ценится.

Ответы [ 4 ]

1 голос
/ 18 мая 2019

Оказывается, ответ следующий:

r = reports.get ('https://ip:port/file_path', verify = False, cert =' pem_file_path ')

Обратите внимание, что для передачи файла pem обратитесь к параметру cert .

Счастливое кодирование

0 голосов
/ 17 мая 2019

Это для загрузки изображения с использованием Boto3

import boto3
img = open('some.jpg','rb')
s3list.Bucket('mybucket').put_object(Key='some.jpg', Body=img)
0 голосов
/ 18 мая 2019

Как они уже предложили, 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
0 голосов
/ 17 мая 2019

Для доступа к S3 через Python предпочтительным способом является использование библиотеки 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...