安装或更新软件包 - Amazon Systems Manager
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

安装或更新软件包

您可以使用 Amazon Systems Manager 的功能 Distributor 将软件包部署到您的 Amazon Systems Manager 托管式节点。要部署软件包,请使用 Amazon Web Services Management Console 或 Amazon Command Line Interface (Amazon CLI)。一条命令只能部署一个软件包的一个版本。您可以安装新软件包或就地更新现有的安装。您可以选择部署软件包的特定版本,也可以选择始终部署软件包的最新版本。我们建议使用 Amazon Systems Manager 的功能 State Manager 来安装软件包。使用 State Manager 有助于确保您的托管式节点始终运行最新版本的软件包。

Preference Amazon Systems Manager 操作 更多信息

立即安装或更新软件包。

Run Command

按计划安装或更新软件包,以便安装始终包含默认版本。

State Manager

在具有特定标签或标签集的新托管式节点上自动安装软件包。例如,在新实例上安装 Amazon CloudWatch 代理。

State Manager

执行此操作的一种方法是向新托管式节点应用标签,然后在 State Manager 关联中将这些标签指定为目标。State Manager 会自动将关联中的软件包安装到具有匹配标签的托管式节点上。请参阅 关于 State Manager 关联中的目标和速率控制

一次性安装或更新软件包(控制台)

您可以使用 Amazon Systems Manager 控制台一次性安装或更新软件包。在配置一次性安装时,Distributor 将使用 Amazon Systems Manager 的功能 Amazon Systems Manager Run Command 来执行安装。

一次性安装或更新软件包(控制台)

  1. 访问 https://console.aws.amazon.com/systems-manager/,打开 Amazon Systems Manager 控制台。

  2. 在导航窗格中,选择 Distributor

  3. 在 Distributor 主页上,选择要安装的软件包。

  4. 选择 Install one time (一次性安装)

    此命令将打开 Run Command,并选中命令文档 AWS-ConfigureAWSPackage 和 Distributor 软件包。

  5. 对于 Document version (文档版本),请选择要运行的 AWS-ConfigureAWSPackage 文档版本。

  6. 对于操作,选择安装

  7. 对于 Installation type (安装类型),请选择以下选项之一:

    • Uninstall and reinstall (卸载并重新安装):完全卸载软件包,然后重新安装。在重新安装完成之前,应用程序不可用。

    • In-place update (就地更新):根据您在 update 脚本中提供的指令,仅将新文件或更改的文件添加到现有安装中。应用程序在整个更新过程中保持可用。对于 Amazon 已发布软件包,除 AWSEC2Launch-Agent 软件包外,不支持此选项。

  8. 对于 Name (名称),请确认输入了选定的软件包的名称。

  9. (可选)对于 Version (版本),请输入软件包的版本名称值。如果将此字段留空,Run Command 将安装在 Distributor 中选择的默认版本。

  10. Targets(目标)部分中,通过指定标签、手动选择实例或设备或指定资源组,选择要在其上运行此操作的托管式节点。

    注意

    如果列表没有显示托管式节点,请参阅 排除托管式节点可用性的问题

  11. 对于 Other parameters (其他参数)

    • 对于 Comment (注释),请输入有关此命令的信息。

    • 对于 Timeout (seconds) (超时 (秒)),请指定在整个命令执行失败之前系统等待的秒数。

  12. 对于 Rate Control(速率控制):

    • 对于 Concurrency(并发),请指定要同时运行该命令的目标数或百分比。

      注意

      如果您通过指定标签或资源组来选择目标,但不确定有多少个托管式节点已被设为目标,则可通过指定百分比来限制可同时运行该文档的目标的数量。

    • 对于 Error threshold(错误阈值),请指定当命令在一定数量或百分比的托管式节点上失败后,何时在其他目标上停止运行该命令。例如,如果您指定三个错误,Systems Manager 将在收到第四个错误时停止发送该命令。仍在处理该命令的托管式节点也可能发送错误。

  13. (可选)对于 输出选项,要将命令输出保存到文件,请选中 将命令输出写入 S3 存储桶 框。在输入框中输入存储桶和前缀(文件夹)名称。

    注意

    授予将数据写入 S3 存储桶的能力的 S3 权限,是分配给实例的实例配置文件(适用于 EC2 实例)或 IAM 服务角色(本地计算机)的权限,而不是执行此任务的 IAM 用户的权限。有关更多信息,请参阅为 Systems Manager 创建 IAM 实例配置文件为混合环境创建 IAM 服务角色。此外,如果指定的 S3 存储桶位于不同的 Amazon Web Services 账户 中,请确保与该托管式节点关联的实例配置文件或 IAM 服务角色具有写入该存储桶的所需权限。

  14. SNS 通知部分,如果需要发送有关命令执行状态的通知,请选中 Enable SNS notifications (启用 SNS 通知)复选框。

    有关为 Run Command 配置 Amazon SNS 通知的更多信息,请参阅 使用 Amazon SNS 通知监控 Systems Manager 状态更改

  15. 在准备好安装软件包时,请选择 Run (运行)

  16. Command status (命令状态) 区域报告执行进度。如果命令仍在执行,请选择控制台左上角的刷新图标,直到 Overall status (总体状态)Detailed status (详细状态) 列显示 Success (成功)Failed (失败)

  17. Targets and outputs(目标和输出)区域中,选择托管式节点名称旁边的按钮,然后选择 View output(查看输出)。

    命令输出页面将显示命令执行的结果。

  18. (可选)如果您选择将命令输出写入到 Amazon S3 存储桶,请选择 Amazon S3 以查看输出日志数据。

