

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

# 与其他产品和服务的集成
<a name="integrations-partners"></a>

AWS Systems Manager 内置集成了下表中所示的产品和服务。


|  |  | 
| --- |--- |
|  Ansible  |  [https://www.ansible.com/](https://www.ansible.com/) 是一个 IT 自动化平台，可使您的应用程序和系统更易于部署。 Systems Manager 提供 Systems Manager 文档（SSM 文档）`AWS-ApplyAnsiblePlaybooks`，让您可以创建运行 Ansible Playbook 的 State Manager 关联。  了解详情 [创建运行 Ansible Playbook 的关联](systems-manager-state-manager-ansible.md)   | 
|  Chef  |  [https://www.chef.io/](https://www.chef.io/) 是一种 IT 自动化工具，可使您的应用程序和系统更易于部署。 Systems Manager 提供 `AWS-ApplyChefRecipes` SSM 文档，让您可以在运行 Chef 配方的 State Manager（AWS Systems Manager 中的一项工具）中创建关联。  了解详情 [创建运行 Chef 配方的关联](systems-manager-state-manager-chef.md)  Systems Manager 还与 [https://www.chef.io/products/chef-inspec/](https://www.chef.io/products/chef-inspec/) 配置文件集成，让您可以运行合规性扫描，并查看合规和不合规的节点。  了解详情 [将 Chef InSpec 配置文件与 Systems Manager Compliance 结合使用](integration-chef-inspec.md)   | 
|  GitHub  |  [https://github.com/](https://github.com/) 可为软件开发版本控制和协作提供托管。 Systems Manager 提供 SSM 文档 `AWS-RunDocument`，让您可以运行存储在 GitHub 中的其他 SSM 文档；其也提供 SSM 文档 `AWS-RunRemoteScript`，让您可以运行存储在 GitHub 中的脚本。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/systems-manager/latest/userguide/integrations-partners.html)  | 
|  Jenkins  |  [https://www.jenkins.io/](https://www.jenkins.io/) 是一款开源自动化服务器，让开发人员可以可靠地构建、测试和部署软件。 Automation（Systems Manager 中的一项工具）可以用作构建后步骤，以便将应用程序版本预安装到Amazon Machine Images（AMIs）中。  了解详情 [使用 Automation 和 Jenkins 更新 AMIs](automation-tutorial-update-patch-ami-jenkins-integration.md)   | 
|  ServiceNow  |  [https://www.servicenow.com/](https://www.servicenow.com/) 是一个企业服务管理系统，让您可以管理 IT 服务和运维。 Systems Manager 中的所有工具（包括 Automation、Change Manager、Incident Manager 和 OpsCenter）都可使用 AWS 服务管理连接器与 ServiceNow 进行集成。通过此集成，您可以查看、创建、更新、添加通信和解决 ServiceNow 中的 AWS 支持 问题。  了解详情 [集成 ServiceNow](integrations-partners-servicenow.md)    | 
| Terraform |  HashiCorp [Terraform](https://registry.terraform.io/) 是一款开源*基础设施即代码* (IaC) 软件工具，它提供命令行界面 (CLI) 工作流程来管理各种云服务。对于 Systems Manager，您可以使用 Terraform 来管理或提供以下内容： **资源** [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/systems-manager/latest/userguide/integrations-partners.html) **数据源** [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/systems-manager/latest/userguide/integrations-partners.html)  | 

**Topics**
+ [从 GitHub 运行脚本](integration-remote-scripts.md)
+ [将 Chef InSpec 配置文件与 Systems Manager Compliance 结合使用](integration-chef-inspec.md)
+ [集成 ServiceNow](integrations-partners-servicenow.md)

# 从 GitHub 运行脚本
<a name="integration-remote-scripts"></a>

本节介绍如何使用预定义 Systems Manager 文档（SSM 文档）`AWS-RunRemoteScript` 从 GitHub 下载脚本，包括 Ansible Playbook、Python、Ruby 和 PowerShell 脚本。通过使用此 SSM 文档，您不再需要将脚本手动移植到 Amazon Elastic Compute Cloud（Amazon EC2）中，也不需要将这些脚本封装在 SSM 文档中。AWS Systems Manager 与 GitHub 的集成可以促进实现*基础设施即代码*，这既可缩短管理节点所需的时间，又可在整个实例集中实现标准化配置。

您还可以创建自定义 SSM 文档，这使您可以从远程位置下载并运行脚本或其他 SSM 文档。有关更多信息，请参阅 [创建复合文档](documents-creating-content.md#documents-creating-composite)。

还可以下载包括多个脚本的目录。在运行目录中的主脚本时，Systems Manager 还会运行该目录中包含的任何引用的脚本。

请注意关于从 GitHub 运行脚本的下列重要详细信息。
+ Systems Manager 不会验证您的脚本是否能够在节点上运行。在下载和运行脚本之前，请确认相应节点上已经安装所需软件。您也可以创建一个复合文档，能够使用 Run Command 或State Manager（都是 AWS Systems Manager 中的工具）安装软件，然后再下载并运行脚本。
+ 您应负责确保满足所有 GitHub 要求。包括根据需要刷新访问令牌。确保不要超过已进行身份验证或未进行身份验证的请求的数量。有关更多信息，请参阅GitHub 文档。
+ 不支持 GitHub Enterprise 存储库。

**Topics**
+ [从 GitHub 运行 Ansible Playbook](integration-github-ansible.md)
+ [从 GitHub 运行 Python 脚本](integration-github-python.md)

# 从 GitHub 运行 Ansible Playbook
<a name="integration-github-ansible"></a>

本节包含帮助您使用控制台或 AWS Command Line Interface（AWS CLI）从 GitHub 运行 Ansible Playbook 的过程。

**开始前的准备工作**  
如果您计划运行私有 GitHub 存储库中存储的脚本，请为 GitHub 安全访问令牌创建 AWS Systems Manager `SecureString` 参数。通过 SSH 手动传递令牌无法访问私有 GitHub 存储库中的脚本。该访问令牌必须作为 Systems Manager `SecureString` 参数传递。有关创建 `SecureString` 参数的更多信息，请参阅 [在 Systems Manager 中创建 Parameter Store 参数](sysman-paramstore-su-create.md)。

## 从 GitHub 运行 Ansible Playbook（控制台）
<a name="integration-github-ansible-console"></a>

**从 GitHub 运行 Ansible Playbook**

1. 访问 [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/)，打开 AWS Systems Manager 控制台。

1. 在导航窗格中，请选择 **Run Command**。

1. 选择 **Run command（运行命令）**。

1. 在 **Command document (命令文档)** 列表中，选择 **`AWS-RunRemoteScript`**。

1. 在**命令参数**中，执行以下操作：
   + 在**源类型**中，选择 **GitHub**。
   + 在 **Source Info (源信息)** 框中，按以下格式输入访问源所需的信息。

     ```
     {
       "owner": "owner_name",
       "repository": "repository_name", 
       "getOptions": "branch:branch_name",
       "path": "path_to_scripts_or_directory",
       "tokenInfo": "{{ssm-secure:SecureString_parameter_name}}" 
     }
     ```

     此示例下载名为 `webserver.yml` 的文件。

     ```
     {
         "owner": "TestUser1",
         "repository": "GitHubPrivateTest",
         "getOptions": "branch:myBranch",
         "path": "scripts/webserver.yml",
         "tokenInfo": "{{ssm-secure:mySecureStringParameter}}"
     }
     ```
**注意**  
仅当您的 SSM 文档存储在 `master` 以外的分支中时， `"branch"` 才是必需的。  
要使用存储库中特定*提交* 中的脚本版本，请使用 `commitID` 和 `getOptions`，而不是 `branch`。例如：  
`"getOptions": "commitID:bbc1ddb94...b76d3bEXAMPLE",`
   + 在 **Command Line (命令行)** 字段中，输入用于脚本执行的参数。见下列。

     **ansible-playbook -i “localhost,” --check -c local webserver.yml**
   + （可选）在 **Working Directory**（工作目录）字段中，输入节点（要在其中下载和运行脚本）上的目录的名称。
   + (可选) 在**执行超时**中，指定脚本命令执行失败之前系统要等待的秒数。

1. 在 **Targets**（目标）部分中，通过指定标签、手动选择实例或边缘设备或指定资源组，选择要在其上运行此操作的托管式节点。
**提示**  
如果未列出您希望看到的托管式节点，请参阅 [排除托管式节点可用性的问题](fleet-manager-troubleshooting-managed-nodes.md) 以获取故障排除技巧。

1. 对于 **Other parameters（其他参数）**：
   + 对于 **Comment（注释）**，请输入有关此命令的信息。
   + 对于 **Timeout (seconds) (超时 (秒))**，请指定在整个命令执行失败之前系统等待的秒数。

1. 对于 **Rate control（速率控制）**：
   + 对于 **Concurrency**（并发），请指定要同时运行该命令的托管式节点的数量或百分比。
**注意**  
如果您通过指定应用于托管式节点的标签或指定 AWS Resource Groups 来选择目标，但不确定有多少个托管式节点已被设为目标，则可通过指定百分比来限制可同时运行该文档的目标的数量。
   + 对于 **Error threshold**（错误阈值），请指定当命令在一定数量或百分比的节点上失败后，何时在其他托管式节点上停止运行该命令。例如，如果您指定三个错误，Systems Manager 将在收到第四个错误时停止发送该命令。仍在处理该命令的托管式节点也可能发送错误。

1. （可选）对于 **输出选项**，要将命令输出保存到文件，请选中 **将命令输出写入 S3 存储桶** 框。在输入框中输入存储桶和前缀（文件夹）名称。
**注意**  
授予将数据写入 S3 存储桶的能力的 S3 权限，是分配给实例的实例配置文件（适用于 EC2 实例）或 IAM 服务角色（混合激活的计算机）的权限，而不是执行此任务的 IAM 用户的权限。有关更多信息，请参阅[配置 Systems Manager 所需的实例权限](setup-instance-permissions.md)或[为混合环境创建 IAM 服务角色](hybrid-multicloud-service-role.md)。此外，如果指定的 S3 存储桶位于不同的 AWS 账户 中，请确保与该托管式节点关联的实例配置文件或 IAM 服务角色具有写入该存储桶的所需权限。

1. 在 **SNS 通知**部分，如果需要发送有关命令执行状态的通知，请选中 **Enable SNS notifications（启用 SNS 通知）**复选框。

   有关为 Run Command 配置 Amazon SNS 通知的更多信息，请参阅 [使用 Amazon SNS 通知监控 Systems Manager 状态更改](monitoring-sns-notifications.md)。

1. 选择 **Run（运行）**。

## 使用 AWS CLI 从 GitHub 运行 Ansible Playbook
<a name="integration-github-ansible-cli"></a>

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

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

1. 运行以下命令可从 GitHub 下载并运行脚本。

   ```
   aws ssm send-command \
       --document-name "AWS-RunRemoteScript" \
       --instance-ids "instance-IDs"\
       --parameters '{"sourceType":["GitHub"],"sourceInfo":["{\"owner\":\"owner_name\", \"repository\": \"repository_name\", \"path\": \"path_to_file_or_directory\", \"tokenInfo\":\"{{ssm-secure:name_of_your_SecureString_parameter}}\" }"],"commandLine":["commands_to_run"]}'
   ```

   以下是一个要在本地 Linux 计算机上运行的示例命令。

   ```
   aws ssm send-command \    
       --document-name "AWS-RunRemoteScript" \
       --instance-ids "i-02573cafcfEXAMPLE" \
       --parameters '{"sourceType":["GitHub"],"sourceInfo":["{\"owner\":\"TestUser1\", \"repository\": \"GitHubPrivateTest\", \"path\": \"scripts/webserver.yml\", \"tokenInfo\":\"{{ssm-secure:mySecureStringParameter}}\" }"],"commandLine":["ansible-playbook -i “localhost,” --check -c local webserver.yml"]}'
   ```

# 从 GitHub 运行 Python 脚本
<a name="integration-github-python"></a>

本节包含帮助您使用 AWS Systems Manager 控制台或 AWS Command Line Interface（AWS CLI）从 GitHub 运行 Python 脚本的过程。

## 从 GitHub 运行 Python 脚本（控制台）
<a name="integration-github-python-console"></a>

**从 GitHub 运行 Python 脚本**

1. 访问 [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/)，打开 AWS Systems Manager 控制台。

1. 在导航窗格中，请选择 **Run Command**。

1. 选择 **Run command（运行命令）**。

1. 在 **Command document (命令文档)** 列表中，选择 **`AWS-RunRemoteScript`**。

1. 对于**命令参数**，执行以下操作：
   + 在**源类型**中，选择 **GitHub**。
   + 在 **Source Info (源信息)** 框中，按以下格式输入访问源所需的信息：

     ```
     {
         "owner": "owner_name",
         "repository": "repository_name",
         "getOptions": "branch:branch_name",
         "path": "path_to_document",
         "tokenInfo": "{{ssm-secure:SecureString_parameter_name}}"
     }
     ```

     以下示例会下载一个名为 *complex-script* 的脚本目录。

     ```
     {
         "owner": "TestUser1",
         "repository": "SSMTestDocsRepo",
         "getOptions": "branch:myBranch",
         "path": "scripts/python/complex-script",
         "tokenInfo": "{{ssm-secure:myAccessTokenParam}}"
     }
     ```
**注意**  
仅当您的脚本存储在 `master` 以外的分支中时，`"branch"` 才是必需的。  
要使用存储库中特定*提交* 中的脚本版本，请使用 `commitID` 和 `getOptions`，而不是 `branch`。例如：  
`"getOptions": "commitID:bbc1ddb94...b76d3bEXAMPLE",`
   + 对于 **Command Line (命令行)**，输入脚本执行的参数。见下列。

     ```
     mainFile.py argument-1 argument-2
     ```

     此示例运行 `mainFile.py`，它可在随后运行 `complex-script` 目录中的其他脚本。
   + （可选）对于 **Working Directory**（工作目录），输入节点上要在其中下载和运行脚本的目录的名称。
   + （可选）对于 **Execution Timeout（执行超时）**，指定脚本命令执行失败之前系统要等待的秒数。

1. 在 **Targets**（目标）部分中，通过指定标签、手动选择实例或边缘设备或指定资源组，选择要在其上运行此操作的托管式节点。
**提示**  
如果未列出您希望看到的托管式节点，请参阅 [排除托管式节点可用性的问题](fleet-manager-troubleshooting-managed-nodes.md) 以获取故障排除技巧。

1. 对于 **Other parameters（其他参数）**：
   + 对于 **Comment（注释）**，请输入有关此命令的信息。
   + 对于 **Timeout (seconds) (超时 (秒))**，请指定在整个命令执行失败之前系统等待的秒数。

1. 对于 **Rate control（速率控制）**：
   + 对于 **Concurrency**（并发），请指定要同时运行该命令的托管式节点的数量或百分比。
**注意**  
如果您通过指定应用于托管式节点的标签或指定 AWS Resource Groups 来选择目标，但不确定有多少个托管式节点已被设为目标，则可通过指定百分比来限制可同时运行该文档的目标的数量。
   + 对于 **Error threshold**（错误阈值），请指定当命令在一定数量或百分比的节点上失败后，何时在其他托管式节点上停止运行该命令。例如，如果您指定三个错误，Systems Manager 将在收到第四个错误时停止发送该命令。仍在处理该命令的托管式节点也可能发送错误。

1. （可选）对于 **输出选项**，要将命令输出保存到文件，请选中 **将命令输出写入 S3 存储桶** 框。在输入框中输入存储桶和前缀（文件夹）名称。
**注意**  
授予将数据写入 S3 存储桶的能力的 S3 权限，是分配给实例的实例配置文件（适用于 EC2 实例）或 IAM 服务角色（混合激活的计算机）的权限，而不是执行此任务的 IAM 用户的权限。有关更多信息，请参阅[配置 Systems Manager 所需的实例权限](setup-instance-permissions.md)或[为混合环境创建 IAM 服务角色](hybrid-multicloud-service-role.md)。此外，如果指定的 S3 存储桶位于不同的 AWS 账户 中，请确保与该托管式节点关联的实例配置文件或 IAM 服务角色具有写入该存储桶的所需权限。

1. 在 **SNS 通知**部分，如果需要发送有关命令执行状态的通知，请选中 **Enable SNS notifications（启用 SNS 通知）**复选框。

   有关为 Run Command 配置 Amazon SNS 通知的更多信息，请参阅 [使用 Amazon SNS 通知监控 Systems Manager 状态更改](monitoring-sns-notifications.md)。

1. 选择 **Run（运行）**。

## 使用 AWS CLI 从 GitHub 运行 Python 脚本
<a name="integration-github-python-cli"></a>

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

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

1. 运行以下命令可从 GitHub 下载并运行脚本。

   ```
   aws ssm send-command --document-name "AWS-RunRemoteScript" --instance-ids "instance-IDs" --parameters '{"sourceType":["GitHub"],"sourceInfo":["{\"owner\":\"owner_name\", \"repository\":\"repository_name\", \"path\": \"path_to_script_or_directory"}"],"commandLine":["commands_to_run"]}'
   ```

   见下列。

   ```
   aws ssm send-command --document-name "AWS-RunRemoteScript" --instance-ids "i-02573cafcfEXAMPLE" --parameters '{"sourceType":["GitHub"],"sourceInfo":["{\"owner\":\"TestUser1\", \"repository\":\"GitHubTestPublic\", \"path\": \"scripts/python/complex-script\"}"],"commandLine":["mainFile.py argument-1 argument-2 "]}'
   ```

   此示例将下载名为 `complex-script` 的脚本目录。`commandLine` 条目运行 `mainFile.py`，它可在随后运行 `complex-script` 目录中的其他脚本。

# 将 Chef InSpec 配置文件与 Systems Manager Compliance 结合使用
<a name="integration-chef-inspec"></a>

AWS Systems Manager 与 [https://www.chef.io/products/chef-inspec](https://www.chef.io/products/chef-inspec) 集成。Chef InSpec 是一个开源的测试框架，使您可以创建要存储在 GitHub 或 Amazon Simple Storage Service（Amazon S3）中的人类可读配置文件。然后，您可以使用 Systems Manager 运行合规性扫描，并查看合规和不合规的节点。*配置文件*列出您的计算环境的安全性、合规性或策略要求。例如，您可以使用 Compliance（AWS Systems Manager 中的一项工具），创建将在您扫描节点时执行以下检查的配置文件：
+ 检查特定端口是否处于打开或关闭状态。
+ 检查特定应用程序是否正在运行。
+ 检查某些软件包是否已安装。
+ 检查 Windows 注册表项中的特定属性。

您可以仅为使用 Systems Manager 管理的 Amazon Elastic Compute Cloud (Amazon EC2) 实例创建 InSpec 配置文件。不支持本地服务器和虚拟机 (VM)。以下示例 Chef InSpec 配置文件将检查端口 22 是否处于打开状态。

```
control 'Scan Port' do
impact 10.0
title 'Server: Configure the service port'
desc 'Always specify which port the SSH server should listen to.
Prevent unexpected settings.'
describe sshd_config do
its('Port') { should eq('22') }
end
end
```

InSpec 包含一组资源，可帮助您快速编写检查和审计控制。InSpec 使用 [InSpec 域特定语言 (DSL)](https://docs.chef.io/inspec/7.0/reference/glossary/#dsl) 在 Ruby 中编写这些控件。您还可以使用由大型 InSpec 用户社区创建的配置文件。例如，GitHub 上的 [DevSec chef-os-hardening](https://github.com/dev-sec/chef-os-hardening) 项目包含许多配置文件，可帮助保护节点。您可以在 GitHub 或 Amazon S3 中创作和存储配置文件。

## 工作原理
<a name="integration-chef-inspec-how"></a>

下面演示了 InSpec 配置文件与 Compliance 结合使用的过程：

1. 要么识别要使用的预定义 InSpec 配置文件，要么创建您自己的配置文件。您可以使用 GitHub 上的[预定义配置文件](https://github.com/search?p=1&q=topic%3Ainspec+org%3Adev-sec&type=Repositories)来开始操作。有关如何创建自己的 InSpec 配置文件的信息，请参阅 [ChefChef InSpec 配置文件](https://www.inspec.io/docs/reference/profiles/)。

1. 将配置文件存储在公有或私有 GitHub 存储库或者 S3 存储桶中。

1. 使用 Systems Manager 文档（SSM 文档）`AWS-RunInspecChecks`，借助您的 InSpec 配置文件运行 Compliance。您可以使用 Run Command（AWS Systems Manager 中的一项工具）开始按需进行合规性扫描，也可以使用State Manager（AWS Systems Manager 中的一项工具）按计划定期进行合规性扫描。

1. 使用 Compliance API 或 Compliance 控制台识别不合规的节点。

**注意**  
请注意以下信息。  
Chef 使用节点上的客户端来处理配置文件。您不需要安装客户端。当 Systems Manager 运行 SSM 文档 `AWS-RunInspecChecks` 时，系统将检查是否已安装客户端。如果未安装，Systems Manager 会在扫描期间安装 Chef 客户端，然后在扫描完成后卸载该客户端。
运行 SSM 文档 `AWS-RunInspecChecks`（如本主题中所述）会将类型为 `Custom:Inspec` 的合规性条目分配到每个目标节点。要分配此合规性类型，该文档将调用 [PutComplianceItems](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_PutComplianceItems.html) API 操作。

## 运行 InSpec 合规性扫描
<a name="integration-chef-inspec-running"></a>

本节包含有关如何使用 Systems Manager 控制台和 AWS Command Line Interface (AWS CLI) 运行 InSpec 合规性扫描的信息。控制台过程介绍了如何配置 State Manager 来运行该扫描。AWS CLI 过程介绍了如何配置 Run Command 来运行该扫描。

### 使用 State Manager 运行 InSpec 合规性扫描（控制台）
<a name="integration-chef-inspec-running-console"></a>

**使用 AWS Systems Manager 控制台通过 State Manager 运行 InSpec 合规性扫描**

1. 访问 [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/)，打开 AWS Systems Manager 控制台。

1. 在导航窗格中，请选择 **State Manager**。

1. 选择 **Create association（创建关联）**。

1. 在**提供关联详细信息**部分，输入一个名称。

1. 在 **Document (文档)** 列表中，选择 **`AWS-RunInspecChecks`**。

1. 在**文档版本**列表中，选择**运行时的最新版本**。

1. 在**参数**部分的**源类型**列表中，请选择 **GitHub** 或 **S3**。

   如果选择 **GitHub**，则在**源信息**字段中输入公有或私有 GitHub 存储库中 InSpec 配置文件的路径。以下是由 Systems Manager 团队从以下位置提供的公有配置文件的示例路径：[https://github.com/awslabs/amazon-ssm/tree/master/Compliance/InSpec/PortCheck](https://github.com/awslabs/amazon-ssm/tree/master/Compliance/InSpec/PortCheck)。

   ```
   {"owner":"awslabs","repository":"amazon-ssm","path":"Compliance/InSpec/PortCheck","getOptions":"branch:master"}
   ```

   如果您选择 **S3**，请在 **Source Info (源信息)** 字段中输入 S3 存储桶中 InSpec 配置文件的有效 URL。

   有关 Systems Manager 如何与 GitHub 和 Amazon S3 集成的更多信息，请参阅 [从 GitHub 运行脚本](integration-remote-scripts.md)。

1. 在 **Targets**（目标）部分中，通过指定标签、手动选择实例或边缘设备或指定资源组，选择要在其上运行此操作的托管式节点。
**提示**  
如果未列出您希望看到的托管式节点，请参阅 [排除托管式节点可用性的问题](fleet-manager-troubleshooting-managed-nodes.md) 以获取故障排除技巧。

1. 在 **Specify schedule (指定计划)** 部分中，使用计划生成器选项创建计划，该计划将指定您希望运行合规性扫描的时间。

1. 对于 **Rate control（速率控制）**：
   + 对于 **Concurrency**（并发），请指定要同时运行该命令的托管式节点的数量或百分比。
**注意**  
如果您通过指定应用于托管式节点的标签或指定 AWS Resource Groups 来选择目标，但不确定有多少个托管式节点已被设为目标，则可通过指定百分比来限制可同时运行该文档的目标的数量。
   + 对于 **Error threshold**（错误阈值），请指定当命令在一定数量或百分比的节点上失败后，何时在其他托管式节点上停止运行该命令。例如，如果您指定三个错误，Systems Manager 将在收到第四个错误时停止发送该命令。仍在处理该命令的托管式节点也可能发送错误。

1. （可选）对于 **输出选项**，要将命令输出保存到文件，请选中 **将命令输出写入 S3 存储桶** 框。在输入框中输入存储桶和前缀（文件夹）名称。
**注意**  
授予将数据写入 S3 存储桶的能力的 S3 权限，是分配给实例的实例配置文件（适用于 EC2 实例）或 IAM 服务角色（混合激活的计算机）的权限，而不是执行此任务的 IAM 用户的权限。有关更多信息，请参阅[配置 Systems Manager 所需的实例权限](setup-instance-permissions.md)或[为混合环境创建 IAM 服务角色](hybrid-multicloud-service-role.md)。此外，如果指定的 S3 存储桶位于不同的 AWS 账户 中，请确保与该托管式节点关联的实例配置文件或 IAM 服务角色具有写入该存储桶的所需权限。

1. 选择**创建关联**。系统将创建关联并自动运行合规性扫描。

1. 等待几分钟，以完成扫描，然后在导航窗格中选择**合规性**。

1. 在**对应的托管式实例**中，找到 **Compliance Type**（合规性类型）列为 **Custom:Inspec** 的节点。

1. 选择一个节点 ID 来查看不合规状态的详细信息。

### 使用 Run Command (AWS CLI) 运行 InSpec 合规性扫描
<a name="integration-chef-inspec-running-cli"></a>

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

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

1. 运行以下命令之一，从 GitHub 或 Amazon S3 运行 InSpec 配置文件。

    命令使用以下参数：
   + **sourceType**：GitHub 或 Amazon S3
   + **sourceInfo**：GitHub 或 S3 存储桶中 InSpec 配置文件文件夹的 URL。该文件夹必须包含基本 InSpec 文件 (\$1.yml) 和所有相关控件 (\$1.rb)。

   **GitHub**

   ```
   aws ssm send-command --document-name "AWS-RunInspecChecks" --targets '[{"Key":"tag:tag_name","Values":["tag_value"]}]' --parameters '{"sourceType":["GitHub"],"sourceInfo":["{\"owner\":\"owner_name\", \"repository\":\"repository_name\", \"path\": \"Inspec.yml_file"}"]}'
   ```

   见下列。

   ```
   aws ssm send-command --document-name "AWS-RunInspecChecks" --targets '[{"Key":"tag:testEnvironment","Values":["webServers"]}]' --parameters '{"sourceType":["GitHub"],"getOptions":"branch:master","sourceInfo":["{\"owner\":\"awslabs\", \"repository\":\"amazon-ssm\", \"path\": \"Compliance/InSpec/PortCheck\"}"]}'
   ```

   **Amazon S3**

   ```
   aws ssm send-command --document-name "AWS-RunInspecChecks" --targets '[{"Key":"tag:tag_name","Values":["tag_value"]}]' --parameters'{"sourceType":["S3"],"sourceInfo":["{\"path\":\"https://s3.aws-api-domain/amzn-s3-demo-bucket/Inspec.yml_file\"}"]}'
   ```

   见下列。

   ```
   aws ssm send-command --document-name "AWS-RunInspecChecks" --targets '[{"Key":"tag:testEnvironment","Values":["webServers"]}]' --parameters'{"sourceType":["S3"],"sourceInfo":["{\"path\":\"https://s3.aws-api-domain/amzn-s3-demo-bucket/InSpec/PortCheck.yml\"}"]}' 
   ```

1. 运行以下命令以查看合规性扫描的摘要。

   ```
   aws ssm list-resource-compliance-summaries --filters Key=ComplianceType,Values=Custom:Inspec
   ```

1. 运行以下命令以查看不合规的节点的详细信息。

   ```
   aws ssm list-compliance-items --resource-ids node_ID --resource-type ManagedInstance --filters Key=DocumentName,Values=AWS-RunInspecChecks
   ```

# 集成 ServiceNow
<a name="integrations-partners-servicenow"></a>

ServiceNow 提供了一个基于云的服务管理系统，用于创建和管理组织级工作流，例如 IT 服务、工单系统和支持。AWS Service Management Connector 将 ServiceNow 与 Systems Manager 集成，以便从 ServiceNow 预置、管理和操作 AWS 资源。您可以使用 AWS 服务管理连接器，将 ServiceNow 与 AWS Systems Manager 中的所有工具（包括 Automation、Change Manager、Incident Manager 和 OpsCenter）集成。

您可以使用 ServiceNow 执行以下任务：
+ 从 Systems Manager 运行自动化 Playbook。
+ 从 Systems Manager OpsItems 查看、更新和解决事件。
+ 通过 Systems Manager OpsCenter 查看和管理操作项，如事件。
+ 从预先批准的更改模板的精选列表中查看和运行 Systems Manager 更改请求。
+ 通过与 Incident Manager 集成，管理和解决涉及 AWS 托管应用程序的事件。

**注意**  
有关如何与 ServiceNow 集成的信息，请参阅《AWS Service Management Connector Administrator Guide**》中的 [Configuring AWS service integrations](https://docs.aws.amazon.com/smc/latest/ag/sn-config-integ.html)。