django-storages 基本配置:讓應用程式連接 S3 存儲桶

更新日期: 2024 年 12 月 18 日

AWS S3 是一個高效的雲端儲存解決方案,廣泛用於存放圖片、影片、靜態資源以及備份檔案等。

當你在使用 django-storages 時,需要先完成 AWS S3 基本的配置,這包括生成訪問密鑰、設置存儲桶名稱及區域,並生成一個存取域名。

本篇文章將逐步解析 AWS S3 配置中的核心參數,幫助新手快速了解如何設置 S3 與應用程式的連接。


django-storages 基本參數配置

以下是需要在程式中設置的基本參數,通常用於 Django 或其他後端框架的設定檔(如 settings.py):

AWS_ACCESS_KEY_ID = '你的AWS Access Key ID'  
AWS_SECRET_ACCESS_KEY = '你的AWS Secret Access Key'  
AWS_STORAGE_BUCKET_NAME = 'my-django-bucket'  
AWS_S3_REGION_NAME = 'ap-northeast-1'  # 東京區域,可根據實際需求調整  
AWS_S3_CUSTOM_DOMAIN = f'{AWS_STORAGE_BUCKET_NAME}.s3.amazonaws.com'  

參數詳解

AWS_ACCESS_KEY_ID 和 AWS_SECRET_ACCESS_KEY

  • 作用:這兩個值是應用程式連接 AWS 的身份憑據,用於授權請求(例如上傳文件到 S3)。
  • 如何獲取
    • 這些密鑰需要在 AWS 管理控制台的 IAM 服務中生成。
    • 在創建用戶時,AWS 會提供 Access Key IDSecret Access Key,並允許你下載密鑰文件。
  • 安全性建議
    • 請將密鑰存放在安全位置,並避免直接將密鑰硬編碼在程式中。
    • 使用環境變數或 .env 文件管理密鑰更為安全。

AWS_STORAGE_BUCKET_NAME

  • 作用:指定你使用的 S3 存儲桶名稱(Bucket Name)。
  • 如何設置
    • 登入 AWS 管理控制台,進入 S3 服務頁面,創建一個新的存儲桶,並記下其名稱。
    • 存儲桶名稱必須是全球唯一的,通常包含小寫字母、數字及連字符。
  • 範例
    • 如果你創建的存儲桶名稱是 my-django-bucket,則將其設置為: AWS_STORAGE_BUCKET_NAME = 'my-django-bucket'

AWS_S3_REGION_NAME

  • 作用:定義 S3 存儲桶所在的區域(Region)。
  • 如何獲取
    • 在 S3 服務中,找到你的存儲桶,進入「屬性 (Properties)」頁籤,可以查看其區域名稱。
  • 常見區域代碼
    • 東京:ap-northeast-1
    • 美國東部(弗吉尼亞北部):us-east-1
    • 歐洲(愛爾蘭):eu-west-1
    • 依據你的存儲桶實際位置修改此參數。

AWS_S3_CUSTOM_DOMAIN

  • 作用:生成一個基於 S3 的公共域名,用於訪問存儲桶內的文件。
  • 格式
    • 預設域名格式為: <存儲桶名稱>.s3.amazonaws.com
    • 假設你的存儲桶名稱是 my-django-bucket,則域名為: AWS_S3_CUSTOM_DOMAIN = 'my-django-bucket.s3.amazonaws.com'
  • 應用場景
    • 配置 Django 的靜態和媒體文件,使其可以通過 S3 直接訪問。

如何開始使用這些參數?

步驟 1:生成憑證

  • 登入 AWS 管理控制台,使用 IAM 創建用戶,並生成訪問密鑰。
  • 保存 Access Key IDSecret Access Key,用於配置程式連接 AWS S3。

步驟 2:創建存儲桶

  • 在 AWS S3 服務中創建一個存儲桶,設置全球唯一的名稱,並記錄其區域代碼。

步驟 3:配置程式

  • 在應用程式的設定檔(如 Django 的 settings.py)中,使用上述參數完成配置,確保應用能夠正確連接到 S3。

安全建議與最佳實踐

  1. 使用環境變數管理憑證
    • 將憑證存放在環境變數中,而不是直接硬編碼在程式碼中。
    • 例如:

設置環境變數(Linux/macOS):

export AWS_ACCESS_KEY_ID='你的 Access Key ID'
export AWS_SECRET_ACCESS_KEY='你的 Secret Access Key'

在程式中讀取環境變數

import os

AWS_ACCESS_KEY_ID = os.getenv('AWS_ACCESS_KEY_ID')
AWS_SECRET_ACCESS_KEY = os.getenv('AWS_SECRET_ACCESS_KEY')
  1. 限制存取權限
    • 在 IAM 中為用戶分配最小權限(例如只允許訪問特定存儲桶)。
  2. 啟用 HTTPS 加密傳輸
    • 確保所有 S3 請求都通過 HTTPS 傳輸,保護數據安全。

結論

完成上述配置後,你的應用程式應該可以成功連接到 AWS S3,並使用存儲桶進行文件的上傳和管理。

  • AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY 用於身份驗證。
  • AWS_STORAGE_BUCKET_NAMEAWS_S3_REGION_NAME 指定了存儲桶的位置和區域。
  • AWS_S3_CUSTOM_DOMAIN 簡化了文件訪問的域名配置。

Similar Posts