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.
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.
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...
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:
- Passing credentials as parameters in the boto.client() method
- Passing credentials as parameters when creating a Session object
- Environment variables
- Shared credential file (~/.aws/credentials)
- AWS config file (~/.aws/config)
- Assume Role provider
- Boto2 config file (/etc/boto.cfg and ~/.boto)
- 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.
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.
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.
Recommended Posts