Amazon Elastic Compute Cloud
Windows 实例用户指南
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

教程:远程管理您的 Amazon EC2 实例

本教程介绍如何从您的本地计算机使用 Systems Manager Run Command 远程管理 Amazon EC2 实例。本教程包含使用 Amazon EC2 控制台、适用于 Windows PowerShell 的 AWS 工具 和 AWS Command Line Interface 执行命令的过程。

注意

借助 Run Command,您还可以在本地环境或其他云提供商提供的环境中管理您的服务器和虚拟机 (VM)。有关更多信息,请参阅在混合环境中设置 Systems Manager

开始前的准备工作

您必须为 Systems Manager 配置 AWS Identity and Access Management (IAM) 实例配置文件。将 AmazonEC2RoleforSSM 角色附加到 Amazon EC2 实例。借助该角色,实例能够与 Systems Manager API 通信。有关如何将角色附加到现有实例的更多信息,请参阅将 IAM 角色连接到实例

您还必须为 Systems Manager 配置您的 IAM 用户账户,如下一节中所述。

向您的用户账户授予对 Systems Manager 的访问权限

必须对您的用户账户进行配置,以便与 SSM API 进行通信。使用下面的过程将托管 AWS Identity and Access Management (IAM) 策略附加到您的用户账户,以便向您授予对 SSM API 操作的完全访问权。

为您的用户账户创建 IAM 策略

  1. 通过以下网址打开 IAM 控制台:https://console.amazonaws.cn/iam/

  2. 在导航窗格中,选择 Policies。(如果这是您首次使用 IAM,请选择 Get Started,然后选择 Create Policy。)

  3. Filter 字段中,键入 AmazonSSMFullAccess 并按 Enter。

  4. 选中 AmazonSSMFullAccess 旁边的复选框,然后依次选择 Policy ActionsAttach

  5. Attach Policy 页面上,选择您的用户账户,然后选择 Attach Policy

安装 SSM 代理 (Linux)

SSM 代理处理 Run Command 请求并配置在该请求中指定的实例。默认情况下,此代理将安装在 Windows 实例上。不过,您必须在 Linux 上手动安装此代理。以下过程介绍如何在 Red Hat Enterprise Linux (RHEL) 上安装代理。有关如何在 Ubuntu、Amazon Linux 或 CentOS 上安装代理的信息,请参阅在 Linux 上安装 SSM 代理

在 Red Hat Enterprise Linux 上安装 SSM 代理

  1. 连接到您的 RHEL 实例并在该实例上创建临时目录。

    mkdir /tmp/ssm
  2. 使用以下命令之一将 SSM 安装程序下载到临时目录中。

    64 位

    curl https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm -o /tmp/ssm/amazon-ssm-agent.rpm

    32 位

    curl https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_386/amazon-ssm-agent.rpm -o /tmp/ssm/amazon-ssm-agent.rpm
  3. 运行 SSM 安装程序。

    sudo yum install -y /tmp/ssm/amazon-ssm-agent.rpm
  4. 运行以下命令之一,确定 SSM 代理是否在运行。该命令应返回“amazon-ssm-agent is running”。

    RHEL 7.x

    sudo systemctl status amazon-ssm-agent

    RHEL 6.x

    sudo status amazon-ssm-agent
  5. 如果上一个命令返回“amazon-ssm-agent is stopped”,则执行以下命令。

    1. 启动服务。

      RHEL 7.x

      sudo systemctl start amazon-ssm-agent

      RHEL 6.x

      sudo start amazon-ssm-agent
    2. 检查代理的状态。

      RHEL 7.x

      sudo systemctl status amazon-ssm-agent

      RHEL 6.x

      sudo status amazon-ssm-agent

使用 EC2 控制台发送命令

使用下面的过程,列出通过从 Amazon EC2 控制台使用 Run Command 在实例上运行的所有服务。

