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.
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
Es gibt "os.system", "Befehle" und "Unterprozess", um Befehle auszuführen, es wird jedoch empfohlen, "Unterprozess" zu verwenden.
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]
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