了解 State Manager 的運作方式 - AWS Systems Manager

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

了解 State Manager 的運作方式

State Manager是 中的工具 AWS Systems Manager,是一種安全且可擴展的服務,可將受管節點保存在混合和多雲端基礎設施中的程序,自動化為您定義的狀態。

這是 State Manager 運作方式:

1. 決定您要套用至 AWS 資源的狀態。

您是否希望保證使用特定應用程式 (例如防毒或反惡意軟體) 來設定受管節點? 您是否希望能夠將更新 SSM Agent 或其他 AWS 套件 (例如 AWSPVDriver) 的程序自動化? 您是否需要保證關閉或開啟特定的連接埠? 若要開始使用 State Manager,請判斷您要套用至 AWS 資源的狀態。您想要套用的狀態會決定您使用哪個 SSM 文件來建立 State Manager 關聯。

State Manager 關聯是您指派給 AWS 資源的組態。該組態會定義您想在資源上維持的狀態。例如,關聯可以指定必須在受管節點上安裝和執行防毒軟體,或者必須關閉特定連接埠。

關聯會指定套用組態並以關聯為目標的排程。例如,防毒軟體的關聯可能在 AWS 帳戶的所有受管節點上一天執行一次。如果節點上未安裝軟體,則關聯會指示 State Manager 來安裝。如果已安裝軟體,但並未執行服務,則關聯可能會指示 State Manager 來啟動服務。

2. 判斷預先設定的 SSM 文件是否可協助您在 AWS 資源上建立所需的狀態。

Systems Manager 包含數十個預先設定的 SSM 文件,可讓您用來建立關聯。預先設定的文件已準備好可執行常見任務,例如安裝應用程式、設定 Amazon CloudWatch、執行 AWS Systems Manager 自動化、執行 PowerShell 和 Shell 指令碼,以及將受管節點加入 Active Directory 的目錄服務網域。

Systems Manager 主控台中可檢視所有 SSM 文件。選擇文件名稱來進一步了解各項文件。以下是兩個範例:AWS-ConfigureAWSPackageAWS-InstallApplication

3. 建立關聯。

您可以使用 Systems Manager 主控台、 AWS Command Line Interface (AWS CLI)、 AWS Tools for Windows PowerShell (Tools for Windows PowerShell) 或 Systems Manager API 來建立關聯。在建立關聯時,指定下列資訊:

  • 關聯名稱。

  • SSM 文件的參數 (例如,應用程式安裝路徑或在節點上執行的指令碼)。

  • 關聯的目標。您可以透過指定標籤,選擇個別節點 ID,或是在 AWS Resource Groups中選擇群組等方式,將受管執行個體設為目標。您也可以將目前 AWS 區域 和 中的所有受管節點設為目標 AWS 帳戶。

  • 狀態套用時間或頻率的排程。您可以指定 Cron 或 Rate 運算式。如需使用 Cron 和 Rate 運算式建立排程的詳細資訊,請參閱關聯的 Cron 與 Rate 運算式

    注意

    State Manager 目前不支援在 Cron 運算式中為關聯指定月份。

當您執行命令來建立關聯時,Systems Manager 會將您指定的資訊 (排程、目標、SSM 文件和參數) 繫結至目標資源。關聯狀態一開始會顯示為「Pending」(待定),同時系統正在嘗試連接所有目標並立即套用關聯中指定的狀態。

注意

如果您新建的關聯已排定要執行,但同時仍在執行先前的關聯,則先前的關聯會逾時,並執行新的關聯。

Systems Manager 會報告在資源上建立關聯的請求狀態。您可以透過主控台或 (對於受管節點) 使用 DescribeInstanceAssociationsStatus API 操作來檢視狀態詳細資訊。如果選擇在建立關聯時將命令的輸出寫入 Amazon Simple Storage Service (Amazon S3),您也可以在指定的 Amazon S3 儲存貯體中檢視輸出。

