【django】ImageFieldの使い方【GCS編】

前回、開発環境でのImageFieldの設定方法をご紹介しました。

今回はGCPGoogleCloudStorage、通称GCSにアップロードする方法をご紹介します。

目次

django-strageのインストール

Google Cloud Stragedjangoで扱うためのライブラリをインストールします。

$ pip install django-storages google-cloud-storage

Google Cloud Storage — django-storages 1.11.1 documentation

GCSにパケットを作成

GoogleCloudPlatform内での作業になります。手順は

  1. GCPにプロジェクトを作成
  2. サービスアカウントを作成し、GCSを扱うための適切な権限を与える
  3. サービスアカウントの認証キーのダウンロード
  4. GCSにバケットを作成

となります。

①GCPにプロジェクトを作成

※プロジェクト作成済みの方は飛ばしてください

https://console.cloud.google.com/からプロジェクトを作成します。

②サービスアカウントの作成

「APIとサービス」を選択し、認証情報を作成します。

サービスアカウントを選択。

サービスアカウント名を入力します。

GCSのアクセス権限を付与します。

  1. ストレージ管理者
  2. ストレージ作成者
  3. ストレージ閲覧者

をそれぞれ付与しました。

③サービスアカウントの認証キーのダウンロード

サービスアカウント作成後、認証のためのカギをダウンロードします。
※この鍵は非常に大事なものなので、保管方法に気を付けてください。

④バケットの作成

Cloud Storageからバケットを作成します。

設定はバケット名、ロケーションを入力、後はお好みで設定してください。

バケットが作成出来たら完了です。

settings.pyの設定

INSTALLED_APPS'storages'を追記します。

INSTALLED_APPS = [
    ・・・,
    'storages'
]

それぞれ記入していきます。

  • STATICFILES_STORAGE
  • STATIC_URL

をGCSに置かない場合は記載しなければ大丈夫です。また、MEDIAファイルはGCSに置かれます。

# Google Cloud Storage

from google.oauth2 import service_account
GS_CREDENTIALS = service_account.Credentials.from_service_account_file(
    'secrets.json' #サービスアカウントからダウンロードした鍵
)
DEFAULT_FILE_STORAGE = 'storages.backends.gcloud.GoogleCloudStorage'
STATICFILES_STORAGE = 'storages.backends.gcloud.GoogleCloudStorage'
GS_BUCKET_NAME = 'xxxxxxxxx'
GS_PROJECT_ID = 'xxxxxxxx'
STATIC_URL = 'https://storage.googleapis.com/bucket_name/'

最後に、管理画面から画像をアップロードしてバケットを確認してあればOKです!

参考記事

Django学習におすすめの教材

Django 記事一覧

Django

初期設定
モデルの作成(models.py)
デプロイ

Django REST framework

設定
Serializer

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!

コメント

コメントする

目次
閉じる