通过 AWS Systems Manager 在 EC2 实例上远程运行命令

教程

概述

在本实践教程中,您将学习如何通过 AWS Systems Manager 在 Amazon EC2 实例上远程运行命令。Systems Manager 是 AWS 提供的一项管理工具,可帮助您了解运营状况,并安全、大规模地对 AWS 资源进行管理。使用运行命令(Systems Manager 的自动化功能之一),您无需使用堡垒主机、SSH 或远程 PowerShell,从而简化了管理任务。

在我们的示例场景中,作为系统管理员,您需要更新 EC2 实例上的软件包。这本是一项简单的管理任务,但安全团队禁止通过 SSH 直接访问生产服务器,也不允许使用堡垒主机。好在,您可以使用 Systems Manager 在 EC2 实例上远程运行命令,例如更新软件包。

为了解决这一棘手问题,您需要创建一个 Identity and Access Management (IAM) 角色,在您的实例上启用与 Systems Manager 通信的代理 (Agent),然后按照最佳实践,运行 AWS-UpdateSSMAgent 文档来升级您的 Systems Manager Agent,最后使用 Systems Manager 在您的实例上运行命令。

AWS Systems Manager 是一款完全免费套餐产品。您在本教程中创建的 EC2 实例可通过 Free Tier 免费试用。

打开 AWS 管理控制台,以便您边操作边参考这份步骤指南。页面加载后,输入您的用户名和密码即可开始使用。

 AWS 使用经验

新手

 完成时间

10 分钟

 所需费用

可通过 Free Tier 免费试用

 前提条件

  • AWS 账户
  • 推荐浏览器:最新版本的 Chrome 或 Firefox

[**]在过去 24 小时内新创建的账户可能无法使用本教程所需的服务。

 上次更新时间

2022 年 7 月 14 日

操作步骤

步骤 1:创建 Identity and Access Management (IAM) 角色

在此步骤中,您将创建一个 IAM 角色,该角色将用于授予 Systems Manager 对您的实例执行操作的权限。

b. 在左侧导航栏中点击 Roles(角色),然后点击 Create role(创建角色)。

c. 在 Select trusted entity(选择可信实体)页面上的 AWS Service(AWS 服务)下,选择 EC2,然后点击 Next(下一步)。

d. 在 Add permissions(添加权限)页面上的搜索栏中,输入 AmazonEC2RoleforSSM。从策略列表中选择 AmazonEC2RoleforSSM,然后点击 Next(下一步)。

e. 在 Name, review, and create(命名、查看和创建)页面上的 Role name(角色名称)框中,输入 EnablesEC2ToAccessSystemsManagerRole。在 Description(描述)框中,输入 Enables an EC2 instance to access Systems Manager。点击 Create role(创建角色)。

步骤 2:创建 EC2 实例

在此步骤中,您将使用 EnablesEC2ToAccessSystemsManagerRole 角色创建 EC2 实例。这将允许 EC2 实例由 Systems Manager 进行管理。

a. 打开 Amazon EC2 控制台。在 EC2 控制台中选择您的首选区域。所有 AWS 区域都支持 Systems Manager。然后点击 Launch instance(启动实例)。

b. 在 Name(名称)字段中,输入 MyEC2Tutorial。选择 Amazon Linux AMI。保留显示在下拉列表中的默认选择。您也可以在自己的 Windows 或 Linux 系统上安装 Systems Manager Agent。

c. 选择 t2.micro 实例类型。

d. 使用 Systems Manager 远程运行命令不需要密钥对。向下滚动至 Key pair(密钥对),然后从 Key pair name(密钥对名称)下拉列表中,选择 Proceed without a key pair(继续操作但不提供密钥对)。

e. 在 Network settings(网络设置)和 Configure storage(配置存储)下,保留默认设置。

f. 在 Advanced details(高级详细信息)下的 IAM instance profile(IAM 实例配置文件)下拉列表中,选择您之前创建的 EnablesEC2ToAccessSystemsManagerRole 角色。将其他所有设置保留为默认值。点击 Launch instance(启动实例)。

步骤 3:更新 Systems Manager Agent

现在您的 EC2 实例已运行 Systems Manager Agent,可以自动执行管理任务并管理实例了。在此步骤中,您将运行预先打包的命令(称为文档)来升级代理。建议您在创建新实例时更新 Systems Manager Agent。

