自動化 AMI 生命週期 - Amazon Elastic Compute Cloud

自動化 AMI 生命週期

下列程序說明如何使用 Amazon Data Lifecycle Manager 來自動化 EBS 支援的 AMI 生命週期。

建立 AMI 生命週期政策

使用下列其中一個程序來建立 AMI 生命週期政策。

Console

建立 AMI 政策

  1. https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

  2. 在導覽窗格中,選擇 Elastic Block StoreLifecycle Manager (生命週期管理員),然後選擇 Create lifecycle policy (建立生命週期政策)

  3. Select policy type (選取政策類型) 畫面中,選擇 EBS-backed AMI policy (EBS 支援的 AMI 政策),然後選擇 Next (下一步)。

  4. Target resources (目標資源) 區段中,對於 Target resource tags (目標資源標籤),選擇可識別要備份之磁碟區或執行個體的資源標籤。政策只會備份具有指定標籤金鑰/值對的資源。

  5. 對於 Description (描述),輸入政策的簡短描述。

  6. 對於 IAM role (IAM 角色),選擇擁有許可能夠管理 AMI 和快照並能夠描述執行個體的 IAM 角色。若要使用 Amazon Data Lifecycle Manager 提供的預設角色,請選擇 Default role (預設角色)。或者,若要使用您先前建立的自訂 IAM 角色,請選擇 Choose another role (選擇另一個角色),然後選取要使用的角色。

  7. 對於 Policy tags (政策標籤),新增標籤以套用至生命週期政策。可以使用這些標籤來識別和分類您的政策。

  8. 對於 Policy status after creation (建立後的政策狀態),選擇 Enable policy (啟用政策) 以在下一個排程時間開始政策執行,或選擇 Disable policy (停用政策) 以防止政策執行。如果您現在不啟用政策,它將不會開始建立 AMI,直到您在建立後手動啟用它。

  9. Instance reboot (重新啟動執行個體) 區段中,指出是否應在建立 AMI 之前重新啟動執行個體。若要防止目標執行個體重新啟動,請選擇 No (否)。選擇 NO (否) 可能會導致資料一致性問題。若要在建立 AMI 之前重新啟動執行個體,請選擇 Yes (是)。選擇此選項可確保資料一致性,但可能導致多個目標執行個體同時重新啟動。

  10. 選擇 Next (下一步)。

  11. Configure schedule (設定排程) 畫面中,設定政策排程。一個政策最多有四個排程。排程 1 是強制性的。排程 2、3 和 4 是選擇性的。針對新增的每個政策排程,執行下列動作:

    1. Schedule details (排程詳細資訊) 區段中,執行下列動作:

      1. 對於 Schedule name (排程名稱),指定排程的描述性名稱。

      2. 對於 Frequency (頻率) 和相關欄位,設定政策執行之間的間隔。您可以根據每日、每週、每月或每年排程設定政策執行。或者,選擇 Custom cron expression (自訂 cron 運算式) 來指定最長一年的間隔。如需詳細資訊,請參閱《Amazon CloudWatch Events 使用者指南》中的 Cron 表達式

      3. 對於 Starting at (開始時間),指定開始政策執行的時間。第一個政策執行在您排程的時間之後的一小時內開始。必須輸入 hh:mm UTC 格式的時間。

      4. 對於 Retention type (保留類型),指定由排程建立之 AMI 的保留政策。您可以根據 AMI 的總計數或存留期來保留 AMI。

        對於以計數為基礎的保留,範圍為 11000。到達計數上限之後,在新的 AMI 建立時,將刪除最舊的 AMI。

        對於以存留期為基礎的保留,範圍為 1 天到 100 年。每個 AMI 的保留期間過期後,就會遭到刪除。

        注意

        所有排程都必須具有相同的保留類型。您只能指定排程 1 的保留類型。排程 2、3 和 4 會繼承排程 1 的保留類型。每個排程都可以有自己的保留計數或期間。

    2. Tagging (標記) 區段中,執行下列動作:

      1. 若要將使用者定義的所有標籤從來源執行個體複製到由排程建立的 AMI,請選取 Copy tags from source (從來源中複製標籤)。

      2. 依預設,使用來源執行個體的 ID 自動標記由排程建立的 AMI。為了防止發生這種自動標記,對於 Variable tags (變數標籤),移除 instance-id:$(instance-id) 圖標。

      3. 若要指定其他標籤以指派給此排程所建立的 AMI,請選擇 Add tags (新增標籤)。

    3. 若要在不再使用時取代 AMI,請在 AMI deprecation (AMI 取代) 區段中選取 Enable AMI deprecation for this schedule (啟用此排程的 AMI 取代),然後指定 AMI 取代規則。AMI 取代規則會指定何時取代 AMI。

      如果排程使用基於計數的 AMI 保留,您必須指定要取代的最早的 AMI 數量。取代計數必須小於或等於排程的 AMI 保留計數,且不得大於 1000。例如,如果排程設定為保留最多 5 個 AMI,則您可以將排程設定為取代最多 5 個最早的 AMI。

      如果排程使用基於存在時間的 AMI 保留,您必須指定取代 AMI 的期限。取代計數必須小於或等於排程的 AMI 保留期,且不得大於 10 年 (120 個月、520 週或 3650 天)。例如,如果排程設定為保留 AMI 10 天,則您可以將排程設定為在建立後最長 10 天的期限後取代 AMI。

    4. 若要將排程建立的 AMI 複製到不同區域,請在 Cross-Region copy (跨區域複製) 區段中,選取 Enable cross-Region copy (啟用跨區域複製)。您最多可以將 AMI 複製到帳戶中的最多三個額外區域。您必須為每個目的地區域指定單獨的跨區域複製規則。

      針對每個目標區域,您可以指定下列項目:

      • AMI 複本的保留政策。保留期到期時,會自動取消註冊目標區域中的複本。

      • AMI 複本的加密狀態。如果來源 AMI 已加密,或者如果預設已啟用加密,則會始終加密複本的 AMI。如果來源 AMI 未加密,且預設為停用加密,則您也可以選擇啟用加密。如果您並未指定 KMS 金鑰,則會使用每個目的地區域中 EBS 加密的預設 KMS 金鑰 來加密 AMI。如果您為目的地區域指定 KMS 金鑰,則選取的 IAM 角色必須具有 KMS 金鑰 的存取權。

      • AMI 複本的取代規則。當取代期到期時,會自動取代 AMI 複本。取代期必須小於或等於複本保留期,且不得超過 10 年。

      • 是從來源 AMI 複製所有標籤,還是不複製任何標籤。

      注意

      不能超過每個區域的並行 AMI 複本數目。

    5. 若要新增其他排程,請選擇位於畫面頂部的 Add another schedule (新增另一個排程)。對於每個額外排程,如本主題先前所述填寫欄位。

    6. 新增必要的排程後,選擇 Review policy (檢閱政策)。

  12. 檢閱政策摘要,然後選擇 Create policy (建立政策)。

