安装 Amazon Systems Manager 代理 - Amazon IoT Greengrass
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

安装 Amazon Systems Manager 代理

Amazon Systems Manager Agent(Systems Manager Agent)是您安装的 Amazon 软件,用于允许 Systems Manager 更新、管理和配置 Greengrass 核心设备、Amazon EC2 实例和其他资源。Agent 在 Amazon Web Services 云 中处理并运行 Systems Manager 服务的请求。然后,Agent 将状态和运行时间信息发送回 Systems Manager 服务。有关更多信息,请参阅《Amazon Systems Manager 用户指南》中的关于 Systems Manager Agent

Amazon 提供的 Systems Manager Agent 是一个 Greengrass 组件,您可以将其部署到 Greengrass 核心设备上,以便使用 Systems Manager 对其进行管理。Systems Manager Agent 组件安装 Systems Manager Agent 软件,并将核心设备注册为 Systems Manager 中的托管节点。按照本页面上的步骤完成先决条件,将 Systems Manager Agent 组件部署到核心一个设备或一组核心设备。

步骤 1:完成常规 Systems Manager 设置步骤

如果您尚未完成对应步骤,请完成适用于 Amazon Systems Manager 的常规设置步骤。有关更多信息,请参阅《Amazon Systems Manager 用户指南》中的完成常规 Systems Manager 设置步骤

第 2 步:为 Systems Manager 创建 IAM 服务角色

Systems Manager Agent 使用 Amazon Identity and Access Management(IAM)服务角色与 Amazon Systems Manager 通信。Systems Manager 承担此角色是为了在每台核心设备上启用 Systems Manager 功能。在部署组件时,Systems Manager Agent 组件还使用此角色将核心设备注册为 Systems Manager 托管节点。如果您尚未执行对应步骤,请创建一个 Systems Manager 服务角色以供 Systems Manager Agent 组件使用。有关更多信息,请参阅《Amazon Systems Manager 用户指南》https://docs.amazonaws.cn/systems-manager/latest/userguide/systems-manager-setting-up-edge-devices.html中的为边缘设备创建 IAM 服务角色

第 3 步:向令牌交换角色添加权限

Greengrass 核心设备使用 IAM 服务角色(称为令牌交换角色)来与 Amazon 服务进行交互。每台核心设备都有一个您在安装 Amazon IoT Greengrass Core 软件时创建的令牌交换角色。许多 Greengrass 组件,例如 Systems Manager Agent,都需要此角色的额外权限。Systems Manager Agent 组件需要以下权限,其中包括使用您在 第 2 步:为 Systems Manager 创建 IAM 服务角色 中创建的角色的权限。

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "iam:PassRole" ], "Effect": "Allow", "Resource": [ "arn:aws:iam::account-id:role/SSMServiceRole" ] }, { "Action": [ "ssm:AddTagsToResource", "ssm:RegisterManagedInstance" ], "Effect": "Allow", "Resource": "*" } ] }

如果您尚未执行对应步骤,请将这些权限添加到核心设备的令牌交换角色中,以允许 Systems Manager Agent 运行。您可以向令牌交换角色添加新策略以授予此权限。

  1. IAM 控制台导航菜单中,选择角色

  2. 选择您在安装 Amazon IoT Greengrass Core 软件时设置为令牌交换角色的 IAM 角色。如果您在安装 Amazon IoT Greengrass Core 软件时没有为令牌交换角色指定名称,则它会创建一个名为 GreengrassV2TokenExchangeRole 的角色。

  3. 权限下,选择添加权限,然后选择附加策略

  4. 选择创建策略。将在新的浏览器选项卡中打开创建策略页。

  5. 创建策略页面上,执行以下操作:

    1. 选择 JSON 以打开 JSON 编辑器。

    2. 将下面的 策略粘贴到 JSON 编辑器中。将 SSMServiceRole 替换为您在 第 2 步:为 Systems Manager 创建 IAM 服务角色 中创建的服务角色的名称。

      { "Version": "2012-10-17", "Statement": [ { "Action": [ "iam:PassRole" ], "Effect": "Allow", "Resource": [ "arn:aws:iam::account-id:role/SSMServiceRole" ] }, { "Action": [ "ssm:AddTagsToResource", "ssm:RegisterManagedInstance" ], "Effect": "Allow", "Resource": "*" } ] }
    3. 选择下一步:标签

    4. 选择下一步:审核

    5. 输入策略的名称,例如 GreengrassSSMAgentComponentPolicy

    6. 选择创建策略

    7. 切换到您在其中打开令牌交换角色的上一个浏览器选项卡。

  6. 添加权限页面上,选择刷新按钮,然后选择您在上一步中创建的 Greengrass Systems Manager Agent 策略。

  7. 选择附加策略

    使用此令牌交换角色的核心设备现在有权与 Systems Manager 服务进行交互。

