使用 Run Command 发送返回状态通知的命令 - Amazon Systems Manager
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

使用 Run Command 发送返回状态通知的命令

以下过程显示了如何使用 Amazon Command Line Interface (Amazon CLI) 或 Amazon Systems Manager 控制台通过配置为返回状态通知的 Run Command(它是 Amazon Systems Manager 的一项功能)来发送命令。

发送返回通知的 Run Command(控制台)

可以使用以下过程,通过配置为使用 Systems Manager 控制台返回状态通知的 Run Command 来发送命令。

发送返回通知的命令(控制台)

  1. 访问 https://console.aws.amazon.com/systems-manager/,打开 Amazon Systems Manager 控制台。

  2. 在导航窗格中,选择 Run Command

    -或者-

    如果首先打开 Amazon Systems Manager 主页,选择菜单图标 ( ) 以打开导航窗格,然后选择 Run Command

  3. 选择 Run command (运行命令)

  4. 命令文档列表中,请选择 Systems Manager 文档。

  5. Command parameters (命令参数) 部分中,为必需的参数指定值。

  6. Targets(目标)部分中,通过指定标签、手动选择实例或边缘设备或指定资源组,选择要在其上运行此操作的托管式节点。

    注意

    如果未列出您希望看到的托管式节点,请参阅 排除托管式节点可用性的问题 以获取故障排除技巧。

  7. 对于 Other parameters (其他参数)

    • 对于 Comment (注释),请输入有关此命令的信息。

    • 对于 Timeout (seconds) (超时 (秒)),请指定在整个命令执行失败之前系统等待的秒数。

  8. 对于 Rate control (速率控制)

    • 对于 Concurrency(并发),请指定要同时运行该命令的托管式节点的数量或百分比。

      注意

      如果您通过指定应用于托管式节点的标签或指定 Amazon Resource Groups 来选择目标,但不确定有多少个托管式节点已被设为目标,则可通过指定百分比来限制可同时运行该文档的目标的数量。

    • 对于 Error threshold(错误阈值),请指定当命令在一定数量或百分比的节点上失败后,何时在其他托管式节点上停止运行该命令。例如,如果您指定三个错误,Systems Manager 将在收到第四个错误时停止发送该命令。仍在处理该命令的托管式节点也可能发送错误。

  9. (可选)对于 输出选项,要将命令输出保存到文件,请选中 将命令输出写入 S3 存储桶 框。在输入框中输入存储桶和前缀(文件夹)名称。

    注意

    授予将数据写入 S3 存储桶的能力的 S3 权限,是分配给实例的实例配置文件(适用于 EC2 实例)或 IAM 服务角色(本地计算机)的权限,而不是执行此任务的 IAM 用户的权限。有关更多信息,请参阅为 Systems Manager 创建 IAM 实例配置文件为混合环境创建 IAM 服务角色。此外,如果指定的 S3 存储桶位于不同的 Amazon Web Services 账户 中,请确保与该托管式节点关联的实例配置文件或 IAM 服务角色具有写入该存储桶的所需权限。

  10. SNS Notifications (SNS 通知) 部分中,选择 Enable SNS notifications (启用 SNS 通知)

  11. 对于 IAM role(IAM 角色),选择您在使用 Amazon SNS 通知监控 Systems Manager 状态更改的“任务 3”中创建的 Amazon SNS IAM 角色 ARN。

  12. 对于 SNS topic (SNS 主题),请输入要使用的 Amazon SNS 主题 ARN。

  13. 对于 Event notifications (事件通知),请选择要针对其接收通知的事件。

  14. 对于 Change notifications(更改通知),选择 Command status changes(命令状态更改)以仅接收命令摘要的通知,或者 Command status on each instance changes(每个实例的命令状态更改)以接收发送到多个节点的命令的每个副本。

  15. 选择 Run (运行)

  16. 检查您的电子邮件以查找来自 Amazon SNS 的邮件,然后打开该电子邮件。Amazon SNS 可能需要几分钟来发送该电子邮件。

发送返回通知的 Run Command (CLI)

可以使用以下过程,通过配置为使用 Amazon CLI 返回状态通知的 Run Command 来发送命令。

发送返回通知的命令 (CLI)

  1. 打开 Amazon CLI。

  2. 在以下命令中指定参数,以基于托管式节点 ID 设定目标。

    aws ssm send-command --instance-ids "ID-1, ID-2" --document-name "Name" --parameters '{"commands":["input"]}' --service-role "SNSRoleARN" --notification-config '{"NotificationArn":"SNSTopicName","NotificationEvents":["All"],"NotificationType":"Command"}'

    以下为示例。

    aws ssm send-command --instance-ids "i-02573cafcfEXAMPLE, i-0471e04240EXAMPLE" --document-name "AWS-RunPowerShellScript" --parameters '{"commands":["Get-Process"]}' --service-role "arn:aws:iam::111122223333:role/SNS_Role" --notification-config '{"NotificationArn":"arn:aws:sns:us-east-1:111122223333:SNSTopic","NotificationEvents":["All"],"NotificationType":"Command"}'

    替代命令

    在以下命令中指定参数,以使用标签设定托管实例目标。

    aws ssm send-command --targets "Key=tag:TagName,Values=TagKey" --document-name "Name" --parameters '{"commands":["input"]}' --service-role "SNSRoleARN" --notification-config '{"NotificationArn":"SNSTopicName","NotificationEvents":["All"],"NotificationType":"Command"}'

    以下为示例。

    aws ssm send-command --targets "Key=tag:Environment,Values=Dev" --document-name "AWS-RunPowerShellScript" --parameters '{"commands":["Get-Process"]}' --service-role "arn:aws:iam::111122223333:role/SNS_Role" --notification-config '{"NotificationArn":"arn:aws:sns:us-east-1:111122223333:SNSTopic","NotificationEvents":["All"],"NotificationType":"Command"}'
  3. Enter 键。

  4. 检查您的电子邮件以查找来自 Amazon SNS 的邮件,然后打开该电子邮件。Amazon SNS 可能需要几分钟来发送该电子邮件。

有关更多信息,请参阅 Amazon CLI 命令参考中的 send-command