Command line

使用 create-lifecycle-policy 命令建立 AMI 生命週期政策。在 PolicyType,請指定 IMAGE_MANAGEMENT

注意

為了簡化語法,下列範例會使用包含政策詳細資訊的 JSON 檔案 (policyDetails.json)。

範例 1:基於存在時間的保留和 AMI 取代

此範例會建立 AMI 生命週期政策,該政策會針對標籤索引鍵為 purpose 且值為 production 的所有執行個體建立 AMI,而不會重新啟動目標執行個體。此政策包含的排程會在每天 01:00 UTC 建立 AMI。該政策會保留 AMI 2 天,並在 1 天後取代它們。它也會將標籤從來源執行個體複製到其建立的 AMI。

aws dlm create-lifecycle-policy \ --description "My AMI policy" \ --state ENABLED --execution-role-arn arn:aws:iam::12345678910:role/AWSDataLifecycleManagerDefaultRoleForAMIManagement \ --policy-details file://policyDetails.json

以下是 policyDetails.json 檔案的範例。

{ "PolicyType": "IMAGE_MANAGEMENT", "ResourceTypes": [ "INSTANCE" ], "TargetTags": [{ "Key": "purpose", "Value": "production" }], "Schedules": [{ "Name": "DailyAMIs", "TagsToAdd": [{ "Key": "type", "Value": "myDailyAMI" }], "CreateRule": { "Interval": 24, "IntervalUnit": "HOURS", "Times": [ "01:00" ] }, RetainRule":{ "Interval" : 2, "IntervalUnit" : "DAYS" }, DeprecateRule": { "Interval" : 1, "IntervalUnit" : "DAYS" }, "CopyTags": true } ], "Parameters" : { "NoReboot":true } }

如果請求成功,命令會回傳新建立之政策的 ID。下列為範例輸出。

{ "PolicyId": "policy-9876543210abcdef0" }

範例 2:基於計數的保留和跨區域複製的 AMI 取代

此範例會建立 AMI 生命週期政策,該政策會針對標籤索引鍵為 purpose 且值為 production 的所有執行個體建立 AMI,並重新啟動目標執行個體。此政策包含的一個排程會在 17:30 UTC 起每 6 小時建立 AMI 一次。該政策保留 3 個 AMI 並自動取代 2 個最早的 AMI。它也有一個跨區域複製規則,可將 AMI 複製到 us-east-1,保留 2 個 AMI 複本,並自動取代最早的 AMI。

aws dlm create-lifecycle-policy \ --description "My AMI policy" \ --state ENABLED \ --execution-role-arn arn:aws:iam::12345678910:role/AWSDataLifecycleManagerDefaultRoleForAMIManagement \ --policy-details file://policyDetails.json

以下是 policyDetails.json 檔案的範例。

