Amazon EC2 Systems Manager
用户指南
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

在混合环境中设置 Systems Manager

Amazon EC2 Systems Manager 可让您在混合环境中以远程方式安全地管理本地服务器和虚拟机 (VM)。为 Systems Manager 配置混合环境有以下优势。

  • 创建一种一致且安全的方式,使用相同的工具或脚本从一个位置远程管理本地工作负载。

  • 通过使用 AWS Identity and Access Management (IAM) 集中管理可在服务器和虚拟机上执行的操作的访问控制。

  • 集中审计,您可以查看在您服务器和虚拟机上执行的操作,因为所有这些操作记录在 AWS CloudTrail 中。

  • 集中监控,因为您可以配置 CloudWatch Events 和 Amazon SNS 以发送有关服务执行成功的通知。

完成本主题中的过程为 Systems Manager 配置混合计算机。

重要

完成后,您为 Systems Manager 配置的混合计算机会列在 Amazon EC2 控制台中,并被称为托管实例。为 Systems Manager 配置的 Amazon EC2 实例是托管实例。但在 Amazon EC2 控制台中,您的本地实例与具有前缀“mi-”的 Amazon EC2 实例有别。

创建 IAM 服务角色

混合环境中的服务器和虚拟机需要有 IAM 角色才能与 Systems Manager SSM 服务通信。该角色向 AssumeRole 授予对 SSM 服务的信任。

注意

您只需为每个 AWS 账户创建该服务角色一次。

使用 AWS Tools for Windows PowerShell 创建 IAM 服务角色

  1. 使用以下信任策略创建文本文件 (在此示例中,它名为 SSMService-Trust.json)。使用 .json 文件扩展名保存该文件。

    Copy
    { "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Principal": {"Service": "ssm.amazonaws.com"}, "Action": "sts:AssumeRole" } }
  2. 使用 New-IAMRole (如下所示) 创建服务角色。此示例创建一个名为 SSMServiceRole 的角色。

    Copy
    New-IAMRole -RoleName SSMServiceRole -AssumeRolePolicyDocument (Get-Content -raw SSMService-Trust.json)
  3. 使用 Register-IAMRolePolicy (如下所示) 以允许 SSMServiceRole 创建会话令牌。此会话令牌向托管实例授予使用 Systems Manager 执行命令的权限。

    Copy
    Register-IAMRolePolicy -RoleName SSMServiceRole -PolicyArn arn:aws:iam::aws:policy/service-role/AmazonEC2RoleforSSM

使用 AWS CLI 创建 IAM 服务角色

  1. 使用以下信任策略创建文本文件 (在此示例中,它名为 SSMService-Trust.json)。使用 .json 文件扩展名保存该文件。

    Copy
    { "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Principal": {"Service": "ssm.amazonaws.com"}, "Action": "sts:AssumeRole" } }
  2. 使用 create-role 命令创建服务角色。此示例创建一个名为 SSMServiceRole 的角色。

    Copy
    aws iam create-role --role-name SSMServiceRole --assume-role-policy-document file://SSMService-Trust.json
  3. 使用 attach-role-policy (如下所示) 以允许 SSMServiceRole 创建会话令牌。此会话令牌向托管实例授予使用 Systems Manager 执行命令的权限。

    Copy
    aws iam attach-role-policy --role-name SSMServiceRole --policy-arn arn:aws:iam::aws:policy/service-role/AmazonEC2RoleforSSM

注意

您的公司或组织中在混合计算机上使用 Systems Manager 的用户必须在 IAM 中获得授权,才能调用 SSM API。有关更多信息,请参阅 为 Systems Manager 配置安全角色

创建托管实例激活

要在混合环境中将服务器和虚拟机设置为托管实例,您需要创建托管实例激活。完成激活后,您将收到一个激活代码和 ID。此代码/ID 组合具有 Amazon EC2 访问 ID 和私有密钥的功能,可提供从托管实例对 Systems Manager 服务的安全访问。

使用控制台创建托管实例激活

  1. 打开 Amazon EC2 控制台,展开导航窗格中的 Systems Manager Shared Resources,然后选择 Activations

  2. 选择 Create an Activation

  3. 填写表单,然后选择 Create Activation

    请注意,您可以指定激活的过期日期。如果需要在过期日期后注册更多的托管实例,您必须创建新的激活。过期日期对已注册且正在运行的实例没有任何影响。

  4. 在安全位置存储托管实例激活代码和 ID。当您在混合环境中的服务器和虚拟机上安装 SSM 代理时指定此代码和 ID。如果您丢失了此代码和 ID,则必须创建一个新激活。

使用 AWS Tools for Windows PowerShell 创建托管实例激活

  1. 在您安装了 AWS Tools for Windows PowerShell 的计算机上,在 AWS Tools for Windows PowerShell 中执行以下命令。

    Copy
    New-SSMActivation -DefaultInstanceName name -IamRole IAM service role -RegistrationLimit number of managed instances –Region region

    例如:

    Copy
    New-SSMActivation -DefaultInstanceName MyWebServers -IamRole RunCommandServiceRole -RegistrationLimit 10 –Region us-east-1
  2. 按 Enter。如果激活成功,系统将返回一个激活代码和一个 ID。在安全位置存储激活代码和 ID。

使用 AWS CLI 创建托管实例激活

  1. 在您安装了 AWS Command Line Interface (AWS CLI) 的计算机上,在 CLI 中执行以下命令。

    Copy
    aws ssm create-activation --default-instance-name name --iam-role IAM service role --registration-limit number of managed instances --region region

    例如:

    Copy
    aws ssm create-activation --default-instance-name MyWebServers --iam-role RunCommandServiceRole --registration-limit 10 --region us-east-1
  2. 按 Enter。如果激活成功,系统将返回一个激活代码和一个 ID。在安全位置存储激活代码和 ID。

