远程运行命令
在这个亲身实践教程中,您将学会如何使用 Amazon Systems Manager 在 Amazon EC2 实例上远程运行命令。Systems Manager 是一个管理工具,让您可以获得运营见解并安全和大规模地对亚马逊云科技资源采取行动。利用运行命令(Systems Manager 的其中一个自动化功能),您无需使用堡垒主机、SSH 或远程 PowerShell,从而可简化管理任务。
在我们的示例场景中,作为系统管理员,您需要更新 Amazon EC2 实例上的软件包。为了使这个通常很简单的管理任务复杂化,您的安全团队不允许经由 SSH 或使用堡垒主机直接访问生产服务器。幸运的是,您可以使用 Systems Manager 在 Amazon EC2 实例上远程运行命令,例如更新软件包。
为了解决这个有挑战性的场景,您将创建一个 Identity and Access Management (IAM) 角色,在与 Systems Manager 通信的实例上启用一个代理,然后遵循最佳实践,运行 Amazon-UpdateSSMAgent 文档以升级您的 Systems Manager 代理,最终使用 Systems Manager 在您的实例上运行命令。
打开亚马逊云科技管理控制台,因此您可以将本分步指南保持打开状态。这个屏幕加载完成后,请输入您的用户名和密码以便开始操作。
步骤 1.创建 Identity and Access Management (IAM) 角色
在这个步骤中 ,您将创建一个 IAM 角色,它将用于为 Systems Manager 授予在实例上执行操作的权限。
a. 单击此处,打开 IAM 控制台。
(单击以放大)
b. 在左侧导航窗格中,选择 Roles(角色),然后选择 Create role(创建角色)。
(单击以放大)
c. 在 Select type of trusted entity(选择可信实体类型)页面中的 Amazon Service(亚马逊云科技服务)下面,选择 Amazon EC2,然后选择 Next: Permissions(下一步:权限)。
(单击以放大)
d. 在 Attached permissions policy(附加的权限策略)页面的搜索栏中键入 AmazonEC2RoleforSSM,然后从策略列表中选择 AmazonEC2RoleforSSM,然后选择 Next: Review(下一步:审核)。
(单击以放大)
e. 在 Review(审核)页面的 Role name(角色名称)框中,键入 EnablesEC2ToAccessSystemsManagerRole。在 Role description(角色描述)框中,键入 Enables an EC2 instance to access Systems Manager(启用 EC2 实例以访问 Systems Manager)。选择 Create role(创建角色)。
(单击以放大)
步骤 2.创建 Amazon EC2 实例
在这个步骤中,您将使用 EnablesEC2ToAccessSystemsManagerRole 角色创建一个 Amazon EC2 实例。这样就可以使用 Systems Manager 来管理 Amazon EC2 实例。
a. 打开 Amazon EC2 控制台。从 Amazon EC2 控制台中选择您首选的区域。所有亚马逊云科技区域都支持 Systems Manager。现在选择 Launch Instance(启动实例)。
(单击以放大)
b. 选择 Amazon Linux AMI。确保您选择日期为 2017.09 或以后的 Amazon Linux base AMI,它们默认包括 Systems Manager 代理。您也可以在自己的 Windows 或 Linux 系统中安装 Systems Manger 代理。
(单击以放大)
c. 在 Step 2: Choose an Instance Type(步骤 2:选择实例类型)页面选择 t2.micro 实例类型,然后单击 Next: Configure Instance Details(下一步:配置实例详情)。
(单击以放大)
d. 在 Step 3: Configure Instance Details(步骤 3:配置实例详情)页面的 IAM role(IAM 角色)下拉列表中选择您之前创建的 EnablesEC2ToAccessSystemsManagerRole 角色。让所有其他设置保留默认值。选择 Review and Launch(审核并启动)。
(单击以放大)
e. 在 Step 7: Review Instance Launch(步骤 7:审核实例启动)页面上,选择 Launch(启动)以启动您的实例。
(单击以放大)
f. 接下来系统会显示 Select an existing keypair or create a new key pair(选择现有密钥对或创建新密钥对)对话框。使用 Systems Manager 远程运行命令不需要密钥对。从 Choose an existing pair(选择现有密钥对)下拉列表中选择 Proceed without a key pair(继续而不使用密钥对),然后选中 I acknowledge that…(我确认...)复选框。
接下来选择 Launch Instance(启动实例)。
(单击以放大)
步骤 3.更新 Systems Manager 代理
您已有一个运行 Systems Manager 代理的 Amazon EC2 实例,现在您可以自动执行管理任务和管理实例。在这个步骤中,您运行被称为“文档”的预先打包命令,它将升级代理。最好在创建新实例时更新 System Manager 代理。
a. 单击顶部菜单中的 Services(服务)。然后,在 Management Tools(管理工具)下面,选择 Systems Manager 以打开 Systems Manager 控制台。
(单击以放大)
b. 在左侧导航栏的 Shared Resources(共享资源)部分,选择 Managed Instances(托管实例)。
(单击以放大)
c. 在 Managed instances(托管实例)页面的 Actions(操作)下拉列表中,选择 Run Command(运行命令)。
(单击以放大)
d. 在 Run a command(运行命令)页面,单击搜索栏并选择 Document name prefix(文档名前缀),然后单击 Equal(相等),键入 Amazon-UpdateSSMAgent。
现在单击 Amazon-UpdateSSMAgent 左侧的单选按钮。此文档将升级实例上的系统管理代理。
向下滚动到 Targets(目标)面板,单击您的托管 Amazon EC2 实例旁边的复选框。
最后,向下滚动并选择 Run(运行)。
(单击以放大)
e. 接下来您将看到记录了您的运行命令的页面,总体成功以绿色显示。恭喜,您刚刚使用 Systems Manager 运行了第一个远程命令。
(单击以放大)
步骤 4.运行远程外壳脚本
您的 Amazon EC2 实例已经有最新的 Systems Manager 代理,现在您可以升级 Amazon EC2 实例上的软件包。在这个步骤中,您将通过运行命令来运行外壳脚本。
a. 从 Systems Management(系统管理)控制台左侧导航栏的 Shared Resources(共享资源)下面,选择 Managed instances(托管资源)。然后在 Actions(操作)菜单中,选择 Run Command(运行命令)菜单项。
(单击以放大)
b. 在 Run a command(运行命令)页面,单击搜索栏并选择 Document name prefix(文档名前缀),然后单击 Equal(相等),键入 Amazon-RunShellScript。
现在单击 Amazon-RunShellScript 左侧的单选按钮。此文档将升级实例上的系统管理代理。
向下滚动到 Targets(目标)面板,单击您的托管 Amazon EC2 实例旁边的复选框。
(单击以放大)
c. 向下滚动到 Command Parameters(命令参数)面板,在 Commands(命令)文本框中插入以下命令:
sudo yum update -y
最后,向下滚动并选择 Run(运行)。
(单击以放大)
d. 当您的脚本在托管 Amazon EC2 实例上远程运行时,Overall status(总体状态)将为 In Progress(进行中)。Overall status(总体状态)很快将变为 Success(成功)。状态变化之后,向下滚动到 Targets and outputs(目标和输出)面板并单击您的实例的实例 ID。您的实例 ID 将与图片中的 ID 不同。
(单击以放大)
e. 在 Output on: i-XX(输出于:i-XX)页面上,单击 Step 1 - Output(步骤 1 - 输出)面板的标题以查看实例更新命令的输出。
(单击以放大)
步骤 5.终止资源
在这个步骤中,您将终止 Systems Manager 和 Amazon EC2 相关资源。重要事项:终止未有效使用的资源可降低成本,并且是一个最佳实践。不终止您的资源会产生费用。
a. 打开 Amazon EC2 控制台,从左侧导航栏的 Instances(实例)标题下面,选择 Instances(实例)。
(单击以放大)
b. 选择您的实例的复选框,单击 Actions(操作),单击 Instance State(实例状态),然后单击 Terminate(终止)。这将完全终止您的实例。
(单击以放大)
恭喜您!
恭喜,您已成功创建一个托管实例并使用 Amazon Systems Manager 远程运行命令。您首先通过 IAM 设置正确的权限。接下来您启动了使用 Systems Manager 代理预先安装的 Amazon Linux 实例。最后,您使用 Run Command(运行命令)来更新代理并远程执行 yum 更新。
当您需要查看资源组的运行数据、自动执行运营动作、了解和控制资源的当前状态、管理混合环境以及维护安全和合规时,Systems Manager 是一个不错的选择。