从控制台使用 Run Command 执行命令

  1. 打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/

  2. 在导航窗格中,选择 Run Command

  3. 选择 Run a command

  4. 对于 Command document,选择 AWS-RunPowerShellScript (针对 Windows 实例) 和 AWS-RunShellScript (针对 Linux 实例)。

  5. 对于 Target instances,选择您创建的实例。如果您没有看到该实例,请确保您当前位于创建实例时使用的区域。另外,按照前文所述,确保您已配置 IAM 角色和信任策略。

  6. 对于 Commands,键入 Get-Service (Windows) 或 ps aux (Linux)。

  7. (可选) 对于 Working Directory,指定要将命令运行于的 EC2 实例上的文件夹的路径。

  8. (可选) 对于 Execution Timeout,指定 EC2Config 服务或 SSM 代理在超时和失败前将尝试运行命令的秒数。

  9. 对于 Comment,我们建议提供将帮助您在命令列表中标识此命令的信息。

  10. 对于 Timeout (seconds),键入在实例被视为无法访问且命令执行失败之前,Run Command 应尝试连接实例的秒数。

  11. 选择 Run 执行命令。Run Command 将显示一个状态屏幕。选择 View result

  12. 要查看输出,请选择适用于该命令的命令调用,选择 Output 选项卡,然后选择 View Output

     使用 Run Command 执行的命令的列表

有关如何使用 Run Command 执行命令的更多示例,请参阅使用 Systems Manager Run Command 执行命令

使用 适用于 Windows PowerShell 的 AWS 工具 发送命令

使用下面的过程,列出通过从 适用于 Windows PowerShell 的 AWS 工具 使用 Run Command 在实例上运行的所有服务。

执行命令

  1. 在本地计算机上,下载最新版本的 适用于 Windows PowerShell 的 AWS 工具

  2. 在本地计算机上打开 适用于 Windows PowerShell 的 AWS 工具 并执行以下命令来指定凭证。

    Set-AWSCredentials –AccessKey key –SecretKey key
  3. 执行以下命令设置 PowerShell 会话的区域。指定您在前面的步骤中创建实例时使用的区域。此示例使用 us-west-2 区域。

    Set-DefaultAWSRegion -Region us-west-2
  4. 执行以下命令来检索在实例上运行的服务。

    Send-SSMCommand -InstanceId 'Instance-ID' -DocumentName AWS-RunPowerShellScript -Comment 'listing services on the instance' -Parameter @{'commands'=@('Get-Service')}

    命令将返回一个命令 ID,您将使用该 ID 来查看结果。

  5. 以下命令返回原始实例 Send-SSMCommand 的输出。输出在 2500 个字符后被截断。要查看完整服务列表,请在命令中使用 -OutputS3BucketName bucket_name 参数指定 Amazon S3 存储桶。

    Get-SSMCommandInvocation -CommandId Command-ID -Details $true | select -ExpandProperty CommandPlugins

有关如何将 Run Command 与 Windows PowerShell 工具 结合使用来执行命令的更多示例,请参阅使用 适用于 Windows PowerShell 的 AWS 工具 的 Systems Manager Run Command 演练

使用 AWS CLI 发送命令

使用下面的过程,列出通过从 AWS CLI 使用 Run Command 在实例上运行的所有服务。

执行命令

  1. 在您的本地计算机上,下载最新版本的 AWS Command Line Interface (AWS CLI)。

  2. 在本地计算机上打开 AWS CLI 并执行以下命令来指定凭证和区域。

    aws configure
  3. 系统将提示您指定以下内容。

    AWS Access Key ID [None]: key AWS Secret Access Key [None]: key Default region name [None]: region, for example us-east-1 Default output format [None]: ENTER
  4. 执行以下命令来检索在实例上运行的服务。

    aws ssm send-command --document-name "AWS-RunShellScript" --comment "listing services" --instance-ids "Instance-ID" --parameters commands="service --status-all" --region us-west-2 --output text

    命令将返回一个命令 ID,您将使用该 ID 来查看结果。

  5. 以下命令返回原始实例 Send-SSMCommand 的输出。输出在 2500 个字符后被截断。要查看完整服务列表,您需要在命令中使用 --output-s3-bucket-name bucket_name 参数指定 Amazon S3 存储桶。

    aws ssm list-command-invocations --command-id "command ID" --details

有关如何使用 AWS CLI 通过 Run Command 执行命令的更多示例,请参阅使用 AWS CLI 的 Systems Manager Run Command 演练

相关内容

有关 Run Command 和 Systems Manager 的更多信息,请参阅以下主题和参考资料。