如需詳細資訊,請參閱在 Systems Manager 中使用關聯

注意

在關聯執行期間由 SSM 文件啟動的 API 操作不會記錄在 AWS CloudTrail中。

4. 監控與更新。

在您建立關聯後,State Manager 會根據您在關聯中定義的排程重新套用組態。在主控台的 State Manager 頁面中,或在建立關聯時直接呼叫 Systems Manager 產生的關聯 ID,可檢視關聯狀態。如需詳細資訊,請參閱檢視關聯歷史記錄。您可以視需要更新關聯文件並重新套用。您也可以建立多個版本的關聯。如需詳細資訊,請參閱編輯和建立關聯的新版本

了解何時將關聯套用至資源

建立關聯時,您需要指定 SSM 文件,此文件會定義組態、目標資源清單,以及套用組態的排程。根據預設,State Manager 會在您建立關聯時執行關聯,然後依照排程執行。State Manager 也會嘗試在以下情況下執行關聯:

  • 關聯編輯 – State Manager 在使用者編輯後執行關聯,並儲存對以下任何關聯欄位的變更:DOCUMENT_VERSIONPARAMETERSSCHEDULE_EXPRESSIONOUTPUT_S3_LOCATION

  • 文件編輯 – State Manager 在使用者編輯後執行關聯,並儲存對定義關聯組態狀態的 SSM 文件的變更。具體而言,在對文件進行以下編輯後,關聯便會執行:

    • 使用者指定新的 $DEFAULT 文件版本,而關聯是使用 $DEFAULT 版本所建立。

    • 使用者更新文件,而關聯是使用 $LATEST 版本所建立。

    • 使用者會刪除建立關聯時所指定的文件。

  • 手動啟動 – 使用者從 Systems Manager 主控台或以程式設計方式啟動時,State Manager 會執行關聯。

  • 目標變更:State Manager會在目標節點上發生下列任何活動之後執行關聯:

    • 受管節點首次上線。

    • 缺少排程的關聯執行後,受管節點便會上線。

    • 受管節點會在停止超過 30 天後上線。

       

    防止在目標變更時執行關聯

    在某些情況下,您可能不希望在由受管節點組成的目標變更時執行關聯,但只會根據其指定的排程。

    注意

    執行 Automation Runbook 會產生成本。如果與 Automation Runbook 的關聯鎖定您帳戶中的所有執行個體,且您定期啟動大量執行個體,則啟動該執行個體時,該 Runbook 會在每個執行個體上執行。這可能會導致自動化費用提高。

    若要防止關聯在關聯目標變更時執行,請選取只在下一個指定的 Cron 間隔套用關聯核取方塊。此核取方塊位於建立關聯編輯關聯頁面的指定排程區域中。

    此選項適用於包含 Automation Runbook 或 SSM 文件的關聯。

關於透過 Automation 執行手冊的目標更新

為了在偵測到新目標節點時套用透過 Automation 執行手冊建立的關聯,必須滿足以下條件:

  • 關聯必須由Quick Setup組態建立。 Quick Setup是 中的工具 AWS Systems Manager。目前不支援其他程序建立的關聯。

  • Automation 執行手冊必須明確以資源類型 AWS::EC2::InstanceAWS::SSM::ManagedInstance 為目標。

  • 此關聯必須同時指定參數和目標。

    在主控台中,當您選擇速率控制執行時,便會顯示參數目標欄位。

    主控台中會顯示參數和目標選項,以進行速率控制執行

    當您使用 CreateAssociationCreateAssociationBatchUpdateAssociation API 動作時,您可以使用 AutomationTargetParameterNameTargets輸入來指定這些值。在每個 API 動作中,您也可以將 ApplyOnlyAtCronInterval 參數設定為 ,防止關聯在每次目標變更時執行true

    如需使用主控台控制關聯執行時間的相關資訊,包括避免自動化執行意外高成本的詳細資訊,請參閱 了解何時將關聯套用至資源