將物件從 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 無法在無法存取遠端的情況下擷取物件資料,遠端也無法用於還原來源上遺失的中繼資料。
所有對轉換物件的存取都*必須*僅透過 S3 API 操作透過 MinIO 進行。手動修改已轉換的物件(無論是「熱」MinIO 層上的中繼資料,*或*遠端「溫/冷」層上的物件資料)都可能導致該物件資料遺失。
MinIO 會忽略遠端儲存桶或儲存桶前綴中任何未明確由 MinIO 部署管理的物件。自動轉換和透明的物件擷取取決於下列假設
遠端儲存上的物件沒有外部修改、遷移或刪除。
遠端儲存桶上沒有生命週期管理規則(例如轉換或到期)。
MinIO 將所有已轉換的物件儲存在遠端儲存桶或資源中,並使用每個部署的唯一前綴值。此值不旨在支援從後端識別來源部署。MinIO 在設定遠端目標時支援其他可選的人工可讀前綴,這有助於診斷、維護或災害復原相關的操作。
MinIO 建議為包含其他資料(包括來自其他 MinIO 部署的已轉換物件)的遠端儲存層指定此可選前綴。本教學課程包含設定此前綴的必要語法。
遠端資料的可用性
MinIO 分層行為取決於遠端儲存在請求後立即(幾毫秒到幾秒)傳回物件。因此,MinIO *無法*支援需要重新水合、等待期或人工干預的遠端儲存。
MinIO 會為每個轉換的物件建立中繼資料,以識別其在遠端儲存上的位置。應用程式無法獨立於 MinIO 輕鬆識別和存取已轉換的物件。因此,已轉換資料的可用性取決於 抹除編碼 和分散式部署拓撲為 MinIO 部署上的所有物件提供的相同核心保護。使用物件轉換不會提供任何額外的業務持續性或災害復原優勢。
需要 BC/DR 保護的工作負載應實作 MinIO 伺服器端複寫。複寫可確保物件保留在遠端複寫站點上,以便在發生部分或全部資料遺失時,您可以從遠端重新同步。如需關於使用複寫在部分或全部資料遺失後復原的更完整文件,請參閱重新同步(災害復原)。
程序
1) 設定用於生命週期管理的使用者帳戶和原則
此步驟會在 MinIO 部署上建立使用者和原則,以支援生命週期管理操作。如果部署已經有具有必要權限的使用者,您可以跳過此步驟。
以下範例使用 Alpha
作為 MinIO 部署的佔位符alias
。將此值替換為您正在設定生命週期管理規則的 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
上面的範例使用下列引數
引數 |
描述 |
---|---|
要在其上設定 S3 遠端層的 MinIO 部署的 |
|
與新的 S3 遠端儲存層關聯的名稱。以全部大寫字母指定名稱,例如 |
|
S3 儲存後端的 URL 端點。 |
|
MinIO 用於存取儲存桶的 S3 存取金鑰。存取金鑰 *必須*對應於具有必要權限的 IAM 使用者。 |
|
指定 |
|
MinIO 將物件轉換到的 S3 儲存後端上的儲存桶名稱。 |
|
MinIO 將物件轉換到的可選儲存桶前綴。 MinIO 將所有已轉換的物件儲存在指定 MinIO 建議為包含其他資料(包括來自其他 MinIO 部署的已轉換物件)的遠端儲存層指定此可選前綴。此前綴應提供返回來源 MinIO 部署的清晰參考,以方便進行與診斷、維護或災害復原相關的操作。 |
|
MinIO 將物件轉換到的 S3 儲存類別。 MinIO 分層行為取決於遠端儲存在請求後立即(幾毫秒到幾秒)傳回物件。因此,MinIO *無法*支援需要重新水合、等待期或人工干預的遠端儲存。 以下 S3 儲存類別符合 MinIO 作為遠端層的要求
省略此值以使用儲存桶的預設儲存類別。指定此值會覆寫儲存桶儲存類別。 如需更多資訊,請參閱使用 Amazon S3 儲存類別。 |
|
指定 |
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
以上範例指定了以下參數
引數 |
描述 |
---|---|
指定您要為其建立生命週期管理規則的 MinIO 部署的 |
|
指定您要為其建立生命週期管理規則的儲存桶的完整路徑。 |
|
MinIO 將物件轉換到的遠端儲存層。指定在上一步中建立的遠端儲存層名稱。 如果您想將非當前物件版本轉換到不同的遠端層,請為 |
|
MinIO 將物件標記為符合轉換資格的日曆天數。將天數指定為整數,例如 |
|
MinIO 將非當前物件版本標記為符合轉換資格的日曆天數。MinIO 特別測量物件變成非當前版本之後的時間,而不是物件建立時間。將天數指定為整數,例如 省略此值會忽略非當前物件版本。 此選項對未版本化的儲存桶沒有影響。 |
4) 驗證轉換規則
使用 mc ilm rule ls
命令來檢視已設定的轉換規則
mc ilm rule ls ALIAS/PATH --transition