演練:使用 AWS CLI 自動更新 SSM Agent - AWS Systems Manager

演練:使用 AWS CLI 自動更新 SSM Agent

下列程序會逐步解說如何使用 AWS Command Line Interface 建立 State Manager 關聯。關聯會根據您指定的排程自動更新 SSM Agent。如需有關 SSM Agent 的詳細資訊,請參閱「使用 SSM Agent」。若要使用主控台自訂 SSM Agent 的更新排程,請參閱 自動更新 SSM Agent

若要接收有關 SSM Agent 更新的通知,請訂閱 GitHub 上的 SSM Agent 版本備註頁面。

開始之前

在您完成以下程序前,請先驗證您至少有一個已為 Systems Manager 設定的 Linux、macOS 或 Windows Server 的 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體在執行中。如需詳細資訊,請參閱設定 AWS Systems Manager 的受管節點

如果您使用 AWS CLI 或 AWS Tools for Windows PowerShell 建立關聯,請使用 --Targets 參數來鎖定目標執行個體,如以下範例所示。請勿使用 --InstanceID 參數。--InstanceID 參數是舊參數。

建立自動更新 SSM Agent的關聯
  1. 如果您尚未安裝並設定 AWS Command Line Interface (AWS CLI),請進行相應的操作。

    如需相關資訊,請參閱安裝或更新最新版本的 AWS CLI

  2. 執行以下命令,透過使用 Amazon Elastic Compute Cloud (Amazon EC2) 標籤將執行個體設為目標,從而建立關聯。將每個範例資源預留位置取代為您自己的資訊。Schedule (排程) 參數排定在每週日上午 2:00 執行關聯。(UTC)。

    State Manager 關聯不支援所有 Cron 和 Rate 表達式。如需針對關聯建立 Cron 和 Rate 運算式的詳細資訊,請參閱參考:Systems Manager 的 Cron 和 Rate 運算式

    Linux & macOS
    aws ssm create-association \ --targets Key=tag:tag_key,Values=tag_value \ --name AWS-UpdateSSMAgent \ --schedule-expression "cron(0 2 ? * SUN *)"
    Windows
    aws ssm create-association ^ --targets Key=tag:tag_key,Values=tag_value ^ --name AWS-UpdateSSMAgent ^ --schedule-expression "cron(0 2 ? * SUN *)"

    您可以使用逗號分隔清單來指定執行個體 ID,從而將多個執行個體設為目標。

    Linux & macOS
    aws ssm create-association \ --targets Key=instanceids,Values=instance_ID,instance_ID,instance_ID \ --name AWS-UpdateSSMAgent \ --schedule-expression "cron(0 2 ? * SUN *)"
    Windows
    aws ssm create-association ^ --targets Key=instanceids,Values=instance_ID,instance_ID,instance_ID ^ --name AWS-UpdateSSMAgent ^ --schedule-expression "cron(0 2 ? * SUN *)"

    您可以指定您想要更新到的 SSM Agent 版本。

    Linux & macOS
    aws ssm create-association \ --targets Key=instanceids,Values=instance_ID,instance_ID,instance_ID \ --name AWS-UpdateSSMAgent \ --schedule-expression "cron(0 2 ? * SUN *)" \ --parameters version=ssm_agent_version_number
    Windows
    aws ssm create-association ^ --targets Key=instanceids,Values=instance_ID,instance_ID,instance_ID ^ --name AWS-UpdateSSMAgent ^ --schedule-expression "cron(0 2 ? * SUN *)" ^ --parameters version=ssm_agent_version_number

    系統會傳回相關資訊,如下所示。

    {
        "AssociationDescription": {
            "ScheduleExpression": "cron(0 2 ? * SUN *)",
            "Name": "AWS-UpdateSSMAgent",
            "Overview": {
                "Status": "Pending",
                "DetailedStatus": "Creating"
            },
            "AssociationId": "123..............",
            "DocumentVersion": "$DEFAULT",
            "LastUpdateAssociationDate": 1504034257.98,
            "Date": 1504034257.98,
            "AssociationVersion": "1",
            "Targets": [
                {
                    "Values": [
                        "TagValue"
                    ],
                    "Key": "tag:TagKey"
                }
            ]
        }
    }

    系統會嘗試在執行個體上建立關聯,並在建立後套用狀態。關聯狀態會顯示為 Pending (待定)。

  3. 執行以下命令來檢視您建立的關聯的更新狀態。

    aws ssm list-associations

    如果執行個體執行的「不是」最新版 SSM Agent,則狀態會顯示為 Failed。新版 SSM Agent發佈時,關聯會自動安裝新的代理程式,此時狀態會顯示為 Success (成功)。