[GO] Kopieren Sie S3-Dateien mit GSUtil von Python nach GCS

Beim Verschieben von Daten von s3 in Google Cloud Storage mit Python habe ich zuvor die folgenden zwei Methoden geschrieben. Wenn Sie jedoch "gsutil" verwenden, können Sie direkt von s3 in Google Cloud Storage kopieren, ohne Ihren eigenen Server zu durchlaufen. Es ist praktisch, weil Sie es tun können.

gsutil Konfigurationsdatei

Lesen Sie Dokumentation und erstellen Sie eine Konfigurationsdatei, die beim Ausführen von GSUtil gelesen werden soll. Sie benötigen mindestens [Anmeldeinformationen] und [GS Util].

[Credentials]
gs_service_key_file = /path.to/sample-KEYFILE.p12
gs_service_client_id = [email protected]
aws_access_key_id = AXXXXXXXXXXXXXXXXXXX
aws_secret_access_key = sampleawssecretaccesskey1234

[Boto]
https_validate_certificates = True

[GSUtil]
content_language = ja
default_api_version = 2
default_project_id = sampleproject-994

Führen Sie Befehle aus Python aus

Es gibt "os.system", "Befehle" und "Unterprozess", um Befehle auszuführen, es wird jedoch empfohlen, "Unterprozess" zu verwenden.

"os.system" und "Befehle" sind veraltet

os.system

Das Unterprozessmodul bietet leistungsfähigere Funktionen zum Ausführen neuer Prozesse und zum Abrufen von Ergebnissen. Es wird empfohlen, anstelle dieser Funktion das Unterprozessmodul zu verwenden. [^ 1]

commands

In Version 2.6 veraltet: Das Befehlsmodul wurde in Python 3.0 entfernt. Verwenden Sie stattdessen das Unterprozessmodul. [^ 2]

Verwenden Sie subprocess

import os
import subprocess
import shlex

BOTO_PATH = '/path.to/boto.ini'

cmd = 'gsutil cp s3://bucket/name gs://bucket/name'

popen = subprocess.Popen(
    shlex.split(cmd),
    stdout=subprocess.PIPE,
    env={'BOTO_PATH': BOTO_PATH, 'PATH': os.getenv('PATH')})

output = popen.communicate()[0]

print output

Der Punkt ist die Spezifikation von BOTO_PATH. Normalerweise wird "gsutil" ausgeführt, indem standardmäßig die Einstellungsdatei ".boto" im Ausgangsverzeichnis angezeigt wird. Wenn Sie jedoch die Umgebungsvariablen "BOTO_PATH" und "BOTO_CONFIG" angeben, wird die dort angegebene Datei aufgerufen.

Da "subprocess.Popen" eine Umgebungsvariable im Argument "env" angeben kann, geben Sie "BOTO_PATH" im Schlüssel von dict an und geben Sie den Pfad der Einstellungsdatei in den Wert ein. Wenn Sie "env" angeben, müssen Sie alle erforderlichen Umgebungsvariablen angeben, damit Sie auch "PATH" angeben.

Wenn Sie> env als bestimmten Wert angeben, müssen Sie alle Variablen angeben, die zum Ausführen des Programms erforderlich sind. Um unter Windows eine Side-by-Side-Assembly ausführen zu können, muss env den richtigen SystemRoot enthalten. [^ 3]

Recommended Posts

Kopieren Sie S3-Dateien mit GSUtil von Python nach GCS
Kopieren von Dateien direkt von Amazon EC2 (Amazon Linux) nach S3
Kopieren Sie mit Python rekursiv Dateien aus dem Verzeichnis direkt unter dem Verzeichnis
Von Python bis zur Verwendung von MeCab (und CaboCha)
Speichern Sie BigQuery-Tabellen mithilfe von Python in GCS
Kopieren Sie Daten von Amazon S3 mit Python (boto) in Google Cloud Storage.
Ich möchte mit Python eine E-Mail von Google Mail senden.
Änderungen von Python 3.0 zu Python 3.5
Änderungen von Python 2 zu Python 3.0
PUSH-Benachrichtigung von Python an Android mithilfe der Google-API
[Python] Lokal → Verfahren zum Hochladen von Dateien in S3 (boto3)
MessagePack-Aufruf von Ruby to Python-Methoden (oder Python to Ruby-Methoden) mithilfe von RPC
So laden Sie Dateien von Selenium of Python in Chrome herunter
Holen Sie sich Dateien von Linux mit paramiko und scp [Python]
Abfrage von Python an Amazon Athena (unter Verwendung des benannten Profils)
Mit Python abflachen
Post von Python nach Slack
[S3] CRUD mit S3 unter Verwendung von Python [Python]
Flirte von PHP nach Python
Anaconda aktualisiert von 4.2.0 auf 4.3.0 (python3.5 aktualisiert auf python3.6)
Starten Sie mit Python zu Selen
Wechseln Sie von Python2.7 zu Python3.6 (centos7)
Stellen Sie von Python aus eine Verbindung zu SQLite her
Konvertieren Sie mit Python für .NET von Pandas DataFrame in System.Data.DataTable
Erlauben Sie Python, die Zeichenfolge der Eingabedatei aus dem Ordner auszuwählen
[Python] Exportieren Sie regelmäßig mit Lambda aus CloudWatch-Protokollen nach S3
Rufen Sie Matlab von Python zur Optimierung auf
So installieren Sie Python mit Anaconda
Hinweise zur Verwendung von MeCab aus Python
Post von Python auf Facebook Timeline
So erhalten Sie mithilfe der Mastodon-API Follower und Follower von Python
[Lambda] [Python] Von Lambda auf Twitter posten!
[Python] Kopierskript zum Generieren eines Kopierprotokolls
Stellen Sie von Python aus eine Verbindung zur utf8mb4-Datenbank her
Python (vom ersten Mal bis zur Ausführung)
So greifen Sie über Python auf Wikipedia zu
Python, um von einer anderen Sprache zu wechseln
Führen Sie Ansible über Python mithilfe der API aus
Vorsichtsmaßnahmen bei der Verwendung von Phantomjs aus Python
Greifen Sie mit OAuth 2.0 von Python aus auf Tabellenkalkulationen zu
Versuchen Sie es mit Amazon DynamoDB von Python
Extrahieren Sie mit Python Zeichenfolgen aus Dateien
Hat sich nicht von Python 2 auf 3 geändert
Aktualisieren Sie Mac Python von 2 auf 3
Von der Vorbereitung der morphologischen Analyse mit Python unter Verwendung von Polyglot bis zur Teilwortmarkierung
Umgang mit OAuth2-Fehlern bei Verwendung von Google APIs aus Python
Erstellen Sie mit Mecab aus Python3 ein Tool, das Furigana automatisch mit HTML schüttelt
Versuchen Sie es mit Pythons Webframework Django (1) - Von der Installation bis zum Serverstart
So erhalten Sie den Wert aus dem Parameterspeicher in Lambda (mit Python)
[AWS] Verwenden von INI-Dateien mit Lambda [Python]
[Python] Fluidsimulation: Von linear zu nichtlinear
Speichern Sie Dateien mit EC2-Speicher ohne S3
Spielen Sie eine Audiodatei von Python mit Interrupt ab
Einführung in die diskrete Ereignissimulation mit Python # 1
So aktualisieren Sie Google Sheets von Python
PUT gzip direkt in S3 in Python
Privates Python-Handbuch (von Zeit zu Zeit aktualisiert)
Konvertieren Sie von Katakana zu Vokal Kana [Python]
Push-Benachrichtigung vom Python-Server an Android