[PYTHON] Verwenden Sie boto3, um zu S3 zu gelangen

Einführung

In IoT-bezogenen Projekten war es erforderlich, Dateien in S3 vom Gateway (im Folgenden: GW) herunterzuladen und hochzuladen. Versuchen Sie daher, sie mit Python (2.7) und Boto3 (AWS SDK für Python) zu implementieren. Ich tat. Ich werde zu diesem Zeitpunkt ein Memorandum über das Verfahren aufbewahren.

Endziele

  1. Sie können die Dateien in Ihrem Bucket herunterladen
  2. Sie können Dateien in ein bestimmtes Verzeichnis hochladen

Lass uns anfangen

Installation von boto3

Melden Sie sich mit ssh-Verbindung bei GW an und installieren Sie boto3 mit pip. (GW hat Python2.7 Pip installiert)

sudo pip install boto3

Wenn Sie eine bestimmte Version angeben möchten, installieren Sie diese wie folgt.

sudo pip install boto3==1.0.0

IAM-Erstellung

Bei Verwendung von boto3 muss eine Richtlinie in IAM festgelegt werden. Diesmal habe ich einen IAM-Benutzer mit gesetztem S3FullAccess erstellt. Legen Sie bei Bedarf die erforderlichen Mindestrichtlinien fest, z. B. Nur Lesen oder Eingrenzen der Buckets, auf die zugegriffen werden kann.

AWS CLI-Einstellungen

Legen Sie die Zugriffsschlüsselinformationen des zuvor erstellten IAM-Benutzers fest.

AWS CLI-Installation

sudo pip install awscli

Einstellungen konfigurieren

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

Damit sind die Einstellungen abgeschlossen. Sie können die Einstellungen unter "~ / .aws / credentials" und "~ / .aws / config" überprüfen.

Importieren Sie boto3 in Python

Beginnen Sie mit dem Schreiben wie folgt, um bote3 zu importieren und mit S3-Dateien herumzuspielen.

boto3_test.py


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

import boto3

s3 = boto3.resource('s3')

Wenn Sie andere Dienste verwenden, schreiben Sie wie folgt. (DynamoDB-Beispiel)

boto3_test.py


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

import boto3

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

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

Eigentlich mit S3-Dateien herumspielen

Herunterladen von S3

Verwenden Sie download_file (). Beim Herunterladen von fuga.txt im Bucket Name Hoge

boto3_test.py


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

import boto3

s3 = boto3.resource('s3')

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

Der Bucket ist der gleiche, wenn Sie fuga.txt im Ordner hogehoge herunterladen möchten

boto3_test.py


#---Kürzung---

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

Auf S3 hochladen

Verwenden Sie upload_file (). Beim Hochladen von fuga.txt in den Bucket Name Hoge

boto3_test.py


#---Kürzung---

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

Der Bucket ist der gleiche, wenn Sie fuga.txt in den Ordner hogehoge hochladen

boto3_test.py


#---Kürzung---

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

Sie können die Dateien jetzt in S3 herunterladen und hochladen. Übrigens sollen alle Objektinformationen im Bucket angezeigt werden

boto3_test.py


#---Kürzung---

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

Eine Liste wird mit angezeigt.

Schließlich

Es fiel mir schwer, weil ich Python vor der Verwendung von boto3 nicht so oft berührt hatte, aber das offizielle Dokument war ziemlich gut vorbereitet. Es war hilfreich. Im Gegenteil, wenn Sie keine Ablehnungsreaktion auf Englisch zeigen, sollten Sie das offizielle Dokument lesen. Schweiß

Recommended Posts

Verwenden Sie boto3, um zu S3 zu gelangen
Verwenden Sie boto, um Dateien auf s3 hoch- / herunterzuladen.
S3 Uploader mit Boto
S3-Betrieb mit Python Boto3
Python: So verwenden Sie Async mit
So verwenden Sie virtualenv mit PowerShell
Stellen Sie mit boto eine Verbindung zu Elastic MQ her
Ich wollte mit boto3 mehrere objekte in s3 löschen
Generieren Sie eine mit S3 signierte URL mit boto
Verwenden Sie boto3 mit temporären Anmeldeinformationen durch SAML-Authentifizierung
Verwendung von ManyToManyField mit Djangos Admin
Verwendung von OpenVPN mit Ubuntu 18.04.3 LTS
Verwendung von Cmder mit PyCharm (Windows)
[Einführung in Python] Verwenden wir foreach mit Python
Verwendung von Japanisch mit NLTK-Plot
Versuchen Sie die serverseitige Verschlüsselung von S3 mit boto3
Verwendung des Jupyter-Notebooks mit ABCI
So fangen Sie den Boto3 S3 NoSuch Key-Fehler ab
[AWS] Verknüpfen Sie Lambda und S3 mit boto3
Verwendung des CUT-Befehls (mit Beispiel)
Stellen Sie mit AWS Lambda Python eine Verbindung zu s3 her
S3 serverseitige Verschlüsselung SSE mit Python boto3
Verwendung von SQLAlchemy / Connect mit aiomysql
Verwendung des JDBC-Treibers mit Redash
Umgang mit SSL-Fehlern beim Herstellen einer Verbindung zu S3 mit Python boto
Verwenden Sie bei der Ausgabe einer S3-Liste mit Boto3 Bucket (). Objects.filter anstelle von list_objects_v2.
Kopieren Sie Daten von Amazon S3 mit Python (boto) in Google Cloud Storage.
Verwendung der GCP-Ablaufverfolgung mit offener Telemetrie
Ich habe versucht, lightGBM, xg Boost mit Boruta zu verwenden
Ich möchte MATLAB feval mit Python verwenden
Aktivieren Sie die Code-Vervollständigung auf boto3 mit boto3-Stubs
Geben Sie die ausführbare Python-Datei an, die mit virtualenv verwendet werden soll
Der einfachste Weg, OpenCV mit Python zu verwenden
Die Geschichte des Versuchs, Tensorboard mit Pytorch zu verwenden
Ich möchte Temporäres Verzeichnis mit Python2 verwenden
Ich möchte -inf nicht mit np.log verwenden
[Python] Zusammenfassung der S3-Dateivorgänge mit boto3
Exportieren Sie den RDS-Snapshot mit Lambda (Python) nach S3.
Ich möchte ip vrf mit SONiC verwenden
Laden Sie Bilder mit tkinter mit GUI auf S3 hoch
Kernel hinzufügen / entfernen, um Jupyter mit venv zu verwenden
Hinweise zum Implementieren des Schlüssels unter Amazon S3 mit Boto 3, Implementierungsbeispiel, Hinweise
Versuchen Sie, die 4-Kern-CPU des Raspberry Pi 2 mit Parallel Python zu verbrauchen
Verwendung von xml.etree.ElementTree
Wie benutzt man Python-Shell
Verwenden Sie mecab-ipadic-neologd mit igo-python
Verwenden Sie RTX 3090 mit PyTorch
Hinweise zur Verwendung von tf.data
Verwenden Sie ansible mit cygwin
Verwendung von virtualenv
Verwenden Sie pipdeptree mit virtualenv
Verwendung von xgboost: Mehrklassenklassifizierung mit Irisdaten
Verwendung von Image-Match
[Python] Verwenden Sie JSON mit Python
Wie man Shogun benutzt
Verwenden Sie Mock mit Pytest
Verwendung von Pandas 2
Konvertieren Sie 202003 bis 2020-03 mit Pandas
Verwenden Sie den Indikator mit pd.merge