Как получить доступ к данным AWS S3 с помощью boto3 - PullRequest
0 голосов
/ 22 февраля 2020

Я довольно новичок как в S3, так и в boto3. Я пытаюсь прочитать некоторые данные в следующем формате:

https://blahblah.s3.amazonaws.com/data1.csv
https://blahblah.s3.amazonaws.com/data2.csv
https://blahblah.s3.amazonaws.com/data3.csv

Я импортирую boto3, и кажется, что мне нужно сделать что-то вроде:

import boto3
s3 = boto3.client('s3')

Однако, что я должен делать после создания этого клиента, если я хочу читать все файлы отдельно в памяти (я не должен локально загружать эти данные). В идеале я хотел бы читать в каждом файле данных CSV отдельные * DataFrames * 1013 (что я знаю, как делать, как только я знаю, как получить доступ к данным S3).

Пожалуйста, поймите, я довольно плохо знаком с и boto3, и S3, так что я даже не знаю, с чего начать.

Ответы [ 2 ]

2 голосов
/ 22 февраля 2020

У вас будет 2 варианта, оба из которых вы уже упомянули:

  1. Загрузка файла локально с использованием download_file
s3.download_file(
    "<bucket-name>", 
    "<key-of-file>", 
    "<local-path-where-file-will-be-downloaded>"
)

См. download_file

Загрузка содержимого файла в память с использованием get_object
response = s3.get_object(Bucket="<bucket-name>", Key="<key-of-file>")
contentBody = response.get("Body")
# You need to read the content as it is a Stream
content = contentBody.read()

См. get_object

Любой подход хорош, и вы можете просто выбрать, какой из них лучше соответствует вашему сценарию.

2 голосов
/ 22 февраля 2020

Попробуйте это:

import boto3
s3 = boto3.resource('s3')
obj = s3.Object(<<bucketname>>, <<itemname>>)
body = obj.get()['Body'].read()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...