a. 在顶部导航栏中,搜索 Systems Manager,然后打开 Systems Manager 控制台。

b. 在左侧导航栏上的 Node Management (节点管理)部分下,点击 Fleet Manager

c. 点击在步骤 2 MyEC2Tutorial 中创建的节点 ID,以打开节点详细信息页面。

d. 在节点详细信息页面上的 Node actions(节点操作)下拉列表中,选择 Execute run command(执行运行命令)。

e. 在 Run a command(运行命令)页面上,点击搜索栏并选择 Document name prefix(文档名称前缀),点击 Equals(等于),然后输入 AWS-UpdateSSMAgent

然后,选择 AWS-UpdateSSMAgent 左侧的单选按钮。此文档将升级实例上的 Systems Management Agent。

f. 向下滚动到 Targets(目标)面板,然后选中托管 EC2 实例旁边的复选框。

最后,向下滚动,点击 Run(运行)。

g. 接下来,您将看到一个页面,记录正在运行的命令,运行结果如果成功会以绿色标识标识显示。恭喜,您刚刚使用 Systems Manager 运行了您的首个远程命令。

步骤 4:运行远程 shell 脚本

现在,您的 EC2 实例拥有最新的 Systems Manager Agent,可以升级 EC2 实例上的软件包了。在此步骤中,您将通过运行命令运行 shell 脚本。

a. 在左侧导航栏上的 Node Management (节点管理)部分下,点击 Fleet Manager

b. 点击在步骤 2 MyEC2Tutorial 中创建的节点 ID,以打开节点详细信息页面。

c. 在节点详细信息页面上的 Node actions(节点操作)下拉列表中,选择 Execute run command(执行运行命令)。

d. 在 Run a command(运行命令)页面上,点击搜索栏并选择 Document name prefix(文档名称前缀),点击 Equals(等于),然后输入 AWS-RunShellScript

然后选择 AWS-RunShellScript。

e. 向下滚动到 Command Parameters(命令参数)面板,然后在 Commands(命令)文本框中插入以下命令:

sudo yum update –y

f. 向下滚动到 Targets(目标)面板,然后选中托管 EC2 实例旁边的复选框。

最后,向下滚动,点击 Run(运行)。

g. 脚本在托管 EC2 实例上远程运行时,Overall status(总体状态)将为 In Progress(正在进行中)。很快,Overall status(总体状态)将变为 Success(成功)。变为成功后,向下滚动到 Targets and outputs(目标与输出)面板,然后点击实例的实例 ID。您的实例 ID 将与图中所示的不同。

h. 在 Output on: i-XX(输出: i-XX)页面中,选择 Output(输出)面板的标题,以查看实例中更新命令的输出。

步骤 5:终止资源

在此步骤中,您将终止 Systems Manager 和 EC2 相关资源。重要说明:终止当前未使用的资源可降低成本,这是推荐的最佳实践。如果没有终止资源,系统可能会收取费用。

a. 打开 Amazon EC2 控制台,然后从左侧导航栏中的 Instances(实例)标题下,点击 Instances(实例)。

b. 选中您的实例对应的复选框,点击 Instance state(实例状态),然后选择 Terminate instance(终止实例)。这将完全终止您的实例。

恭喜您

恭喜您,您已经成功创建了托管实例,并使用 AWS Systems Manager 远程运行了命令。首先,您通过 IAM 设置了正确的权限。接下来,您启动了预安装了 Systems Manager Agent 的 Amazon Linux 实例。最后,您使用运行命令更新了代理并远程执行了 yum 更新。

Systems Manager 适用于下列情形:监控资源组的操作数据、自动化运维操作、了解和管理资源的当前状态、管理混合环境以及确保安全性和合规性。

后续步骤

阅读客户案例

在这篇博客文章中,了解 Pegasystems 如何利用 AWS Systems Manager 在不使用 SSH 访问的情况下大规模管理实例。
下一步 »

了解 AWS Systems Manager 使用场景

访问管理工具博客,了解其他 Systems Manager 使用场景。
下一步 »

探索 AWS Systems Manager 功能

访问 Systems Manager 产品页面,了解其他功能,例如 Patch Manager(补丁管理)、Inventory(清单管理)和 Parameter Store(参数存储)。
下一步 »