在 AWS SSM Run Command 中编写并执行 Bash 或 Shell 脚本

153次阅读
没有评论

问题描述

希望通过 AWS SSM Run Command 在 Linux 上运行 Bash 或 Shell 脚本,但不想在 Linux 服务器上编写脚本并通过 SSM 命令进行远程执行。他想要直接在 Run Command 中编写脚本。用户提到的脚本是多行脚本,而不仅仅是单个命令。

解决方案

请注意以下操作可能存在版本差异或风险,请在实施前做好备份。

方案1:使用 AWS CloudShell

如果用户位于特定区域,可以使用 AWS 的 “CloudShell” 服务来执行 Shell 脚本。

方案2:使用 AWS Systems Manager Run Command

AWS Systems Manager 的 “Run Command” 功能允许你在 EC2 实例上执行命令。以下是在 Run Command 中执行 Bash 或 Shell 脚本的步骤:

  1. 登录 AWS 控制台。
  2. 导航到 “Systems Manager”。
  3. 选择 “Run Command”。
  4. 点击 “Run a command”。
  5. 在 “Command document” 中,选择 “AWS-RunShellScript”(仅适用于 Linux 平台)。
  6. 在 “Command Parameters” 中,指定要运行的多行脚本或命令。

以下是一个示例的步骤和命令:

  1. 登录 AWS 控制台。
  2. 导航到 “Systems Manager”。
  3. 选择 “Run Command”。
  4. 点击 “Run a command”。
  5. 在 “Command document” 中,选择 “AWS-RunShellScript”。
  6. 在 “Command Parameters” 中,添加一个 commands 参数,该参数包含要执行的多行脚本,如下所示:

json
{
"commands": [
"#!/bin/bash",
"echo 'Hello from AWS SSM Run Command'",
"echo 'This is a multiline script'",
"echo 'You can add more commands here'"
]
}

  1. 选择要执行命令的 EC2 实例。
  2. 点击 “Run” 开始执行脚本。

这将在所选的 EC2 实例上执行指定的 Bash 或 Shell 脚本。

请注意,以上步骤适用于 Linux 平台。如果需要在 Windows 平台上执行脚本,可以搜索关键字 “AWS-RunPowerShellScript” 并按照相应步骤执行。

方案3:使用 AWS CLI

另一种方法是使用 AWS 命令行界面(CLI)在 EC2 实例上执行脚本。以下是示例命令:

aws ssm create-document --name "MyShellScript" --document-type "Command" --document-format "JSON" --content '{
  "schemaVersion": "2.2",
  "description": "My Shell Script",
  "mainSteps": [
    {
      "action": "aws:runShellScript",
      "name": "runShellScript",
      "inputs": {
        "runCommand": [
          "echo \"Hello from AWS SSM Run Command\"",
          "echo \"This is a multiline script\"",
          "echo \"You can add more commands here\""
        ]
      }
    }
  ]
}'

这将创建一个名为 “MyShellScript” 的文档,并将多行脚本作为步骤输入。然后,你可以使用 aws ssm send-command 命令来在 EC2 实例上执行此文档。

方案4:使用其他工具

除了 AWS 提供的工具外,还可以考虑使用第三方工具来执行远程脚本。例如,你可以使用 Ansible、SaltStack 等自动化工具来管理 EC2 实例并执行脚本。

总之,通过 AWS Systems Manager Run Command,你可以方便地在 EC2 实例上执行 Bash 或 Shell 脚本,无需在实例上手动编写和执行。

在执行操作之前,请务必仔细阅读 AWS 文档并做好备份,以免造成不可逆的损失。

正文完