【やってみた】Colab EnterpriseからCloud Storageにファイル出力するPythonコードを実装する

Google Cloud

2024.6.17

Topics

はじめに

こんにちは、フクナガです。
以前、Colab EnterpriseでPythonノートブック環境を超短時間で用意するという記事を執筆しました!

関連記事
Colab EnterpriseでPythonノートブック環境を超短時間で用意する

普段からPythonで開発をするわけではないので、サクッと環境を用意できて色々試せるのは非常に便利です。その中で、成果物(csv)を伴うPythonコードを書く機会が出てきました。
どうやって成果物をダウンロードするのか困りましたが、「Cloud Storageに出力すれば早いのでは?」と思ったので実装してみました!!

Colab Enterpriseとは

Colab Enterpriseは、マネージドでノートブック環境を利用できるGoogle Cloudのサービスです。
詳細は、下記の記事にまとめてあります!
Colab EnterpriseでPythonノートブック環境を超短時間で用意する

やってみた

1. Cloud Storageバケットを作成する

(1) Cloud Storageコンソールへ遷移


(2) 「作成」ボタンを押下

(3) 下記パラメーターを選択し、「作成」を押下

バケット名:任意の値
データの保存場所の選択:
①ロケーション:asia-northeast1
②ロケーションタイプ:Region
※コストを安く抑えるため

もし、下記の画面が表示されたらすべてのチェックボックスにチェックを入れて、「確認」を押下します

(4) バケットが作成されたことを確認

2. Colab Enterpriseノートブック環境を用意する

(1) 事前準備として、Colab Enterpriseでノートブックを作成・実行可能な環境を用意する

下記の記事通り実装することで、5~10分程度でノートブック環境を用意することが可能です。
Colab EnterpriseでPythonノートブック環境を超短時間で用意する

(2) Colab Enterpriseコンソールの「ファイル」の隣にある「+」ボタンを押下

(3) 新規で作成したノートブックをわかりやすい名前にリネームする

3. Cloud Storageへのアップロードを実施する

(1) Cloud Storageバケットにアップロードするための関数を定義する

Google Cloud公式ドキュメントにサンプルコードがありましたので、そちらを使います。

from google.cloud import storage


def upload_blob(bucket_name, source_file_name, destination_blob_name):
    """Uploads a file to the bucket."""
    # The ID of your GCS bucket
    # bucket_name = "your-bucket-name"
    # The path to your file to upload
    # source_file_name = "local/path/to/file"
    # The ID of your GCS object
    # destination_blob_name = "storage-object-name"

    storage_client = storage.Client()
    bucket = storage_client.bucket(bucket_name)
    blob = bucket.blob(destination_blob_name)

    # Optional: set a generation-match precondition to avoid potential race conditions
    # and data corruptions. The request to upload is aborted if the object's
    # generation number does not match your precondition. For a destination
    # object that does not yet exist, set the if_generation_match precondition to 0.
    # If the destination object already exists in your bucket, set instead a
    # generation-match precondition using its generation number.
    generation_match_precondition = 0

    blob.upload_from_filename(source_file_name, if_generation_match=generation_match_precondition)

    print(
        f"File {source_file_name} uploaded to {destination_blob_name}."
    )

出典:オブジェクトをアップロードする

(2) 関数を定義したセルを実行する

※ランタイムを作成していない場合、テンプレートから自動で作成されますので少々お待ちください。
実行が問題なく完了したことを確認し、次のステップへ進む

(3) 次のコードセルに、ファイル作成・アップロード用のコードを入力する

ファイルを出力できるかどうかがポイントなので、「テキストファイルの作成」「アップロード」のみにしています。


with open('example.txt', 'w') as file:
    file.write('This is new Text.\n')

upload_blob('fukunaga-sample-bucket-colab-enterprise', 'example.txt', 'example.txt')

(4) 作成したコードセルを実行する


実行が完了すると下記画像のようになります。

(5) ファイルがアップロードできたか、Cloud Storageを確認する

作成したCloud Storageバケットを確認すると、今回アップロードしたテキストファイルがありました!!
※もし表示されていない場合は、右側の「更新」ボタンをお試しください

中身も想定通りでした!

後片付け

今回も忘れずに、Colab Enterprise用に立ち上げたランタイムは削除しておきましょう!
※やり方が分からない方は、こちらで手順を確認

Cloud Storageについても、削除しておきましょう。

まとめ

今回は、Colab Enterprise環境で作成したファイルをCloud Storageにアップロードする部分を検証しました。
かなり短時間に環境用意ができたので、簡単な分析用Pythonスクリプトを作り、ファイルをCloud Storageで出力するときは、非常に便利だなと思います。
サクッと実装できますので、ぜひ実装してみてください!!

テックブログ新着情報のほか、AWSやGoogle Cloudに関するお役立ち情報を配信中!

フクナガ

インフラエンジニア歴5年のフクナガです。2024 Japan AWS Top Engineers選出されました! AWS(特にAmazon BedrockとAWS CodePipeline)とGoogle Cloud(Vertex AI)が得意分野です。休日はベースを弾いてます。

Recommends

こちらもおすすめ

Special Topics

注目記事はこちら