

• AWS Systems Manager CloudWatch 控制面板在 2026 年 4 月 30 日之后将不再可用。客户可以像现在一样继续使用 Amazon CloudWatch 控制台来查看、创建和管理其 Amazon CloudWatch 控制面板。有关更多信息，请参阅 [Amazon CloudWatch 控制面板文档](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Dashboards.html)。

# 在混合和多云环境中创建 Systems Manager 所需的 IAM 服务角色
<a name="hybrid-multicloud-service-role"></a>

[混合和多云](operating-systems-and-machine-types.md#supported-machine-types)环境中的非 EC2（Amazon Elastic Compute Cloud）计算机需要一个 AWS Identity and Access Management（IAM）服务角色才能与 AWS Systems Manager 服务通信。此角色向 AWS Security Token Service (AWS STS) [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) 授予对 Systems Manager 服务的信任。对于混合和多云环境，您只需为每个 AWS 账户 创建一次服务角色。但如果混合和多云环境中的计算机需要不同的权限，则可以选择为不同的混合激活创建多个服务角色。

以下过程介绍如何使用 Systems Manager 控制台或首选命令行工具来创建所需的服务角色。

## 使用 AWS 管理控制台 为 Systems Manager 混合激活创建 IAM 服务角色
<a name="create-service-role-hybrid-activation-console"></a>

使用以下过程为混合激活创建服务角色。此过程使用 Systems Manager 核心功能的 `AmazonSSMManagedInstanceCore` 策略。您可能需要向服务角色添加其他策略，以便本地计算机能够访问其他 Systems Manager 工具或 AWS 服务，具体取决于您的应用场景。例如，如果无法访问所需的 AWS 托管式 Amazon Simple Storage Service (Amazon S3) 存储桶，Patch Manager 修补操作将会失败。

**创建服务角色（控制台）**

1. 通过 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 打开 IAM 控制台。

1. 在导航窗格中，选择**角色**，然后选择**创建角色**。

1. 对于 **Select trusted entity**（选择可信实体），完成以下选择：

   1. 对于 **Trusted entity type**（可信实体类型），选择 **AWS 服务**。

   1. 对于**其他 AWS 服务 的应用场景**，请选择 **Systems Manager**。

   1. 选择 **Systems Manager**。

      下图突出显示了 Systems Manager 选项的位置。  
![\[Systems Manager 是用例的选项之一。\]](http://docs.aws.amazon.com/zh_cn/systems-manager/latest/userguide/images/iam_use_cases_for_MWs.png)

1. 选择**下一步**。

1. 在 **Add permissions**（添加权限）页面上，请执行以下操作：
   + 使用**搜索**字段查找 **AmazonSSMManagedInstanceCore** 策略。选中其名称旁边的复选框，如下图所示。  
![\[该复选框在 AmazonSSMManagedInstanceCore 行中处于选中状态。\]](http://docs.aws.amazon.com/zh_cn/systems-manager/latest/userguide/images/setup-instance-profile-2.png)
**注意**  
即使您搜索其他策略，控制台也会保留您选择的内容。
   + 如果您在过程 [（可选）为 S3 存储桶访问创建自定义策略](setup-instance-permissions.md#instance-profile-custom-s3-policy) 中创建了自定义 S3 存储桶策略，请搜索该策略并选中其名称旁边的复选框。
   + 如果您打算将非 EC2 计算机加入 Directory Service 管理的 Active Directory，请搜索 **AmazonSSMDirectoryServiceAccess** 并选中其名称旁边的复选框。
   + 如果您打算使用 Eventbridge 或 CloudWatch Logs 来管理或监控您的托管节点，请搜索 **CloudWatchAgentServerPolicy** 并选中其名称旁边的复选框。

1. 选择**下一步**。

1. 对于**角色名称**，请为新的 IAM 服务器角色输入名称，例如 **SSMServerRole**。
**注意**  
记下角色名称。在注册希望使用 Systems Manager 进行管理的新计算机时，将选择该角色。

1. （可选）对于**描述**，请更新该 IAM 服务器角色的描述。

1. （可选）在 **Tags**（标签）中添加一个或多个标签密钥值对，以组织、跟踪或控制此角色的访问权限。

1. 选择 **Create role (创建角色)**。系统将让您返回到 **角色** 页面。

## 使用 AWS CLI 为 Systems Manager 混合激活创建 IAM 服务角色
<a name="create-service-role-hybrid-activation-cli"></a>

使用以下过程为混合激活创建服务角色。此过程使用 Systems Manager 核心功能的 `AmazonSSMManagedInstanceCore` 策略。您可能需要向服务角色添加其他策略，以便[混合和多云](operating-systems-and-machine-types.md#supported-machine-types)环境中的非 EC2 计算机能够访问其他工具或 AWS 服务，具体取决于您的应用场景。

**S3 存储桶策略要求**  
如果出现以下任一情况，您必须在完成此过程之前为 Amazon Simple Storage Service (Amazon S3) 存储桶创建自定义 IAM 权限策略：
+ **情况 1**：您通过一个 VPC 端点以私有方式将您的 VPC 连接到受支持的 AWS 服务，以及由 AWS PrivateLink 提供支持的 VPC 端点服务。
+ **情况 2** - 您计划使用在 Systems Manager 操作期间创建的 Amazon S3 存储桶，如将 Run Command 命令或 Session Manager 会话的输出存储到 S3 存储桶中。在继续之前，请按照[为实例配置文件创建自定义 S3 存储桶策略](setup-instance-permissions.md#instance-profile-custom-s3-policy)中的步骤进行操作。该主题中有关 S3 存储桶策略的信息也适用于服务角色。

------
#### [ AWS CLI ]

**为混合和多云环境创建 IAM 服务角色（AWS CLI）**

1. 安装并配置 AWS Command Line Interface（AWS CLI）（如果尚未执行该操作）。

   有关信息，请参阅[安装或更新 AWS CLI 的最新版本](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)。

1. 在本地计算机上使用以下信任策略创建一个文本文件，文件名称类似于 `SSMService-Trust.json`。确保使用 `.json` 文件扩展名保存该文件。请务必指定您在其中创建混合激活的 ARN 中的 AWS 账户 和 AWS 区域。请将账户 ID 和区域的*占位符值*替换为您自己的信息。

------
#### [ JSON ]

****  

   ```
   {
      "Version":"2012-10-17",		 	 	 
      "Statement":[
         {
            "Sid":"",
            "Effect":"Allow",
            "Principal":{
               "Service":"ssm.amazonaws.com"
            },
            "Action":"sts:AssumeRole",
            "Condition":{
               "StringEquals":{
                  "aws:SourceAccount":"123456789012"
               },
               "ArnEquals":{
                  "aws:SourceArn":"arn:aws:ssm:us-east-1:111122223333:*"
               }
            }
         }
      ]
   }
   ```

------

1. 打开 AWS CLI，在创建该 JSON 文件的目录下，运行 [create-role](https://docs.aws.amazon.com/cli/latest/reference/iam/create-role.html) 命令以创建服务角色。该示例创建一个名为 `SSMServiceRole` 的角色。如果愿意，您也可以选择其他名称。

------
#### [ Linux & macOS ]

   ```
   aws iam create-role \
       --role-name SSMServiceRole \
       --assume-role-policy-document file://SSMService-Trust.json
   ```

------
#### [ Windows ]

   ```
   aws iam create-role ^
       --role-name SSMServiceRole ^
       --assume-role-policy-document file://SSMService-Trust.json
   ```

------

1. 按如下方式运行 [attach-role-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/attach-role-policy.html) 命令，以允许您刚创建的服务角色创建会话令牌。此会话令牌向托管节点授予使用 Systems Manager 运行命令的权限。
**注意**  
您为混合和多云环境中托管式节点的服务配置文件添加的策略与用于为 Amazon Elastic Compute Cloud（Amazon EC2）实例创建实例配置文件的策略相同。有关以下命令中使用的 AWS 策略的更多信息，请参阅[配置 Systems Manager 所需的实例权限](setup-instance-permissions.md)。

   （必需）运行以下命令以允许托管节点使用 AWS Systems Manager 服务核心功能。

------
#### [ Linux & macOS ]

   ```
   aws iam attach-role-policy \
       --role-name SSMServiceRole \
       --policy-arn arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore
   ```

------
#### [ Windows ]

   ```
   aws iam attach-role-policy ^
       --role-name SSMServiceRole ^
       --policy-arn arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore
   ```

------

   如果为服务角色创建了自定义 S3 存储桶策略，请运行以下命令，以允许 AWS Systems Manager Agent (SSM Agent) 访问在该策略中指定的存储桶。将 *account-id* 和 *amzn-s3-demo-bucket* 替换为您的 AWS 账户 ID 和存储桶名称。

------
#### [ Linux & macOS ]

   ```
   aws iam attach-role-policy \
       --role-name SSMServiceRole \
       --policy-arn arn:aws:iam::account-id:policy/amzn-s3-demo-bucket
   ```

------
#### [ Windows ]

   ```
   aws iam attach-role-policy ^
       --role-name SSMServiceRole ^
       --policy-arn arn:aws:iam::account-id:policy/amzn-s3-demo-bucket
   ```

------

   （可选）运行以下命令以允许 SSM Agent 代表您访问 Directory Service，以处理托管节点加入域的请求。只有在将节点加入 Microsoft AD 目录时，服务角色才需要使用此策略。

------
#### [ Linux & macOS ]

   ```
   aws iam attach-role-policy \
       --role-name SSMServiceRole \
       --policy-arn arn:aws:iam::aws:policy/AmazonSSMDirectoryServiceAccess
   ```

------
#### [ Windows ]

   ```
   aws iam attach-role-policy ^
       --role-name SSMServiceRole ^
       --policy-arn arn:aws:iam::aws:policy/AmazonSSMDirectoryServiceAccess
   ```

------

   （可选）运行以下命令以允许 CloudWatch 代理在托管式节点上运行。通过使用此命令，可以读取节点上的信息并将其写入 CloudWatch。仅当要使用 Amazon EventBridge 或 Amazon CloudWatch Logs 等服务时，服务配置文件才需要使用该策略。

   ```
   aws iam attach-role-policy \
       --role-name SSMServiceRole \
       --policy-arn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy
   ```

------
#### [ Tools for PowerShell ]

**为混合和多云环境创建 IAM 服务角色（AWS Tools for Windows PowerShell）**

1. 如果您尚未安装和配置 AWS Tools for PowerShell（适用于 Windows PowerShell 的工具），请执行这些操作。

   有关信息，请参阅[安装 AWS Tools for PowerShell](https://docs.aws.amazon.com/powershell/latest/userguide/pstools-getting-set-up.html)。

1. 在本地计算机上使用以下信任策略创建一个文本文件，文件名称类似于 `SSMService-Trust.json`。确保使用 `.json` 文件扩展名保存该文件。请务必指定您在其中创建混合激活的 ARN 中的 AWS 账户 和 AWS 区域。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "",
               "Effect": "Allow",
               "Principal": {
                   "Service": "ssm.amazonaws.com"
               },
               "Action": "sts:AssumeRole",
               "Condition": {
                   "StringEquals": {
                       "aws:SourceAccount": "123456789012"
                   },
                   "ArnEquals": {
                       "aws:SourceArn": "arn:aws:ssm:us-east-1:123456789012:*"
                   }
               }
           }
       ]
   }
   ```

------

1. 在管理模式下打开 PowerShell，在创建此 JSON 文件的目录中，按如下方式运行 [New-IAMRole](https://docs.aws.amazon.com//powershell/latest/reference/items/Register-IAMRolePolicy.html) 以创建服务角色。该示例创建一个名为 `SSMServiceRole` 的角色。如果愿意，您也可以选择其他名称。

   ```
   New-IAMRole `
       -RoleName SSMServiceRole `
       -AssumeRolePolicyDocument (Get-Content -raw SSMService-Trust.json)
   ```

1. 按如下方式使用 [Register-IAMRolePolicy](https://docs.aws.amazon.com/powershell/latest/reference/items/Register-IAMRolePolicy.html)，以允许您创建的服务角色创建会话令牌。此会话令牌向托管节点授予使用 Systems Manager 运行命令的权限。
**注意**  
您为混合和多云环境中托管式节点的服务配置文件添加的策略与用于为 EC2 实例创建实例配置文件的策略相同。有关以下命令中使用的 AWS 策略的更多信息，请参阅[配置 Systems Manager 所需的实例权限](setup-instance-permissions.md)。

   （必需）运行以下命令以允许托管节点使用 AWS Systems Manager 服务核心功能。

   ```
   Register-IAMRolePolicy `
       -RoleName SSMServiceRole `
       -PolicyArn arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore
   ```

   如果为服务角色创建了自定义 S3 存储桶策略，请运行以下命令，以允许 SSM Agent 访问在该策略中指定的存储桶。将 *account-id* 和 *my-bucket-policy-name* 替换为您的 AWS 账户 ID 和存储桶名称。

   ```
   Register-IAMRolePolicy `
       -RoleName SSMServiceRole `
       -PolicyArn arn:aws:iam::account-id:policy/my-bucket-policy-name
   ```

   （可选）运行以下命令以允许 SSM Agent 代表您访问 Directory Service，以处理托管节点加入域的请求。只有在将节点加入 Microsoft AD 目录时，服务器角色才需要此策略。

   ```
   Register-IAMRolePolicy `
       -RoleName SSMServiceRole `
       -PolicyArn arn:aws:iam::aws:policy/AmazonSSMDirectoryServiceAccess
   ```

   （可选）运行以下命令以允许 CloudWatch 代理在托管式节点上运行。通过使用此命令，可以读取节点上的信息并将其写入 CloudWatch。仅当要使用 Amazon EventBridge 或 Amazon CloudWatch Logs 等服务时，服务配置文件才需要使用该策略。

   ```
   Register-IAMRolePolicy `
       -RoleName SSMServiceRole `
       -PolicyArn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy
   ```

------

继续[创建混合激活以将节点注册到 Systems Manager](hybrid-activation-managed-nodes.md)。