[PYTHON] Einstellungen zum Lesen von S3-Dateien mit Pandas aus Jupyter Notebook unter AWS

Überblick

Wenn Sie Jupyter Notebook mit EC2 unter AWS betreiben, geben Sie den Datenpfad in S3 von pd.read_csv () an, wie unten gezeigt. Es kann direkt gelesen werden.

import pandas as pd
os.environ["AWS_ACCESS_KEY_ID"] = "XXX..."
os.environ["AWS_SECRET_ACCESS_KEY"] = "YYY..."
all_df = pd.read_csv("s3n://mybucket/path/to/dir/data.csv")

Zu diesem Zeitpunkt müssen AWS_ACCESS_KEY_ID und AWS_SECRET_ACCESS_KEY in den Umgebungsvariablen wie oben beschrieben im Voraus angegeben werden.

Um ehrlich zu sein, ist es mühsam, diese Bezeichnungen jedes Mal zu machen. Ich bin sicher, dass viele Leute die Gewohnheit haben, Pakete wie "Pandas als PDF importieren" zu importieren, aber nicht so viele Leute können sich an die Schlüssel zufälliger Zeichenfolgen erinnern. Außerdem handelt es sich bei dieser Art von privaten Informationen um Informationen, die Sie beim Teilen Ihres Notizbuchs mit anderen nicht einbeziehen möchten. Daher ist es sehr ineffizient und gefährlich, sie jedes Mal zu löschen.

Stellen Sie daher im Voraus ein, damit Sie mit Jupyter Notebook auf S3-Dateien zugreifen können, ohne dies zu bemerken. Es gibt verschiedene Möglichkeiten, dies zu tun, und ich möchte jede vorstellen.

Sie müssen nur eine dieser drei Methoden ausführen. Ich habe nicht so viele Vor- und Nachteile, also denke ich, dass es in Ordnung ist, zu tun, was immer Sie wollen.

Methode

Methode 1: Laden Sie die Einstellungen, wenn das Jupyter-Notebook gestartet wird

Es wird davon ausgegangen, dass das Jupyter-Notebook installiert ist.

Speichern Sie die Einstellungen AWS_ACCESS_KEY_ID und AWS_SECRET_ACCESS_KEY in ~ / .ipython / profile_default / startup / unter dem Dateinamen 00_startup.ipy. Der Dateiname ist beliebig, aber wenn Sie am Anfang eine Nummer hinzufügen, wird diese in dieser Reihenfolge ausgeführt.

os.environ["AWS_ACCESS_KEY_ID"] = "XXX..."
os.environ["AWS_SECRET_ACCESS_KEY"] = "YYY..."

Das Layout der Dateien ist wie folgt.

$ tree .ipython/profile_default/startup
.ipython/profile_default/startup
├── 00_startup.ipy
└── README

Auf diese Weise wird der obige Befehl ausgeführt, wenn das Jupyter-Notizbuch gestartet wird, sodass Sie ihn nicht in "os.environ" des Notizbuchs angeben müssen.

Methode 2: Legen Sie Umgebungsvariablen direkt in der Shell fest

Auf diese Weise können Sie es als Shell-Umgebungsvariable festlegen. Schreiben Sie es in die Konfigurationsdatei Ihrer Shell, z. B. ".bash_profile" oder ".zshrc", und laden Sie es, wenn die Shell gestartet wird, oder führen Sie es direkt an der Eingabeaufforderung aus, um es festzulegen.

export AWS_ACCESS_KEY_ID=XXX...
export AWS_SECRET_ACCESS_KEY=YYY...

Methode 3: Beschreiben Sie in dem von boto gelesenen Profil

Hinter Pandas befindet sich ein Python AWS SDK namens boto, das Sie auch direkt in das Profil dieses Pakets schreiben können. Speichern Sie den folgenden Code unter dem Dateinamen "~ / .boto".

[Credentials]
aws_access_key_id = XXX...
aws_secret_access_key = YYY...

== Nachtrag: 03.10.2016 == Die obige Methode war die Methode mit boto2. Obwohl ~ / .boto auch in boto3 gelesen wird, wird gesagt, dass es in der folgenden Reihenfolge von boto3 gelesen wird, daher ist es besser, es in ~ / .aws / credentials zu beschreiben, was die Anmeldeinformationen von aws selbst sind, awscli Ich denke, es kann bedeuten, die Einstellungen mit dem Befehl zu teilen.

The mechanism in which boto3 looks for credentials is to search through a list of possible locations and stop as soon as it finds credentials. The order in which Boto3 searches for credentials is:

  1. Passing credentials as parameters in the boto.client() method
  2. Passing credentials as parameters when creating a Session object
  3. Environment variables
  4. Shared credential file (~/.aws/credentials)
  5. AWS config file (~/.aws/config)
  6. Assume Role provider
  7. Boto2 config file (/etc/boto.cfg and ~/.boto)
  8. Instance metadata service on an Amazon EC2 instance that has an IAM role configured.
