LoginSignup
0
0

More than 1 year has passed since last update.

Next&Django Rest FrameworkでS3上のデフォルト画像を表示する

Posted at

IAMの作成

  • プログラムによるアクセスにチェック
  • AmazonS3FullAccessのポリシーを割り当てる
  • svg形式で発行される、アクセスキーとシークレットアクセスきーが後のDjangoの設定で必要になる

S3の作成

バケットの作成

  • デフォルトでは、パブリックアクセスすべてブロックになっているので、チェックを外す。

バケットポリシーの設定をする(バケットを選択し、アクセス許可項目にある)

スクリーンショット 2022-07-26 11.57.46.png

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "任意",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::バケット名/*"
        }
    ]
}

Djangoでの設定

pip install boto3 django-storages
import environ

env = environ.Env()
env.read_env(os.path.join(BASE_DIR, '.env'))

# Django-Storage
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'

# AWS-Settings
AWS_ACCESS_KEY_ID = env('AWS_ACCESS_KEY_ID')
AWS_SECRET_ACCESS_KEY = env('AWS_SECRET_ACCESS_KEY')
AWS_STORAGE_BUCKET_NAME = env('AWS_STORAGE_BUCKET_NAME')
AWS_LOCATION = 'static'  # s3バケット上のベースとなるファイルパス

# STATIC-Files
AWS_S3_CUSTOM_DOMAIN = '%s.s3.amazonaws.com' % AWS_STORAGE_BUCKET_NAME
STATIC_URL = 'https://%s/%s/' % (AWS_S3_CUSTOM_DOMAIN, AWS_LOCATION)
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static'),
]
python manage.py collectstatic

散らばった画像や、jsを集約

参考文献

0
0
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
0
0