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`.
et
commandes` 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]
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
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]