[GO] Utiliser Cloud Storage depuis Python3 (Introduction)

introduction

Qu'est-ce que BytesIO

BytesIO est une fonction de gestion des données binaires en mémoire et est incluse dans la bibliothèque standard de Python io. Les données binaires se réfèrent principalement à des données telles que des images et des sons. (C'est comme MemoryStream en C #)

Créer un compte de service

Accédez à Google Cloud Platform et créez un compte de service (API). Cliquez sur Menu de navigation> API et services> Informations d'identification pour accéder à l'écran. Cliquez ensuite sur Gérer les comptes de service. GCP.png

Sur l'écran suivant, cliquez sur Créer un compte de service. GCP.png Entrez les détails du compte de service pour chaque article.

Éléments de réglage Réglages
Nom du compte de service (Définir sur n'importe quel nom)
Description du compte de service (Paramètres facultatifs pour chaque projet pour faciliter la compréhension)

Cliquez sur Créer lorsque vous avez terminé. スクリーンショット 2020-10-31 20.24.32.png L'élément suivant créera un rôle pour Cloud Storage. Puisqu'il s'agit d'un test, j'ai choisi Storage Administrator (pleine autorité). Changeons le rôle en fonction de l'application utilisée. スクリーンショット 2020-10-31 20.25.59.png

Vous pouvez omettre le dernier élément. Cliquez sur le compte de service que vous avez créé, cliquez sur Ajouter une clé dans le champ Clés et sélectionnez Créer une nouvelle clé. スクリーンショット 2020-10-31 20.00.44.png

GCp.png

Sélectionnez JSON comme type de clé et "créez-le". Étant donné que le fichier JSON est téléchargé dans le stockage local, utilisez le fichier JSON dans l'élément suivant et utilisez Cloud Storage à partir de Python.

Exploitez Cloud Storage à partir de Python

Installer la bibliothèque Python

Nous installerons les bibliothèques requises pour ce projet dans l'ordre. Tout d'abord, pour accéder à Cloud Storage, installez la bibliothèque Google Cloud Storage avec pip install.

pip install google-cloud-storage

Pillow sera également installé pour enregistrer dans un fichier localement à l'aide de Pillow via BytesIO.

pip install requests pillow

Pour ceux qui veulent essayer les fichiers Excel, etc., installez openpyxl

pip install openpyxl

Préparer des buckets sur Cloud Storage

Accédez à Google Cloud Storage à partir de l'interface graphique, créez un bucket et préparez un fichier image approprié. Depuis l'écran de la console, accédez au menu de navigation> Stockage cloud. Cette fois, j'ai téléchargé le fichier du logo Python et l'ai enregistré sous le nom image.png. Fichier logo Python スクリーンショット 2020-10-31 20.53.02.png

Accédez à Cloud Storage depuis Python et obtenez des images

Nous accéderons à Cloud Storage en utilisant la clé d'utilisateur d'accès créée au début. Tout d'abord, vous devez charger la clé de l'utilisateur d'accès. Je décrirai comment faire référence aux deux types d'accès.

#Lors de l'accès à l'aide de variables d'environnement
import os
os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = '{Entrez le chemin où se trouve le fichier json}'
client= storage.Client()

#Lors de l'accès direct au fichier json.
client = storage.Client.from_service_account_json('{Entrez le chemin où se trouve le fichier json}')

Il s'agit du code Python qui récupère le fichier image enregistré dans Google Cloud Storage (GCS) et enregistre le fichier localement. Comme l'explication du programme, obtenez le compartiment dans lequel vous souhaitez enregistrer le fichier et l'instance blob du nom du fichier de sauvegarde. Puisque les données binaires de l'image sont incluses, elles seront lues par Pillow via BytesIO, et tout fichier image sera écrit. Vous pouvez également télécharger le fichier directement depuis GCS en utilisant blob.download_to_filename , mais cette fois GCS Les données sont transmises à la bibliothèque PIL, etc. en supposant que les fichiers supprimés de ce qui précède seront modifiés. </ font> </ strong>

from google.cloud import storage
from PIL import Image
import io

#Créer une instance client de Google Cloud Storage
#client = storage.Client()
client = storage.Client.from_service_account_json('●●●●●●●●●●.json')
#Obtenir une instance d'un bucket
bucket = client.bucket('{Nom du bucket créé avec n'importe quel nom}')

#Obtenir une instance blob d'un fichier
blob = bucket.blob('image.png')
img = Image.open(io.BytesIO(blob.download_as_string()))
img.save('sample.png')

Accédez à Cloud Storage depuis Python et obtenez un fichier Excel

Obtenez le fichier Excel sur GCS, lisez les données Blob avec openpyxl via BytesIO et enregistrez-le. Vous pouvez également télécharger le fichier directement depuis GCS en utilisant blob.download_to_filename , mais cette fois GCS Les données sont transmises à la bibliothèque PIL, etc. en supposant que les fichiers supprimés de ce qui précède seront modifiés. </ font> </ strong>

from google.cloud import storage
import openpyxl
import io

#Créer une instance client de Google Cloud Storage
client = storage.Client.from_service_account_json('●●●●●●●●●●.json')
#Obtenir une instance d'un bucket
bucket = client.bucket('{Nom du bucket créé avec n'importe quel nom}')

##Obtenir une instance blob d'un fichier
blob = bucket.blob('test.xlsx')
buffer = io.BytesIO()
blob.download_to_file(buffer)
wb = openpyxl.load_workbook(buffer)
wb.save('./retest.xlsx')

Articles que j'ai utilisés comme référence

Recommended Posts