[default]
aws_access_key_id=foo
aws_secret_access_key=bar

== Ende des Postskripts ==

Wenn Sie dann den Pfad von S3 in Pandas angeben, wird Boto importiert und das obige Profil geladen. (Quelle)

Bitte beachten Sie, dass nur "pip install pandas" boto nicht in Abhängigkeiten installiert, sodass es nicht zusammen installiert wird. Bevor Sie es verwenden, führen Sie "pip install boto" aus.

Zusammenfassung

Wie oben erwähnt, gibt es beim Zugriff auf S3 mit Pandas verschiedene Einstellungsmethoden. Alle sind beim Erstellen einer Umgebung einfach durchzuführen. Stellen Sie sie daher unbedingt ein.

Ergänzung

Diese Methoden sind nicht auf Jupyter Notebook unter AWS beschränkt. Sie können jedoch in jeder Umgebung eine Verbindung zu S3 herstellen, solange Sie über den AWS-Schlüssel verfügen. Sie können also auch lokal eine Verbindung zu S3 herstellen, pd.read_csv (" s3n: // ...) Sie müssen jedoch vorsichtig sein, wenn Sie es verwenden, da die Daten von S3 an die Außenseite von AWS gesendet werden und der Übertragungsbetrag generiert wird. Erstens sind schwere Daten aufgrund des Problems der Übertragungszeit schwierig zu verarbeiten. , Wenn Sie den Quellcode ausführen möchten, der S3 in einer anderen Umgebung verwenden soll, sollten Sie ihn überprüfen. Es ist möglicherweise ratsam, den AWS-Schlüssel lokal nicht als Standard festzulegen.

Referenz

Recommended Posts

Einstellungen zum Lesen von S3-Dateien mit Pandas aus Jupyter Notebook unter AWS
Formatieren mit autopep8 auf Jupyter Notebook
Bequeme Analyse mit Pandas + Jupyter Notebook
[AWS] Suchen und Abrufen der erforderlichen Daten aus S3-Dateien mit S3 Select
Probieren Sie SVM mit scikit-learn auf Jupyter Notebook aus
[Easy Python] Lesen von Excel-Dateien mit Pandas
Aktivieren Sie Jupyter Notebook mit conda auf dem Remote-Server
Jupyter auf AWS
Einstellungen bei Verwendung von Jupyter Notebook unter Proxyserver
Proxy-Einstellungen bei Verwendung von Pip oder Jupyter Notebook
Starten Sie das Jupyter Notebook ganz einfach unter AWS und greifen Sie lokal zu
Führen Sie Tensorflow von Jupyter Notebook unter Bash unter Ubuntu unter Windows aus
Seien Sie vorsichtig beim Lesen von Daten mit Pandas (geben Sie dtype an)
Überwachen Sie das Trainingsmodell mit TensorBord auf Jupyter Notebook
Probieren Sie grundlegende Operationen mit Pandas DataFrame auf Jupyter Notebook aus
Importieren Sie bestimmte Zellen aus anderen Notizbüchern mit Jupyter-Notizbuch
EC2-Bereitstellung mit Vagrant + Jupyter (IPython Notebook) auf Docker
Suchtpunkte beim Herunterladen von Dateien mit boto auf AWS Lambda
Schreiben Sie Diagramme in Echtzeit mit Matplotlib auf dem Jupyter-Notizbuch
Versuchen Sie, mit einem gemischten Gaußschen Modell auf Jupyter Notebook zu gruppieren
Ein Hinweis, wenn ich das Jupyter-Notizbuch unter Windows nicht öffnen kann
Lesen und Schreiben von Dateien aus dem Notebook in Watson Studio in IBM Cloud Object Storage (ICOS) - unter Verwendung von project-lib-
Verwenden von Graphviz mit Jupyter Notebook
Verwenden Sie pip mit Jupyter Notebook
Hohe Charts im Jupyter-Notizbuch
PDF auf Jupyter Notebook anzeigen
Verwenden Sie Cython mit Jupyter Notebook
Spielen Sie mit Jupyter Notebook (IPython Notebook)
TXT-Dateien mit Python lesen
Führen Sie Jupyter Notebook unter Windows aus
Vorsichtsmaßnahmen beim Ausführen von Python unter EC2 über AWS Lambda (Befehl ausführen)
Echtzeitanzeige von Videos, die von einer Webkamera auf einem Jupyter-Notebook (Python3) aufgenommen wurden
So führen Sie Jupyter und Spark auf einem Mac mit minimalen Einstellungen aus