计划安装或更新软件包(控制台)

您可以使用 Amazon Systems Manager 控制台计划安装或更新软件包。在计划安装或更新软件包时,Distributor 使用 Amazon Systems Manager State Manager 进行安装或更新。

计划软件包安装(控制台)

  1. 访问 https://console.aws.amazon.com/systems-manager/,打开 Amazon Systems Manager 控制台。

  2. 在导航窗格中,选择 Distributor

  3. 在 Distributor 主页上,选择要安装或更新的软件包。

  4. 对于 Package (软件包),请选择 Install on a schedule (按计划安装)

    此命令将打开 State Manager 并跳转到为您创建的新关联。

  5. 对于 Name (名称),请输入名称(例如,Deploy-test-agent-package)。您可以自由选择,但我们建议您这样做。名称不得包含空格。

  6. Document (文档) 列表中,已选定文档名称 AWS-ConfigureAWSPackage

  7. 对于 Action (操作),请确认选择了 Install (安装)

  8. 对于 Installation type (安装类型),请选择以下选项之一:

    • Uninstall and reinstall (卸载并重新安装):完全卸载软件包,然后重新安装。在重新安装完成之前,应用程序不可用。

    • In-place update (就地更新):根据您在 update 脚本中提供的指令,仅将新文件或更改的文件添加到现有安装中。应用程序在整个更新过程中保持可用。

  9. 对于 Name (名称),请确认输入了软件包的名称。

  10. 对于 Version (版本),如果要安装最新发布的版本以外的软件包版本,请输入版本标识符。

  11. 对于 Targets (目标),选择 Selecting all managed instances in this account (选择此账户中的所有托管实例)Specifying tags (指定标签)Manually Selecting Instance (手动选择实例)。如果使用标签将资源设置为目标,请在提供的字段中输入标签键和标签值。

    注意

    您可以通过选择 Selecting all managed instances in this account(选择此账户中的所有托管式实例)或 Manually Selecting Instance(手动选择实例)来选择托管式 Amazon IoT Greengrass 核心设备。

  12. 对于 Specify schedule (指定计划),选择 On Schedule (按计划) 定期运行此关联,或选择 No Schedule (无计划) 只运行此关联一次。有关这些选项的详细信息,请参阅 创建关联。使用控件为关联创建 cron 或频率计划。

  13. 选择创建关联

  14. Association (关联) 页面上,选择您创建的关联旁边的按钮,然后选择 Apply association now (立即应用关联)

    State Manager 在指定的目标中创建并立即运行关联。有关运行关联的结果的更多信息,请参阅本指南中的 创建关联

有关使用 Advanced options (高级选项)Rate control (速率控制)Output options (输出选项) 中的选项的更多信息,请参阅 创建关联

一次性安装软件包 (Amazon CLI)

您可以在 Amazon CLI 中运行 send-command 一次性安装 Distributor 软件包。如果已安装软件包,在卸载软件包并在其位置安装新版本时,应用程序将脱机。

一次性安装软件包 (Amazon CLI)

  • 在 Amazon CLI 中运行以下命令。

    aws ssm send-command \ --document-name "AWS-ConfigureAWSPackage" \ --instance-ids "instance-IDs" \ --parameters '{"action":["Install"],"installationType":["Uninstall and reinstall"],"name":["package-name (in same account) or package-ARN (shared from different account)"]}'
    注意

    installationType 的默认行为是 Uninstall and reinstall。在安装完整软件包时,您可以从该命令中省略 "installationType":["Uninstall and reinstall"]

    以下是示例。

    aws ssm send-command \ --document-name "AWS-ConfigureAWSPackage" \ --instance-ids "i-00000000000000" \ --parameters '{"action":["Install"],"installationType":["Uninstall and reinstall"],"name":["ExamplePackage"]}'

