Copier des données d'Amazon S3 vers Google Cloud Storage avec Python (boto)

Lorsque vous placez les données dans Amazon S3 (ci-après S3) dans Red Shift, vous pouvez facilement le faire car il s'agit du même AWS, mais lorsque vous faites la même chose avec BigQuery, c'est toujours via Google Cloud Storage (ci-après GCS) Pratique. GCS peut être rendu compatible avec S3, qui peut être utilisé pour migrer de S3 vers GCS et vice versa.

Cet article décrit comment faire cela avec Python et boto.

Alternatives à considérer

Pour les applications telles que l'exécution d'une copie sur la ligne de commande, les meilleures méthodes suivantes peuvent être utilisées.

gsutil

Habituellement, le moyen le plus simple de copier des données entre S3 et GCS est d'utiliser la commande gsutil. https://cloud.google.com/storage/docs/gsutil

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

Préparation

Accès aux opérations compatibles

Rendre GCS compatible à partir de la console de gestion GCS Activer l'accès opérationnel. (Article de référence: Télécharger sur Google Cloud Storage avec AWS CLI ou AWS SDK for PHP)

Information nécessaire

Les informations suivantes sont requises pour S3 et GCS, veuillez donc les obtenir à l'avance. Bien sûr, l'écrivain a besoin d'une autorisation en écriture.

boto

Installez-le pour utiliser boto.

$ pip install boto

Exemple d'implémentation

Heureusement, boto peut lire et écrire à la fois dans S3 et GCS (les classes liées à GCS sont implémentées en héritant des classes liées à S3). Il est utilisé pour lire et écrire sur Python.

Préparation au fonctionnement du godet

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')

Lecture / écriture à l'aide de fichiers, StringIO, etc.

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)  #remplacer permet l'écrasement
    finally:
        io.close()

D'autres arguments tels que get_file et set_contents_from_file peuvent être spécifiés, il est donc recommandé de vérifier la documentation.

Exemple d'exécution

bucket2bucket.py


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

De cette façon, boto peut gérer S3 et GCS de la même manière, vous pouvez donc facilement échanger des données entre eux. De plus, Bucket.copy_key est préparé pour la copie dans le même compartiment, il est donc recommandé de l'utiliser.

Recommended Posts

Copier des données d'Amazon S3 vers Google Cloud Storage avec Python (boto)
[GCP] Exploitez Google Cloud Storage avec Python
Comment se connecter à Cloud Firestore à partir de Google Cloud Functions avec du code Python
Intégration de données depuis l'application Python sur Linux vers Amazon Redshift avec ODBC
Implémenté dans Dataflow pour copier la structure hiérarchique de Google Drive vers Google Cloud Storage
Intégration de données depuis l'application Python sur Windows vers Amazon Redshift avec ODBC
Copie de fichiers directement d'Amazon EC2 (Amazon Linux) vers S3
Copier les fichiers S3 de Python vers GCS à l'aide de GSUtil
Opération S3 avec python boto3
Comment télécharger des fichiers sur Cloud Storage avec le SDK Python de Firebase
Obtenez des données de l'API d'analyse avec le client API Google pour python
[Python] Exportez régulièrement de CloudWatch Logs vers S3 avec Lambda
Accédez à Google Cloud Storage à partir de Python (boto) à l'aide du compte de service et du fichier de clé (p12)
Utiliser Cloud Storage depuis Python3 (Introduction)
Utilisez boto3 pour accéder à S3
Introduction à l'analyse de données par Python P17-P26 [ch02 1.usa.gov données de bit.ly]
Association de terminal du côté serveur à Amazon SNS (python + boto3)
Télécharger le fichier sur Cloud Storage (GCS) de GCP ~ Charger avec Python local
Recevoir des données textuelles de mysql avec python
[Note] Obtenir des données de PostgreSQL avec Python
Convertir des données Excel en JSON avec python
Essayez d'utiliser Python avec Google Cloud Functions
Utiliser l'API Google Cloud Vision de Python
Premiers pas avec Dynamo de Python boto
Connectez-vous à s3 avec AWS Lambda Python
[Amazon Linux] Passage de la série Python 2 à la série Python 3
Exploitez le stockage d'objets cloud de Sakura à partir de Python
Chiffrement côté serveur S3 SSE avec Python boto3
Télécharger des images sur Google Drive avec Python
[Bases de la science des données] J'ai essayé d'enregistrer de csv à mysql avec python
Comment gérer l'erreur OAuth2 lors de l'utilisation des API Google à partir de Python
Comment gérer l'erreur SSL lors de la connexion à S3 avec Python boto
Sortie CSV de la recherche Google avec [Python]! 【Facile】
Acquisition de données à partir de l'API d'analyse avec l'application Web Client API Google pour python Partie 2
Firebase: utilisez Cloud Firestore et Cloud Storage depuis Python
Comment obtenir la clé sur Amazon S3 avec Boto 3, exemple de mise en œuvre, notes
[Python] Comment lire les données de CIFAR-10 et CIFAR-100
J'ai essayé d'obtenir des données CloudWatch avec Python
[Python] Flux du scraping Web à l'analyse des données
WEB grattage avec python et essayez de créer un nuage de mots à partir des critiques
[Python] Résumé des opérations sur les fichiers S3 avec boto3
Exporter un instantané RDS vers S3 avec Lambda (Python)
Écrire des données CSV sur AWS-S3 avec AWS-Lambda + Python
De la construction d'environnement Python à la construction d'environnement virtuel avec anaconda
Extraire des données d'une page Web avec Python
Faire une copie d'un fichier Google Drive à partir de Python
Essayez facilement Amazon EMR / Cloud Dataproc avec Python [mrjob]
Mettez les données AWS dans Google Spreadsheet avec boto + gspread
Envoyer les données du journal du serveur vers Splunk Cloud
Un moyen facile de gratter avec Python en utilisant Google Colab
[Python] Local → Procédure de téléchargement de fichiers vers S3 (boto3)
Envoyer des données de Python au traitement via une communication socket
Une histoire liée à Google Cloud Storage avec un peu d'ingéniosité
Utilisation de Google Cloud Storage (GCS) par "GAE / Py"