文件

將物件從 MinIO 轉移到 S3

此頁面上的程序會建立一個新的物件生命週期管理規則,該規則將物件從 MinIO 儲存桶轉換到 Amazon Web Services S3 儲存後端與 S3 相容的服務上的遠端儲存層。此程序支援在特定時間段或日曆日期之後,將物件分層到低成本或歸檔儲存等使用案例。

需求

安裝並設定 mc

此程序使用 mc 來對 MinIO 叢集執行操作。在可網路存取來源和目的地叢集的機器上安裝 mc。請參閱 mc安裝快速入門,以獲取下載和安裝 mc 的說明。

使用 mc alias set 命令為來源 MinIO 叢集建立別名。建立別名需要指定來源和目的地叢集上使用者的存取金鑰。指定的使用者必須具有設定和應用轉換操作的 權限

必要的 MinIO 權限

MinIO 需要以下針對您正在建立生命週期管理規則的儲存貯體或儲存貯體的權限。

MinIO 還需要在您正在建立物件轉換生命週期管理規則的遠端層的叢集上具有以下管理權限

例如,以下原則提供在叢集中任何儲存貯體上設定物件轉換生命週期管理規則的權限:。

{
   "Version": "2012-10-17",
   "Statement": [
      {
            "Action": [
               "admin:SetTier",
               "admin:ListTier"
            ],
            "Effect": "Allow",
            "Sid": "EnableRemoteTierManagement"
      },
      {
            "Action": [
               "s3:PutLifecycleConfiguration",
               "s3:GetLifecycleConfiguration"
            ],
            "Resource": [
                        "arn:aws:s3:::*"
            ],
            "Effect": "Allow",
            "Sid": "EnableLifecycleManagementRules"
      }
   ]
}

必要的 S3 權限

物件轉換生命週期管理規則需要在遠端儲存層上具有其他權限。具體而言,MinIO 要求遠端層認證提供遠端儲存貯體的讀取、寫入、列出和刪除權限。

例如,以下原則提供將物件轉換到遠端層和移出遠端層的必要權限

{
   "Version": "2012-10-17",
   "Statement": [
      {
            "Action": [
               "s3:ListBucket"
            ],
            "Effect": "Allow",
            "Resource": [
               "arn:aws:s3:::MyDestinationBucket"
            ],
            "Sid": ""
      },
      {
            "Action": [
               "s3:GetObject",
               "s3:PutObject",
               "s3:DeleteObject"
            ],
            "Effect": "Allow",
            "Resource": [
               "arn:aws:s3:::MyDestinationBucket/*"
            ],
            "Sid": ""
      }
   ]
}

修改 MinIO 分層物件的儲存貯體的 Resource

請參閱 Amazon S3 權限 文件,以獲取關於設定必要權限的更完整指導。

遠端儲存貯體必須存在

請在 *之前* 使用該儲存貯體作為目標來設定生命週期管理層或規則,建立遠端 S3 儲存貯體。

考量事項

生命週期管理物件掃描器

MinIO 使用 掃描器程序 來根據所有已設定的生命週期管理規則檢查物件。由於高 IO 工作負載或系統資源有限而導致的掃描速度緩慢,可能會延遲生命週期管理規則的應用。請參閱 生命週期管理物件掃描器 以取得更多資訊。

遠端資料的獨佔存取權

MinIO *需要* 對遠端儲存層上轉換的資料具有獨佔存取權。“熱” MinIO 來源上的物件中繼資料與“溫/冷”遠端層上的物件資料緊密連結。MinIO 無法在沒有存取遠端的情況下檢索物件資料,也無法使用遠端來還原來源上遺失的中繼資料。

所有對轉換物件的存取 *必須* 僅透過 MinIO 的 S3 API 操作進行。手動修改轉換的物件(無論是「熱」 MinIO 層上的中繼資料 *或* 遠端「溫/冷」層上的物件資料)都可能導致該物件資料遺失。

MinIO 會忽略遠端儲存貯體或儲存貯體前綴中未由 MinIO 部署明確管理的任何物件。自動轉換和透明的物件檢索取決於以下假設

  • 遠端儲存上沒有物件的外部變更、遷移或刪除。

  • 遠端儲存貯體上沒有生命週期管理規則(例如轉換或過期)。

MinIO 將所有轉換的物件儲存在遠端儲存貯體或資源中,且具有每個部署的唯一前綴值。此值並非旨在支援從後端識別來源部署。MinIO 在設定遠端目標時支援一個額外的可選人類可讀前綴,這可以促進與診斷、維護或災難復原相關的操作。

MinIO 建議為包含其他資料(包括來自其他 MinIO 部署的轉換物件)的遠端儲存層指定此可選前綴。本教學課程包含設定此前綴的必要語法。

遠端資料的可用性

MinIO 分層行為取決於遠端儲存立即 (毫秒到秒) 回應請求的物件。因此,MinIO *無法* 支援需要重新混合、等待時間或手動干預的遠端儲存。

MinIO 為每個轉換的物件建立中繼資料,以識別其在遠端儲存上的位置。應用程式無法輕易識別和存取獨立於 MinIO 的轉換物件。因此,轉換資料的可用性取決於 抹除編碼 和分散式部署拓撲為 MinIO 部署上的所有物件提供的相同核心保護。使用物件轉換不會提供任何額外的業務連續性或災難復原好處。