有关可以与 send-command 命令结合使用的其他选项的信息,请参阅 Amazon CLI 命令参考 Amazon Systems Manager 一节中的 send-command

一次性更新软件包 (Amazon CLI)

您可以在 Amazon CLI 中运行 send-command 以更新 Distributor 软件包,而无需将关联的应用程序脱机。仅替换软件包中的新文件或更新的文件。

一次性更新软件包 (Amazon CLI)

  • 在 Amazon CLI 中运行以下命令。

    aws ssm send-command \ --document-name "AWS-ConfigureAWSPackage" \ --instance-ids "instance-IDs" \ --parameters '{"action":["Install"],"installationType":["In-place update"],"name":["package-name (in same account) or package-ARN (shared from different account)"]}'
    注意

    在添加新文件或更改的文件时,您必须在命令中包含 "installationType":["In-place update"]

    以下是示例。

    aws ssm send-command \ --document-name "AWS-ConfigureAWSPackage" \ --instance-ids "i-02573cafcfEXAMPLE" \ --parameters '{"action":["Install"],"installationType":["In-place update"],"name":["ExamplePackage"]}'

有关可以与 send-command 命令结合使用的其他选项的信息,请参阅 Amazon CLI 命令参考 Amazon Systems Manager 一节中的 send-command

计划安装软件包 (Amazon CLI)

您可以在 Amazon CLI 中运行 create-association 按计划安装 Distributor 软件包。--name的值(文档名称)始终为 AWS-ConfigureAWSPackage。以下命令使用键 InstanceIds 指定目标托管式节点。如果已安装软件包,在卸载软件包并在其位置安装新版本时,应用程序将脱机。

aws ssm create-association \ --name "AWS-ConfigureAWSPackage" \ --parameters '{"action":["Install"],"installationType":["Uninstall and reinstall"],"name":["package-name (in same account) or package-ARN (shared from different account)"]}' \ --targets [{\"Key\":\"InstanceIds\",\"Values\":[\"instance-ID1\",\"instance-ID2\"]}]
注意

installationType 的默认行为是 Uninstall and reinstall。在安装完整软件包时,您可以从该命令中省略 "installationType":["Uninstall and reinstall"]

以下是示例。

aws ssm create-association \ --name "AWS-ConfigureAWSPackage" \ --parameters '{"action":["Install"],"installationType":["Uninstall and reinstall"],"name":["Test-ConfigureAWSPackage"]}' \ --targets [{\"Key\":\"InstanceIds\",\"Values\":[\"i-02573cafcfEXAMPLE\",\"i-0471e04240EXAMPLE\"]}]

有关可以与 create-association 命令结合使用的其他选项的信息,请参阅 Amazon CLI 命令参考 Amazon Systems Manager 一节中的 create-association

计划更新软件包 (Amazon CLI)

您可以在 Amazon CLI 中运行 create-association 以按计划更新 Distributor 软件包,而无需将关联的应用程序脱机。仅替换软件包中的新文件或更新的文件。--name的值(文档名称)始终为 AWS-ConfigureAWSPackage。以下命令使用键 InstanceIds 指定目标实例。

aws ssm create-association \ --name "AWS-ConfigureAWSPackage" \ --parameters '{"action":["Install"],"installationType":["In-place update"],"name":["package-name (in same account) or package-ARN (shared from different account)"]}' \ --targets [{\"Key\":\"InstanceIds\",\"Values\":[\"instance-ID1\",\"instance-ID2\"]}]
注意

在添加新文件或更改的文件时,您必须在命令中包含 "installationType":["In-place update"]

以下是示例。

aws ssm create-association \ --name "AWS-ConfigureAWSPackage" \ --parameters '{"action":["Install"],"installationType":["In-place update"],"name":["Test-ConfigureAWSPackage"]}' \ --targets [{\"Key\":\"InstanceIds\",\"Values\":[\"i-02573cafcfEXAMPLE\",\"i-0471e04240EXAMPLE\"]}]

有关可以与 create-association 命令结合使用的其他选项的信息,请参阅 Amazon CLI 命令参考 Amazon Systems Manager 一节中的 create-association