问题描述
希望通过 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 脚本的步骤:
- 登录 AWS 控制台。
- 导航到 “Systems Manager”。
- 选择 “Run Command”。
- 点击 “Run a command”。
- 在 “Command document” 中,选择 “AWS-RunShellScript”(仅适用于 Linux 平台)。
- 在 “Command Parameters” 中,指定要运行的多行脚本或命令。
以下是一个示例的步骤和命令:
- 登录 AWS 控制台。
- 导航到 “Systems Manager”。
- 选择 “Run Command”。
- 点击 “Run a command”。
- 在 “Command document” 中,选择 “AWS-RunShellScript”。
- 在 “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'"
]
}
- 选择要执行命令的 EC2 实例。
- 点击 “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 文档并做好备份,以免造成不可逆的损失。