需要 BC/DR 保護的工作負載應實作 MinIO 伺服器端複寫。複寫可確保物件保留在遠端複寫站點上,以便您在發生部分或全部資料遺失時從遠端重新同步。請參閱 重新同步 (災難復原) 以獲取關於使用複寫在部分或全部資料遺失後復原的更完整文件。

程序

1) 設定生命週期管理的使用者帳戶和原則

此步驟會在 MinIO 部署上建立使用者和原則,以支援生命週期管理操作。如果部署已具有具有必要 權限 的使用者,您可以跳過此步驟。

以下範例使用 Alpha 作為 MinIO 部署的 別名 的預留位置。請將此值替換為您正在設定生命週期管理規則的 MinIO 部署的適當別名。請根據您的組織關於密碼產生的最佳實務,將密碼 LongRandomSecretKey 替換為長、隨機且安全的秘密金鑰。

wget -O - https://minio.dev.org.tw/docs/minio/linux/examples/LifecycleManagementAdmin.json | \
mc admin policy create Alpha LifecycleAdminPolicy /dev/stdin
mc admin user add Alpha alphaLifecycleAdmin LongRandomSecretKey
mc admin policy attach Alpha LifecycleAdminPolicy --user=alphaLifecycleAdmin

此範例假設指定的別名具有在部署上建立原則和使用者的必要權限。請參閱 使用者管理MinIO 基於原則的存取控制,以分別獲取關於 MinIO 使用者和原則的更完整文件。

2) 設定遠端儲存層

使用 mc ilm tier add 命令新增 Amazon S3 服務作為新的遠端儲存層

mc ilm tier add s3 TARGET TIER_NAME  \
   --endpoint https://HOSTNAME       \
   --access-key ACCESS_KEY           \
   --secret-key SECRET_KEY           \
   --bucket BUCKET                   \
   --prefix PREFIX                   \
   --storage-class STORAGE_CLASS     \
   --region REGION

以上範例使用以下引數

引數

描述

TARGET

要設定 S3 遠端層的 MinIO 部署的 別名

TIER_NAME

與新的 S3 遠端儲存層關聯的名稱。請以全大寫字母指定名稱,例如 S3_TIER。此值在下一步中是必要的。

HOSTNAME

S3 儲存後端的 URL 端點。

ACCESS_KEY

MinIO 用於存取儲存貯體的 S3 存取金鑰。存取金鑰 *必須* 對應於具有必要 權限 的 IAM 使用者。

SECRET_KEY

指定 ACCESS_KEY 的對應秘密金鑰。

BUCKET

MinIO 將物件轉換到其中的 S3 儲存後端上的儲存貯體的名稱。

PREFIX

MinIO 在其中轉換物件的可選儲存貯體前綴。

MinIO 將所有轉換的物件儲存在指定的 BUCKET 中,且具有每個部署的唯一前綴值。請省略此引數,僅使用該值在遠端儲存中隔離和組織資料。

MinIO 建議為包含其他資料(包括來自其他 MinIO 部署的轉換物件)的遠端儲存層指定此可選前綴。此前綴應提供回到來源 MinIO 部署的明確參考,以方便與診斷、維護或災難復原相關的操作。

STORAGE_CLASS

MinIO 將物件轉換到其中的 S3 儲存類別。

MinIO 分層行為取決於遠端儲存立即 (毫秒到秒) 回應請求的物件。因此,MinIO *無法* 支援需要重新混合、等待時間或手動干預的遠端儲存。

以下 S3 儲存類別符合 MinIO 作為遠端層的要求

  • STANDARD

  • STANDARD-IA

  • STANDARD-ONEZONE

請省略此值以使用儲存貯體的預設儲存類別。指定此值會覆寫儲存貯體儲存類別。

如需更多資訊,請參閱 使用 Amazon S3 儲存類別

REGION

指定 BUCKET 的 AWS S3 區域。如果 HOSTNAME 包含該區域,您可以安全地省略此選項。

3) 建立並應用轉換規則

使用 mc ilm rule add 命令為儲存貯體建立新的轉換規則。以下範例會在指定的日曆天數後設定轉換

mc ilm rule add ALIAS/BUCKET \
--transition-tier TIERNAME \
--transition-days DAYS \
--noncurrent-transition-days NONCURRENT_DAYS
--noncurrent-transition-tier TIERNAME

以上範例指定以下引數

引數

描述

ALIAS

指定您要建立生命週期管理規則的 MinIO 部署的 別名

BUCKET

指定您要建立生命週期管理規則的儲存貯體完整路徑。

階層名稱

MinIO 將物件轉換到的遠端儲存階層。指定在上一步建立的遠端儲存階層名稱。

如果您想將非當前物件版本轉換到不同的遠端階層,請為 --noncurrent-transition-tier 指定不同的階層名稱。

天數

MinIO 將物件標記為符合轉換條件的天數。請將天數指定為整數,例如 30 表示 30 天。

非當前天數

MinIO 將非當前物件版本標記為符合轉換條件的天數。MinIO 特別測量物件 *變成* 非當前版本之後的時間,而不是物件建立時間。請將天數指定為整數,例如 90 表示 90 天。

省略此值將忽略非當前物件版本。

此選項對非版本控制的儲存貯體沒有作用。

4) 驗證轉換規則

使用 mc ilm rule ls 命令來檢視已設定的轉換規則

mc ilm rule ls ALIAS/PATH --transition
  • 別名 替換為 MinIO 部署的 別名

  • 路徑 替換為要檢索已設定生命週期管理規則的儲存貯體名稱。