添加授予使用 Systems Manager 权限的策略
  1. 创建一个名为 ssm-agent-component-policy.json 的文件,并将以下 JSON 复制到该文件中。将 SSMServiceRole 替换为您在 第 2 步:为 Systems Manager 创建 IAM 服务角色 中创建的服务角色的名称。

    { "Version": "2012-10-17", "Statement": [ { "Action": [ "iam:PassRole" ], "Effect": "Allow", "Resource": [ "arn:aws:iam::account-id:role/SSMServiceRole" ] }, { "Action": [ "ssm:AddTagsToResource", "ssm:RegisterManagedInstance" ], "Effect": "Allow", "Resource": "*" } ] }
  2. 运行以下命令,从 ssm-agent-component-policy.json 中的策略文档创建策略。

    Linux or Unix
    aws iam create-policy \ --policy-name GreengrassSSMAgentComponentPolicy \ --policy-document file://ssm-agent-component-policy.json
    Windows Command Prompt (CMD)
    aws iam create-policy ^ --policy-name GreengrassSSMAgentComponentPolicy ^ --policy-document file://ssm-agent-component-policy.json
    PowerShell
    aws iam create-policy ` --policy-name GreengrassSSMAgentComponentPolicy ` --policy-document file://ssm-agent-component-policy.json

    从输出中的策略元数据复制策略 Amazon 资源名称(ARN)。您将在下一步中使用此 ARN 来将此策略附加到核心设备角色。

  3. 运行以下命令以将策略附加到令牌交换角色。

    • GreengrassV2TokenExchangeRole 替换为您在安装 Amazon IoT Greengrass Core 软件时指定的令牌交换角色名称。如果您在安装 Amazon IoT Greengrass Core 软件时没有为令牌交换角色指定名称,则它会创建一个名为 GreengrassV2TokenExchangeRole 的角色。

    • 将策略 ARN 替换为上一步中的 ARN。

    Linux or Unix
    aws iam attach-role-policy \ --role-name GreengrassV2TokenExchangeRole \ --policy-arn arn:aws:iam::123456789012:policy/GreengrassSSMAgentComponentPolicy
    Windows Command Prompt (CMD)
    aws iam attach-role-policy ^ --role-name GreengrassV2TokenExchangeRole ^ --policy-arn arn:aws:iam::123456789012:policy/GreengrassSSMAgentComponentPolicy
    PowerShell
    aws iam attach-role-policy ` --role-name GreengrassV2TokenExchangeRole ` --policy-arn arn:aws:iam::123456789012:policy/GreengrassSSMAgentComponentPolicy

    如果命令没有输出,则表示成功。使用此令牌交换角色的核心设备现在有权与 Systems Manager 服务进行交互。

第 4 步:部署 Systems Manager Agent 组件

完成以下步骤,部署和配置 Systems Manager Agent 组件。您可以将组件部署到一个核心设备或一组核心设备。

  1. Amazon IoT Greengrass 控制台导航菜单中,选择组件

  2. 组件页面上,选择公有组件选项卡,然后选择 aws.greengrass.SystemsManagerAgent

  3. aws.greengrass.SystemsManagerAgent 页面上,选择部署

  4. 添加到部署中,选择要修改的现有部署,或者选择创建新部署,然后选择下一步

  5. 如果您选择创建新部署,请为部署选择目标核心设备或事物组。在指定目标页面的部署目标下面,选择核心设备或事物组,然后选择下一步

  6. 选择组件页面上,确认已选择 aws.greengrass.SystemsManagerAgent 组件,然后选择下一步

  7. 配置组件页面上,选择 aws.greengrass.SystemsManagerAgent,然后执行以下操作:

    1. 选择配置组件

    2. 配置 aws.greengrass.SystemsManagerAgent 模式的配置更新要合并的配置中,输入以下配置更新。将 SSMServiceRole 替换为您在 第 2 步:为 Systems Manager 创建 IAM 服务角色 中创建的服务角色的名称。

      { "SSMRegistrationRole": "SSMServiceRole", "SSMOverrideExistingRegistration": false }
      注意

      如果核心设备已经运行通过混合激活注册的 Systems Manager Agent,请将 SSMOverrideExistingRegistration 更改为 true。此参数指定当 Systems Manager Agent 已经通过混合激活在设备上运行时,Systems Manager Agent 组件是否注册核心设备。

      您还可以指定要添加到 Systems Manager Agent 组件为核心设备创建的 Systems Manager 托管节点的标签 (SSMResourceTags)。有关更多信息,请参阅 Systems Manager Agent 组件配置

    3. 选择确认以关闭模式,然后选择下一步

  8. 配置高级设置页面上,保留默认配置设置,然后选择下一步

  9. 检查 页上,选择 部署

    完成部署可能最多需要 1 分钟。

