Lors du transfert de données de s3 vers Google Cloud Storage à l'aide de Python, j'ai déjà écrit les deux méthodes suivantes, mais si vous utilisez gsutil, vous pouvez copier directement de s3 vers Google Cloud Storage sans passer par votre propre serveur. C'est pratique parce que vous pouvez le faire.
Reportez-vous à la Documentation et créez un fichier de configuration à lire lorsque GSUtil est exécuté. Au minimum, vous avez besoin de [Credentials] et [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
Il y a ʻos.system, commandes et sous-processus pour exécuter des commandes, mais il est recommandé d'utiliser sous-processus`.
etcommandes` sont obsolètesos.system
Le module de sous-processus fournit des fonctionnalités plus puissantes pour exécuter de nouveaux processus et obtenir des résultats. Il est recommandé d'utiliser le module de sous-processus au lieu de cette fonction. [^ 1]
commands
Obsolète dans la version 2.6: le module de commandes a été supprimé dans Python 3.0. Utilisez plutôt le module de sous-processus. [^ 2]
subprocessimport 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
Le point est la spécification de BOTO_PATH. Normalement, gsutil est exécuté en regardant le fichier de configuration appelé .boto dans le répertoire de base par défaut, mais si vous spécifiez les variables d'environnement BOTO_PATH et BOTO_CONFIG, il ira au fichier spécifié ici.
Puisque subprocess.Popen peut spécifier une variable d'environnement dans l'argument ʻenv, spécifiez'BOTO_PATH 'dans la clé de dict et mettez le chemin du fichier de configuration dans la valeur. Lors de la spécification de ʻenv, toutes les variables d'environnement nécessaires doivent être données, donc "PATH" est également spécifié.
Si vous donnez> env comme valeur spécifique, vous devez donner toutes les variables nécessaires pour exécuter le programme. Pour effectuer un assemblage côte à côte sous Windows, env doit inclure le SystemRoot correct. [^ 3]