Kopieren Sie Daten von Amazon S3 mit Python (boto) in Google Cloud Storage.

Wenn Sie die Daten in Amazon S3 (im Folgenden S3) in Red Shift einfügen, können Sie dies problemlos tun, da es sich um dasselbe AWS handelt. Wenn Sie jedoch dasselbe mit BigQuery tun, erfolgt dies weiterhin über Google Cloud Storage (im Folgenden: GCS). Praktisch. GCS kann mit S3 kompatibel gemacht werden, mit dem von S3 zu GCS und umgekehrt migriert werden kann.

Dieser Artikel beschreibt, wie das mit Python und Boto gemacht wird.

Zu berücksichtigende Alternativen

Für Anwendungen wie das Durchführen einer Kopie in der Befehlszeile können die folgenden besseren Methoden verwendet werden.

gsutil

Normalerweise ist der einfachste Weg, Daten zwischen S3 und GCS zu kopieren, die Verwendung des Befehls gsutil. https://cloud.google.com/storage/docs/gsutil

$ gsutil cp s3://bucket/file gs://bucket/file

Vorbereitung

Kompatibler Betriebszugriff

Machen Sie GCS über die GCS-Verwaltungskonsole kompatibel. Aktivieren Sie den Betriebszugriff. (Referenzartikel: Hochladen in Google Cloud Storage mit AWS CLI oder AWS SDK für PHP)

Notwendige Informationen

Die folgenden Informationen sind für S3 und GCS erforderlich, holen Sie sie daher im Voraus ein. Natürlich benötigt der Autor eine Schreibgenehmigung.

boto

Installieren Sie es, um boto zu verwenden.

$ pip install boto

Implementierungsbeispiel

Zum Glück kann boto sowohl in S3 als auch in GCS lesen und schreiben (GCS-bezogene Klassen werden durch Erben von S3-bezogenen Klassen implementiert). Es wird zum Lesen und Schreiben in Python verwendet.

Vorbereitung für den Schaufelbetrieb

bucket2bucket.py


from boto.gs.connection import GSConnection
from boto.s3.connection import S3Connection


gs_bucket = GSConnection(
    'GS_ACCSESS_KEY', 'GS_SECRET_ACCSESS_KEY').get_bucket('GS_BUCKET_NAME')

s3_bucket = S3Connection(
    'S3_ACCSESS_KEY', 'S3_SECRET_ACCSESS_KEY').get_bucket('S3_BUCKET_NAME')

Lesen / Schreiben mit Dateien, StringIO usw.

bucket2bucket.py


from StringIO import StringIO


def bucket2bucket(from_bucket, to_bucket, file_name):
    io = StringIO()
    try:
        from_bucket.get_key(file_name).get_file(io)
        io.seek(0)
        key = to_bucket.new_key(key_name=file_name)
        key.set_contents_from_file(io, replace=True)  #Ersetzen ermöglicht das Überschreiben
    finally:
        io.close()

Andere Argumente wie "get_file" und "set_contents_from_file" können angegeben werden. Es wird daher empfohlen, die Dokumentation zu überprüfen.

Ausführungsbeispiel

bucket2bucket.py


bucket2bucket(s3_bucket, gs_bucket, 'spam')
bucket2bucket(gs_bucket, s3_bucket, 'egg')

Auf diese Weise kann boto S3 und GCS auf dieselbe Weise verarbeiten, sodass Sie problemlos Daten miteinander austauschen können. Darüber hinaus ist "Bucket.copy_key" für das Kopieren in denselben Bucket vorbereitet. Es wird daher empfohlen, diesen zu verwenden.

Recommended Posts