{ "PolicyType": "IMAGE_MANAGEMENT", "ResourceTypes" : [ "INSTANCE" ], "TargetTags": [{ "Key":"purpose", "Value":"production" }], "Parameters" : { "NoReboot": true }, "Schedules" : [{ "Name" : "Schedule1", "CopyTags": true, "CreateRule" : { "Interval": 6, "IntervalUnit": "HOURS", "Times" : ["17:30"] }, "RetainRule":{ "Count" : 3 }, "DeprecateRule":{ "Count" : 2 }, "CrossRegionCopyRules": [{ "TargetRegion": "us-east-1", "Encrypted": true, "RetainRule":{ "IntervalUnit": "DAYS", "Interval": 2 }, "DeprecateRule":{ "IntervalUnit": "DAYS", "Interval": 1 }, "CopyTags": true }] }] }

AMI 生命週期政策的注意事項

建立 AMI 生命週期政策時有下列注意事項:

  • 第一個 AMI 建立作業會在指定的開始時間後一小時內開始。後續 AMI 建立作業會在其排定時間的一小時內開始。

  • 當 Amazon Data Lifecycle Manager 取消註冊 AMI 時,將會自動刪除其備份快照。

  • 目標資源標籤區分大小寫。

  • 您可以建立多個政策來備份執行個體。例如,若執行個體有兩個標籤,其中標籤 A 是政策 A 每 12 小時建立 AMI 的目標,而標籤 B 是政策 B 每 24 小時建立 AMI 的目標,則 Amazon Data Lifecycle Manager 會根據這兩個政策的排程來建立 AMI。或者,您可以建立具有多個排程的單一政策,以達到相同的結果。例如,您可以建立僅以標籤 A 為目標的單一政策,並指定兩個排程:每 12 小時一個排程,以及每 24 小時一個排程。

  • 在建立政策後連接至目標執行個體的新磁碟區會在下次政策執行時自動包含在備份中。在政策執行時連接至執行個體的所有磁碟區會包含在內。

  • 如果您建立具有自訂 cron 型排程的政策 (其設定為僅建立一個 AMI),則當達到保留閾值時,政策不會自動取消註冊該 AMI。不再需要的 AMI 須手動取消註冊。

下列注意事項適用於終止政策所鎖定的執行個體:

  • 如果您終止由具有以計數為基礎之保留排程的政策所鎖定的執行個體,則此政策將不再管理先前從終止執行個體所建立的 AMI。不再需要的較早期的 AMI 須手動取消註冊。

  • 如果您終止由具有以存留期為基礎的保留政策所鎖定的執行個體,則此政策會根據已定義排程繼續取消註冊之前從終止執行個體建立的 AMI,直至但不包括最後一個 AMI。不再需要的最後一個 AMI 須手動取消註冊。

AMI 政策和 AMI 取代有下列注意事項:

  • 如果您針對具有基於計數的保留的排程,增加 AMI 取代計數,則該變更會套用至該排程所建立的所有 AMI (現有和新的)。

  • 如果您針對具有基於存在時間的保留的排程增加 AMI 取代期限,則變更僅套用於新 AMI。現有 AMI 不會受到影響。

  • 如果您從排程中移除 AMI 取代規則,Amazon Data Lifecycle Manager 將不會取消該排程先前已取代的 AMI 取代。

  • 如果您減少排程的 AMI 取代計數或期限,Amazon Data Lifecycle Manager 將不會取消該排程先前已取代的 AMI 取代。

  • 如果您手動取代由 AMI 政策建立的 AMI,Amazon Data Lifecycle Manager 將不會覆寫取代操作。

  • 如果您手動取消之前由 AMI 政策取代的 AMI,Amazon Data Lifecycle Manager 將不會覆寫取消操作。

  • 如果 AMI 是由多個衝突的排程建立的,且其中一個或多個排程沒有 AMI 取代規則,Amazon Data Lifecycle Manager 將不會取代該 AMI。

  • 如果 AMI 是由多個衝突的排程建立,且其中所有排程都有 AMI 取代規則,Amazon Data Lifecycle Manager 將不會使用導致最新取代日期的取代規則。

以下考量適用於處於錯誤狀態的 AMI 生命週期政策:

  • 對於具有以存留期為基礎之保留排程的政策,則在政策處於 error 狀態時設定為過期的 AMI 將無限期保留。您必須手動取消註冊 AMI。當您重新啟用政策時,Amazon Data Lifecycle Manager 會在其保留期間過期後繼續取消註冊 AMI。

  • 對於具有以計數型保留排程的政策,該政策會在處於 error 狀態時停止建立和取消註冊 AMI。當您重新啟用政策時,Amazon Data Lifecycle Manager 會繼續建立 AMI,並在達到保留閾值時繼續取消註冊 AMI。

其他資源

如需詳細資訊,請參閱 Automating Amazon EBS snapshot and AMI management using Amazon Data Lifecycle Manager (使用 Amazon Data Lifecycle Manager 自動化 Amazon EBS 快照和 AMI 管理) AWS 儲存部落格。