在 Windows 混合环境中的服务器和虚拟机上安装 SSM 代理

在开始前,请找到您在上一部分中完成托管实例激活后收到的激活码和 ID。请按照下面的流程指定激活码和 ID。

重要

此过程适用于本地或混合环境中的服务器和 VM。要下载 SSM 代理并将其安装到 Amazon EC2 Windows 实例上,请参阅在 Windows 上安装 SSM 代理

在混合环境中的服务器和虚拟机上安装 SSM 代理

  1. 登录混合环境中的服务器或虚拟机。

  2. 打开 Windows PowerShell。

  3. 将以下命令块复制并粘贴到适用于 Windows PowerShell 的 AWS 工具。指定您的激活代码、ID 和要从中下载 SSM 代理的区域。对于区域,请选择 SSM 可用的区域。例如,us-west-2。

    Copy
    $dir = $env:TEMP + "\ssm" New-Item -ItemType directory -Path $dir cd $dir (New-Object System.Net.WebClient).DownloadFile("https://amazon-ssm-region.s3.amazonaws.com/latest/windows_amd64/AmazonSSMAgentSetup.exe", $dir + "\AmazonSSMAgentSetup.exe") Start-Process .\AmazonSSMAgentSetup.exe -ArgumentList @("/q", "/log", "install.log", "CODE=code", "ID=id", "REGION=region") -Wait Get-Content ($env:ProgramData + "\Amazon\SSM\InstanceData\registration") Get-Service -Name "AmazonSSMAgent"
  4. 按 Enter。

此命令将下载 SSM 代理并将它安装到服务器或虚拟机上。此命令还将服务器或虚拟机注册到 SSM 服务。服务器或虚拟机现在为托管实例。在控制台中,这些实例在列出时带有前缀“mi-”。您可以使用 List 命令查看所有实例。有关更多信息,请参阅 Amazon EC2 Systems Manager API Reference

在 Linux 混合环境中的服务器和虚拟机上安装 SSM 代理

在开始前,请找到您在完成托管实例激活后收到的激活码和 ID。请按照下面的流程指定激活码和 ID。

重要

此过程适用于本地或混合环境中的服务器和 VM。要下载 SSM 代理并将其安装到 Amazon EC2 Linux 实例上,请参阅在 Linux 上安装 SSM 代理

使用以下脚本中的 URL 可从任意 AWS 区域下载 SSM 代理。如果您要从特定区域下载代理,则选择下列 URL 之一。

  • Amazon Linux、RHEL、CentOS 和 SLES 64 位

    https://s3.region.amazonaws.com/amazon-ssm-region/latest/linux_amd64/amazon-ssm-agent.rpm

  • Amazon Linux、RHEL 和 CentOS 32 位

    https://s3.region.amazonaws.com/amazon-ssm-region/latest/linux_386/amazon-ssm-agent.rpm

  • Ubuntu Server 64 位

    https://s3.region.amazonaws.com/amazon-ssm-region/latest/debian_amd64/amazon-ssm-agent.deb

  • Ubuntu Server 32 位

    https://s3.region.amazonaws.com/amazon-ssm-region/latest/debian_386/amazon-ssm-agent.deb

然后将 region 替换为 SSM 可用的区域

在混合环境中的服务器和虚拟机上安装 SSM 代理

  1. 登录混合环境中的服务器或虚拟机。

  2. 将以下命令块之一复制并粘贴到 SSH 中。指定您的激活代码、ID 和要从中下载 SSM 代理的区域。请注意,如果您不是根用户,则 sudo 不是必需的。

    在 Amazon Linux、RHEL 6.x 和 CentOS 6.x 上

    Copy
    mkdir /tmp/ssm sudo curl https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm -o /tmp/ssm/amazon-ssm-agent.rpm sudo yum install -y /tmp/ssm/amazon-ssm-agent.rpm sudo stop amazon-ssm-agent sudo amazon-ssm-agent -register -code "code" -id "id" -region "region" sudo start amazon-ssm-agent

    在 RHEL 7.x 和 CentOS 7.x 上

    Copy
    mkdir /tmp/ssm sudo curl https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm -o /tmp/ssm/amazon-ssm-agent.rpm sudo yum install -y /tmp/ssm/amazon-ssm-agent.rpm sudo systemctl stop amazon-ssm-agent sudo amazon-ssm-agent -register -code "code" -id "id" -region "region" sudo systemctl start amazon-ssm-agent

    在 SLES 上

    Copy
    mkdir /tmp/ssm sudo wget https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm sudo rpm --install amazon-ssm-agent.rpm sudo systemctl stop amazon-ssm-agent sudo amazon-ssm-agent -register -code "code" -id "id" -region "region" sudo systemctl enable amazon-ssm-agent sudo systemctl start amazon-ssm-agent

    在 Ubuntu 上

    Copy
    mkdir /tmp/ssm sudo curl https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/debian_amd64/amazon-ssm-agent.deb -o /tmp/ssm/amazon-ssm-agent.deb sudo dpkg -i /tmp/ssm/amazon-ssm-agent.deb sudo service amazon-ssm-agent stop sudo amazon-ssm-agent -register -code "code" -id "id" -region "region" sudo service amazon-ssm-agent start
  3. 按 Enter。

此命令将下载 SSM 代理并将它安装到混合环境中的服务器或虚拟机上。此命令可停止 SSM 代理,然后向 SSM 服务注册服务器或虚拟机。服务器或虚拟机现在为托管实例。为 Systems Manager 配置的 Amazon EC2 实例也是托管实例。但在 Amazon EC2 控制台中,您的本地实例与具有前缀“mi-”的 Amazon EC2 实例有别。