[PYTHON] Paramètres de lecture de fichiers S3 avec des pandas depuis Jupyter Notebook sur AWS

Aperçu

Si vous utilisez Jupyter Notebook avec EC2 sur AWS, spécifiez le chemin des données dans S3 depuis pd.read_csv () comme indiqué ci-dessous. Il peut être lu directement.

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")

À ce stade, il est nécessaire de spécifier à l'avance AWS_ACCESS_KEY_ID et AWS_SECRET_ACCESS_KEY dans les variables d'environnement, comme décrit ci-dessus.

Pour être honnête, il est difficile de faire ces désignations à chaque fois. Je pense que beaucoup de gens ont l'habitude d'importer des paquets tels que ʻimport pandas as pd`, mais peu de gens peuvent se souvenir des clés de chaînes aléatoires. En outre, ce type d'informations privées sont des informations que vous ne souhaitez pas inclure lors du partage de votre ordinateur portable avec d'autres personnes, il est donc très inefficace et dangereux de les supprimer à chaque fois.

Par conséquent, définissons à l'avance afin que vous puissiez accéder aux fichiers S3 sans en avoir conscience avec Jupyter Notebook. Il y a plusieurs façons de le faire, et j'aimerais vous présenter chacune d'elles.

Vous n'avez besoin que de l'une de ces trois méthodes. Je n'ai pas beaucoup d'avantages / inconvénients, donc je pense que c'est normal de faire ce que vous voulez.

Méthode

Méthode 1: chargez les paramètres au démarrage du notebook Jupyter

On suppose que le notebook jupyter est installé.

Enregistrez les paramètres AWS_ACCESS_KEY_ID et AWS_SECRET_ACCESS_KEY dans ~ / .ipython / profile_default / startup / avec le nom de fichier 00_startup.ipy. Le nom du fichier est arbitraire, mais si vous ajoutez un nombre au début, il sera exécuté dans cet ordre.

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

La disposition des fichiers est la suivante.

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

En faisant cela, la commande ci-dessus sera exécutée au démarrage du notebook jupyter, vous n'avez donc pas à le spécifier dans ʻos.environ` depuis le notebook.

Méthode 2: définir les variables d'environnement directement dans le shell

C'est une façon de le définir comme une variable d'environnement shell. Écrivez-le dans le fichier de configuration de votre shell, tel que .bash_profile ou .zshrc, et chargez-le lorsque le shell démarre, ou exécutez-le directement à l'invite pour le définir.

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

Méthode 3: Décrivez dans le profil lu par boto

Derrière pandas se trouve un Python AWS SDK appelé boto, que vous pouvez également écrire directement dans le profil de ce package. Enregistrez le code ci-dessous avec le nom de fichier ~ / .boto.

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

== Addendum: 03/10/2016 == La méthode ci-dessus était la méthode avec boto2. Bien que ~ / .boto soit également lu dans boto3, on dit qu'il est lu dans l'ordre suivant à partir de boto3, il est donc préférable de le décrire dans ~ / .aws / credentials, qui sont les informations d'identification de aws lui-même ʻawscli. Je pense que cela peut signifier partager les paramètres avec la commande `.

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

== Fin du post-scriptum ==

Ensuite, lorsque vous spécifiez le chemin de S3 dans pandas, boto est importé et le profil ci-dessus est chargé. (source)

Veuillez noter que juste pip install pandas n'installe pas boto dans les dépendances, donc il ne sera pas installé ensemble. Avant de l'utiliser, faites pip install boto.

Résumé

Comme mentionné ci-dessus, il existe plusieurs méthodes de configuration lors de l'accès à S3 avec des pandas. Tous sont faciles à faire lors de la création d'un environnement, alors assurez-vous de les définir.

Supplément

Ces méthodes ne sont pas limitées à Jupyter Notebook sur AWS, mais vous pouvez vous connecter à S3 dans n'importe quel environnement tant que vous avez la clé AWS, vous pouvez donc également vous connecter à S3 localement, ainsi que pd.read_csv (" s3n: // ...) Cependant, vous devez être prudent lorsque vous l'utilisez car les données seront transmises de S3 vers l'extérieur d'AWS et le montant du transfert sera généré. , Si vous souhaitez exécuter le code source censé utiliser S3 dans un environnement différent, vous devez le vérifier. Il peut être judicieux de ne pas définir la clé AWS comme clé par défaut localement.

référence

Recommended Posts

Paramètres de lecture de fichiers S3 avec des pandas depuis Jupyter Notebook sur AWS
Formatage avec autopep8 sur le notebook Jupyter
Analyse pratique avec Pandas + notebook Jupyter
[AWS] Recherchez et acquérez les données nécessaires à partir des fichiers S3 avec S3 Select
Essayez SVM avec scikit-learn sur Jupyter Notebook
[Easy Python] Lecture de fichiers Excel avec des pandas
Activer Jupyter Notebook avec conda sur un serveur distant
Jupyter sur AWS
Paramètres lors de l'utilisation de Jupyter Notebook sous un serveur proxy
Paramètres de proxy lors de l'utilisation de pip ou de Jupyter Notebook
Lancez facilement jupyter notebook sur AWS et accédez localement
Exécutez Tensorflow à partir de Jupyter Notebook sur Bash sur Ubuntu sous Windows
Soyez prudent lors de la lecture de données avec des pandas (spécifiez dtype)
Surveiller le modèle d'entraînement avec TensorBord sur Jupyter Notebook
Essayez les opérations de base sur Pandas DataFrame sur Jupyter Notebook
Importer des cellules spécifiques à partir d'autres blocs-notes avec le bloc-notes Jupyter
Approvisionnement EC2 avec Vagrant + Jupyter (IPython Notebook) sur Docker
Points addictifs lors du téléchargement de fichiers à l'aide de boto sur AWS Lambda
Écrivez des graphiques en temps réel avec Matplotlib sur le notebook Jupyter
Essayez le clustering avec un modèle gaussien mixte sur Jupyter Notebook
Une note lorsque je ne peux pas ouvrir le bloc-notes Jupyter sous Windows
Lecture et écriture de fichiers à partir de blocs-notes sur Watson Studio vers IBM Cloud Object Storage (ICOS) -à l'aide de project-lib-
Utilisation de Graphviz avec Jupyter Notebook
Utiliser pip avec Jupyter Notebook
Graphiques élevés dans le notebook Jupyter
Afficher le PDF sur Jupyter Notebook
Utiliser Cython avec Jupyter Notebook
Jouer avec Jupyter Notebook (IPython Notebook)
Lire des fichiers .txt avec Python
Exécutez Jupyter Notebook sous Windows
Précautions lors de l'exécution de Python sur EC2 à partir d'AWS Lambda (Exécuter la commande)
Affichage en temps réel de la vidéo acquise à partir de la caméra Web sur le notebook Jupyter (Python3)
Comment exécuter Jupyter et Spark sur Mac avec des paramètres minimaux