[PYTHON] Utilisez boto3 pour accéder à S3

introduction

Dans les projets liés à l'IoT, il était nécessaire de télécharger et de télécharger des fichiers dans S3 à partir de la passerelle (ci-après GW), alors essayez de l'implémenter en utilisant python (2.7) et boto3 (AWS SDK pour python). J'ai fait. Je garderai un mémorandum de la procédure à ce moment-là.

buts finaux

  1. Vous pourrez télécharger les fichiers de votre bucket
  2. Vous pourrez télécharger des fichiers dans un répertoire spécifique

Commençons

installation de boto3

Connectez-vous à GW avec une connexion ssh et installez boto3 avec pip. (GW a installé python2.7 pip)

sudo pip install boto3

Si vous souhaitez spécifier une version spécifique, procédez comme suit.

sudo pip install boto3==1.0.0

Création IAM

Lors de l'utilisation de boto3, il est nécessaire de définir une stratégie dans IAM. Cette fois, j'ai créé un utilisateur IAM avec l'ensemble S3FullAccess. Si nécessaire, définissez les stratégies minimales nécessaires, telles que la lecture seule ou la réduction des compartiments accessibles.

Paramètres de l'AWS CLI

Définissez les informations de clé d'accès de l'utilisateur IAM créé précédemment.

Installation de l'AWS CLI

sudo pip install awscli

Configurer les paramètres

aws configure
AWS Access Key ID: xxxxxxxxxxxxxxxxx
AWS Secret Access Key: xxxxxxxxxxxxxxxxx
Default region name: ap-northeast-1
Default output format:

Ceci termine les réglages. Vous pouvez vérifier les paramètres dans "~ / .aws / credentials" et "~ / .aws / config".

Importer boto3 en python

Pour importer bote3 et manipuler des fichiers S3, commencez à écrire comme suit.

boto3_test.py


# -*- coding: utf-8 -*-

import boto3

s3 = boto3.resource('s3')

Si vous souhaitez utiliser d'autres services, écrivez comme suit. (Exemple DynamoDB)

boto3_test.py


# -*- coding: utf-8 -*-

import boto3

# S3
s3 = boto3.resource('s3')

# DynamoDB
dynamo = bot3.resource('dynamodb')

En fait, mess avec les fichiers S3

Télécharger depuis S3

Utilisez download_file (). Lors du téléchargement de fuga.txt dans le nom du bucket hoge

boto3_test.py


# -*- coding: utf-8 -*-

import boto3

s3 = boto3.resource('s3')

bucket = s3.Bucket('hoge')
bucket.download_file('fuga.txt', 'fuga.txt')

Le bucket est le même, si vous souhaitez télécharger fuga.txt dans le dossier hogehoge

boto3_test.py


#---réduction---

bucket = s3.Bucket('hoge')
bucket.download_file('hogehoge/fuga.txt', 'fuga.txt')

Télécharger vers S3

Utilisez upload_file (). Lors du téléchargement de fuga.txt dans le nom du bucket hoge

boto3_test.py


#---réduction---

bucket = s3.Bucket('hoge')
bucket.upload_file('fuga.txt', 'fuga.txt')

Le bucket est le même, si vous téléchargez fuga.txt dans le dossier hogehoge

boto3_test.py


#---réduction---

bucket = s3.Bucket('hoge')
bucket.upload_file('fuga.txt', 'hogehoge/fuga.txt')

Vous pouvez maintenant télécharger et télécharger les fichiers dans S3. Au fait, il s'agit d'afficher les informations de chaque objet dans le seau

boto3_test.py


#---réduction---

bucket = s3.Bucket('hoge')
print bucket.name

Une liste s'affiche avec.

finalement

J'ai eu du mal car je n'avais pas beaucoup touché python avant d'utiliser boto3, mais le document officiel était plutôt bon. Cela a été utile. Au contraire, si vous ne montrez pas de réaction de rejet à l'anglais, vous devriez lire le document officiel. Transpiration

Recommended Posts

Utilisez boto3 pour accéder à S3
Utilisez boto pour charger / télécharger des fichiers vers s3.
Téléchargeur S3 avec boto
Opération S3 avec python boto3
Python: comment utiliser async avec
Pour utiliser virtualenv avec PowerShell
Connectez-vous à Elastic MQ avec boto
Je voulais supprimer plusieurs objets en s3 avec boto3
Générer une URL signée S3 avec boto
Utilisez boto3 avec des informations d'identification temporaires par authentification SAML
Comment utiliser ManyToManyField avec l'administrateur de Django
Comment utiliser OpenVPN avec Ubuntu 18.04.3 LTS
Comment utiliser Cmder avec PyCharm (Windows)
[Introduction à Python] Utilisons foreach avec Python
Comment utiliser le japonais avec le tracé NLTK
Essayez le chiffrement côté serveur de S3 à l'aide de boto3
Comment utiliser le notebook Jupyter avec ABCI
Comment attraper l'erreur de clé boto3 S3 NoSuch
[AWS] Associez Lambda et S3 à boto3
Comment utiliser la commande CUT (avec exemple)
Connectez-vous à s3 avec AWS Lambda Python
Chiffrement côté serveur S3 SSE avec Python boto3
Comment utiliser SQLAlchemy / Connect avec aiomysql
Comment utiliser le pilote JDBC avec Redash
Comment gérer l'erreur SSL lors de la connexion à S3 avec Python boto
Lors de la sortie d'une liste de S3 avec Boto3, utilisez Bucket (). Objects.filter au lieu de list_objects_v2.
Copier des données d'Amazon S3 vers Google Cloud Storage avec Python (boto)
Comment utiliser la trace GCP avec la télémétrie ouverte
J'ai essayé d'utiliser lightGBM, xg boost avec Boruta
Je veux utiliser MATLAB feval avec python
Activer la complétion de code sur boto3 avec boto3-stubs
Spécifiez le fichier exécutable Python à utiliser avec virtualenv
Le moyen le plus simple d'utiliser OpenCV avec python
Histoire d'essayer d'utiliser Tensorboard avec Pytorch
Je souhaite utiliser le répertoire temporaire avec Python2
Je ne veux pas utiliser -inf avec np.log
[Python] Résumé des opérations sur les fichiers S3 avec boto3
Exporter un instantané RDS vers S3 avec Lambda (Python)
Je souhaite utiliser ip vrf avec SONiC
Télécharger des images sur S3 avec une interface graphique à l'aide de tkinter
Ajouter / supprimer un noyau pour utiliser jupyter avec venv
Comment obtenir la clé sur Amazon S3 avec Boto 3, exemple de mise en œuvre, notes
Essayez d'utiliser le processeur à 4 cœurs du Raspberry Pi 2 avec Parallel Python
Comment utiliser xml.etree.ElementTree
Comment utiliser Python-shell
Utilisez mecab-ipadic-neologd avec igo-python
Utilisez RTX 3090 avec PyTorch
Remarques sur l'utilisation de tf.data
Utiliser ansible avec cygwin
Comment utiliser virtualenv
Utiliser pipdeptree avec virtualenv
Comment utiliser xgboost: classification multi-classes avec des données d'iris
Comment utiliser la correspondance d'image
[Python] Utiliser JSON avec Python
Comment utiliser le shogun
Utilisez Mock avec pytest
Comment utiliser Pandas 2
Convertir 202003 en 2020-03 avec les pandas
Utiliser l'indicateur avec pd.merge