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.
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.
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...
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:
- 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
== 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
.
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.
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.
Recommended Posts