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

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

安装 Amazon Systems Manager 代理

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

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

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

如果您尚未执行此操作,请完成的常规设置步骤Amazon Systems Manager。有关更多信息,请参阅《Amazon Systems Manager用户指南》中的 “完成一般 Systems Manager 设置步骤”。

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

Systems Manager 代理使用 Amazon Identity and Access Management (IAM) 服务角色与之通信Amazon Systems Manager。Systems Manager 扮演此角色是为了在每台核心设备上启用 Systems Manager 功能。在部署核心设备时,Systems Manager Agent 组件还使用此角色将核心设备注册为 Systems Manager 托管节点。如果您尚未这样做,请创建 Systems Manager 服务角色以供系统管理器代理组件使用。有关更多信息,请参阅Amazon Systems Manager用户指南中的为边缘设备创建 IAM 服务角色

步骤 3:为令牌交换角色添加权限

Greengrass 核心设备使用 IAM 服务角色(称为令牌交换角色)与服务进行交互。Amazon每台核心设备都有您在安装 Core 软件时创建的Amazon IoT Greengrass令牌交换角色。许多 Greengrass 组件,例如 Systems Manager Agent,都需要对该角色的额外权限。Systems Manager 代理组件需要以下权限,其中包括使用您在中创建的角色的权限步骤 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 代理运行。您可以向令牌交换角色添加新策略以授予此权限。

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

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

  3. 在 “权限” 下,选择 “添加权限”,然后选择 “附加策略”。

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

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

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

    2. 将下面的 策略粘贴到 JSON 编辑器中。将 SSM ServiceRole 替换为您在中创建的服务角色的步骤 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 代理策略。

  7. 选择附加策略

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

添加授予使用 Systems Manager 权限的策略
  1. 创建一个名为的文件,ssm-agent-component-policy.json并将以下 JSON 复制到该文件中。将 SSM ServiceRole 替换为您在中创建的服务角色的步骤 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. 运行以下命令将策略附加到令牌交换角色。

    • GreenGrassV2 TokenExchangeRole 替换为您在安装 Core 软件时指定的令牌交换角色的名称。Amazon IoT Greengrass如果您在安装 C Amazon IoT Greengrass ore 软件时没有为令牌交换角色指定名称,则它会创建一个名为的角色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 代理组件

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

  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 模式的 “配置更新” 下,在 “要合并的配置” 中,输入以下配置更新。将 SSM ServiceRole 替换为您在中创建的服务角色的步骤 2:为 Systems Manager 创建 IAM 服务角色名称。

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

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

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

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

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

  9. Review(检查)页上,选择 Deploy(部署)。

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

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

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

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

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

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

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

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

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

当 Systems Manager 代理组件运行时,它会在 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 Managerping 状态属性来检查核心设备上 Systems Manager 代理的状态。当状态为 “在线” 时,您可以使用 Systems Manager 管理核心设备。

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

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

    1. 在 “来源” 类型所在的位置添加过滤器AWS::IoT::Thing

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

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

    您还可以找到 S ystems Manager 代理 ping 状态属性来检查核心设备上 Systems Manager 代理的状态。当状态为 “在线” 时,您可以使用 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 功能的更多信息,请参阅《用户指南》中的 Systems Manager 功能。Amazon Systems Manager