LoginSignup
2
4

More than 3 years have passed since last update.

PythonでGoogleCloudStorageへファイルをアップロード・ダウンロードする方法

Posted at

まず最初に準備(サービスアカウント、バケット作成)

まずはこの記事を参考に以下のことをやります。
GoogleCloudStorageでPythonからファイルをやりとりする方法
- サービスアカウントの作成(API)
- クラウドストレージでバケットを作成

サービスアカウント作成時に、役割が「ストレージ管理者」になっていますが自分はそれが選べなかったので、「オーナー」にしました。
全リソースへのアクセス権限があるみたいなので迷ったらこれでいいのではないでしょうか。
Screen Shot 2019-05-24 at 21.49.45.png

PythonでGoogleCloudStorageを操作

Googleクラウドのパッケージをインストールします。

sudo pip install --upgrade google-cloud

以下のスクリプトでバケットにローカルファイルのアップロードと、バケットからのダウンロードが可能です。

import os
from google.cloud import storage
#クラウドストレージ(バケット)に接続
os.environ["GOOGLE_APPLICATION_CREDENTIALS"]='キーファイルパス(Json)'
client = storage.Client()
bucket = client.get_bucket('バケット名')

#ファイルをアップロード
blob = bucket.blob('保存ファイル名')
blob.upload_from_filename(filename='ローカルファイルパス')

#アップロードしたファイルをダウンロード
blob2 = bucket.get_blob('取得ファイル名')
print(blob2.download_as_string())

以下のエラーが出た場合(No module named 'google.api_core.client_info')

自分の場合はここで以下のエラーが出て先に進めなかったのですが、

ModuleNotFoundError: No module named 'google.api_core.client_info'

pythonの仮想環境を構築し、そこにライブラリをインストールすることで正常に動きました。
venv: Python 仮想環境管理

$ python3 -m venv venv
$ source venv/bin/activate
$ venv/bin/pip install --upgrade google-cloud
$ pip install google.cloud.storage

これらのコマンド打った後に、実行したら無事に操作できました。

次にやりたいこと

  • pythonのウェブフレームワークを使用して、簡単な文字起こしサービスを作成
  • まずはローカルからではなくwebからアップロードしたものをバケットに送れるようにする
  • Cloud Speech-to-Text を使用
  • 今回はテキストファイルを用いたが、課題は結構アップロードからダウンロードまで時間がかかったこと
  • 長い音声ファイルを場合のレスポンス。。
2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4