要部署 Systems Manager Agent 组件,请创建 components 对象中包含 aws.greengrass.SystemsManagerAgent 的部署文档,并指定该组件的配置更新。按照 创建部署 中的说明创建新部署或修改现有部署。

以下示例部分部署文档指定使用名为 SSMServiceRole 的服务角色。将 SSMServiceRole 替换为您在 第 2 步:为 Systems Manager 创建 IAM 服务角色 中创建的服务角色的名称。

{ ..., "components": { ..., "aws.greengrass.SystemsManagerAgent": { "componentVersion": "1.0.0", "configurationUpdate": { "merge": "{\"SSMRegistrationRole\":\"SSMServiceRole\",\"SSMOverrideExistingRegistration\":false}" } } } }
注意

如果核心设备已经运行通过混合激活注册的 Systems Manager Agent,请将 SSMOverrideExistingRegistration 更改为 true。此参数指定当 Systems Manager Agent 已经通过混合激活在设备上运行时,Systems Manager Agent 组件是否注册核心设备。

您还可以指定要添加到 Systems Manager Agent 组件为核心设备创建的 Systems Manager 托管节点的标签 (SSMResourceTags)。有关更多信息,请参阅 Systems Manager Agent 组件配置

完成部署可能需要数分钟。您可以使用 Amazon IoT Greengrass 服务来检查部署状态,也可以检查 Amazon IoT Greengrass Core 软件日志和 Systems Manager Agent 组件日志,以验证 Systems Manager Agent 是否成功运行。有关更多信息,请参阅下列内容:

如果部署失败或 Systems Manager Agent 无法运行,则可以对每台核心设备上的部署进行故障排除。有关更多信息,请参阅下列内容:

步骤 5:使用 Systems Manager 验证核心设备注册情况

当 Systems Manager Agent 组件运行时,它会在 Systems Manager 中将核心设备注册为托管节点。您可以使用 Amazon IoT Greengrass 控制台、Systems Manager 控制台和 Systems Manager API 来验证核心设备是否已注册为托管节点。在 Amazon 控制台和 API 的某些部分中,托管节点也被称为实例。

  1. Amazon IoT Greengrass 控制台导航菜单中,选择核心设备

  2. 选择要验证的核心设备。

  3. 在核心设备的详细信息页面上,找到 Amazon Systems Manager 实例属性。如果存在此属性并显示指向 Systems Manager 控制台的链接,则核心设备已注册为托管节点。

    您还可以找到 Amazon Systems Manager ping 状态属性以检查核心设备上 Systems Manager Agent 的状态。当状态为在线时,您可以使用 Systems Manager 管理核心设备。

  1. Systems Manager 控制台导航菜单中,选择 Fleet Manager

  2. 托管节点下,执行以下操作:

    1. 添加一个过滤器,其中源类型AWS::IoT::Thing

    2. 添加一个过滤器,其中源 ID 是要验证的核心设备的名称。

  3. 托管节点表中找到核心设备。如果核心设备在表中,则其注册为托管节点。

    您还可以找到 Systems Manager Agent ping 状态属性以检查核心设备上 Systems Manager Agent 的状态。当状态为在线时,您可以使用 Systems Manager 管理核心设备。

  • 使用 DescribeInstanceInformation 操作来获取与您指定的过滤器相匹配的托管节点列表。运行以下命令以验证核心设备是否已注册为托管节点。将 MyGreengrassCore 替换为要验证的核心设备的名称。

    aws ssm describe-instance-information --filter Key=SourceIds,Values=MyGreengrassCore Key=SourceTypes,Values=AWS::IoT::Thing

    响应包含与过滤器匹配的托管节点列表。如果列表中包含托管节点,则核心设备已注册为托管节点。您还可以在响应中找到有关核心设备托管节点的其他信息。如果 PingStatus 属性为 Online,则可以使用 Systems Manager 管理核心设备。

验证核心设备已在 Systems Manager 中注册为托管节点后,您可以使用 Systems Manager 控制台和 API 来管理该核心设备。有关可用于管理 Greengrass 核心设备的 Systems Manager 功能的更多信息,请参阅《Amazon Systems Manager 用户指南》中的 Systems Manager 功能