Kopieren Sie Daten von Amazon S3 mit Python (boto) in Google Cloud Storage.
[GCP] Betreiben Sie Google Cloud Storage mit Python
Herstellen einer Verbindung zum Cloud Firestore über Google Cloud-Funktionen mit Python-Code
Datenintegration von der Python-App unter Linux zu Amazon Redshift mit ODBC
In Dataflow implementiert, um die hierarchische Struktur von Google Drive in Google Cloud Storage zu kopieren
Datenintegration von der Python-App unter Windows zu Amazon Redshift mit ODBC
Kopieren von Dateien direkt von Amazon EC2 (Amazon Linux) nach S3
Kopieren Sie S3-Dateien mit GSUtil von Python nach GCS
S3-Betrieb mit Python Boto3
Hochladen von Dateien in den Cloud-Speicher mit dem Python-SDK von Firebase
Abrufen von Daten aus der Analyse-API mit Google API Client für Python
[Python] Exportieren Sie regelmäßig mit Lambda aus CloudWatch-Protokollen nach S3
Greifen Sie über Python (boto) mit dem Dienstkonto und der Schlüsseldatei auf Google Cloud Storage zu (S. 12).
Verwenden von Cloud-Speicher aus Python3 (Einführung)
Verwenden Sie boto3, um zu S3 zu gelangen
Einführung in die Datenanalyse mit Python P17-P26 [ch02 1.usa.gov Daten von bit.ly]
Terminalzuordnung von der Serverseite zu Amazon SNS (Python + Boto3)
Laden Sie Dateien in den Cloud Storage (GCS) von GCP hoch. ~ Laden Sie mit lokalem Python
Empfangen Sie Textdaten von MySQL mit Python
[Hinweis] Mit Python Daten von PostgreSQL abrufen
Konvertieren Sie Excel-Daten mit Python in JSON
Versuchen Sie, Python mit Google Cloud-Funktionen zu verwenden
Verwenden Sie die Google Cloud Vision-API von Python
Erste Schritte mit Dynamo von Python Boto
Stellen Sie mit AWS Lambda Python eine Verbindung zu s3 her
[Amazon Linux] Wechsel von der Python 2-Serie zur Python 3-Serie
Betreiben Sie den Cloud-Objektspeicher von Sakura von Python aus
S3 serverseitige Verschlüsselung SSE mit Python boto3
Laden Sie Bilder mit Python auf Google Drive hoch
[Data Science-Grundlagen] Ich habe versucht, mit Python von CSV auf MySQL zu speichern
Umgang mit OAuth2-Fehlern bei Verwendung von Google APIs aus Python
Umgang mit SSL-Fehlern beim Herstellen einer Verbindung zu S3 mit Python boto
CSV-Ausgabe der Google-Suche mit [Python]! 【Einfach】
Datenerfassung von der Analytics-API mit dem Google API-Client für die Python Part 2-Webanwendung
Firebase: Verwenden Sie Cloud Firestore und Cloud Storage von Python
Hinweise zum Implementieren des Schlüssels unter Amazon S3 mit Boto 3, Implementierungsbeispiel, Hinweise
[Python] Lesen von Daten aus CIFAR-10 und CIFAR-100
Ich habe versucht, CloudWatch-Daten mit Python abzurufen
[Python] Fluss vom Web-Scraping zur Datenanalyse
WEB Scraping mit Python und versuchen, aus Bewertungen eine Wortwolke zu machen
[Python] Zusammenfassung der S3-Dateivorgänge mit boto3
Exportieren Sie den RDS-Snapshot mit Lambda (Python) nach S3.
Schreiben Sie CSV-Daten mit AWS-Lambda + Python in AWS-S3
Von der Python-Umgebungskonstruktion zur virtuellen Umgebungskonstruktion mit Anaconda
Extrahieren Sie mit Python Daten von einer Webseite
Erstellen Sie eine Kopie einer Google Drive-Datei aus Python
Probieren Sie einfach Amazon EMR / Cloud Dataproc mit Python aus [mrjob]
Fügen Sie AWS-Daten mit boto + gspread in Google Spreadsheet ein
Senden Sie Protokolldaten vom Server an Splunk Cloud
Einfache Möglichkeit, mit Google Colab mit Python zu kratzen
[Python] Lokal → Verfahren zum Hochladen von Dateien in S3 (boto3)
Senden Sie Daten von Python über die Socket-Kommunikation an Processing
Eine Geschichte, die mit ein wenig Einfallsreichtum mit Google Cloud Storage verknüpft ist
Nutzung von Google Cloud Storage (GCS) durch "GAE / Py"