Amazon EC2 Simple Systems Manager (SSM) 代理是为 Simple Systems Manager 服务开发的软件。 SSM 代理是称为“运行命令”的功能的主要组件。
SSM 代理在 EC2 实例上运行,使您能够快速轻松地针对一个或多个实例执行远程命令或脚本。代理使用 SSM 文件。当您执行命令时,实例上的代理会处理文档并按指定配置实例。目前,代理和 Run Command 使您能够使用 AWS-RunShellScript SSM 文档在实例上快速运行 Shell 脚本。 SSM 代理还支持会话管理器功能,让您可以通过基于浏览器的交互式一键式 shell 或通过 AWS CLI 管理 Amazon EC2 实例。第一次在实例上启动会话管理器会话时,代理将创建一个名为“ssm-user”的用户,该用户具有 sudo 或管理员权限。会话管理器会话将在此用户的上下文中启动。
使用 AWS CLI 的 SSM 运行命令演练
使用 AWS 控制台和 CLI 的会话管理器演练
SSM 运行命令故障排除 SSM 会话管理器故障排除
感谢您帮助我们改进 Systems Manager、Run Command 和 Session Manager。请将您的问题或意见发送至 Systems Manager 论坛
安装docker:安装CentOS
打造形象
docker build -t ssm-agent-build-image .
docker run -it --rm --name ssm-agent-build-container -v `pwd`:/amazon-ssm-agent ssm-agent-build-image make build-release
安装 go 入门
安装 rpm-build 和 rpmdevtools
交叉编译SSM代理
运行make build
来构建适用于 Linux、Debian、Windows 环境的 SSM 代理。
运行make build-release
来构建代理并将其打包成 RPM、DEB 和 ZIP 包。
构建完成后会生成以下文件夹:
bin/debian_386
bin/debian_amd64
bin/linux_386
bin/linux_amd64
bin/linux_arm
bin/linux_arm64
bin/windows_386
bin/windows_amd64
请按照用户指南复制并安装SSM代理
要检查整个模块,请调用lint-all
目标。这会在模块中的所有包上执行 golangci-lint 。您可以使用.golangci.yml
文件使用不同的 linter 配置 golangci-lint。
有关 golangci-lint 安装说明,请参阅 https://golangci-lint.run/usage/install/ 有关 golangci-lint 配置文件的更多信息,请参阅 https://golangci-lint.run/usage/configuration/ 有关更多信息使用的 linter 参见 https://golangci-lint.run/usage/linters/
要使用供应商依赖项,建议的 GOPATH 格式为:
以下目标可用。每个都可以使用make
运行。
制定目标 | 描述 |
---|---|
build | (默认) build 为 Linux、Debian、Darwin 和 Windows amd64 和 386 环境构建代理 |
build-release | build-release 检查代码风格和覆盖范围,构建代理并将其打包成 RPM、DEB 和 ZIP 包 |
release | release 检查代码风格和覆盖率,运行测试,将所有依赖项打包到 bin 文件夹。 |
package | package 包 将结果构建为 RPM、DEB 和 ZIP 包 |
pre-build | pre-build 会遍历 Tools/src 文件夹以确保所有脚本文件都是可执行的 |
checkstyle | checkstyle 运行 checkstyle 脚本 |
analyze-install | analyze-install 安装静态分析依赖项以供本地使用 |
analyze | analyze 运行静态分析脚本以查找可能的漏洞 |
quick-integtest | quick-integtest 使用go test 运行标记有集成的所有测试 |
quick-test | quick-test 使用go test 运行所有测试,包括集成和单元测试 |
coverage | coverage 运行所有测试并计算代码覆盖率 |
build-linux | build-linux 构建在 Linux amd64 环境中执行的代理 |
build-windows | build-windows 构建在 Windows amd64 环境中执行的代理 |
build-darwin | build-darwin 构建在 Darwin amd64 环境中执行的代理 |
build-linux-386 | build-linux-386 构建在 Linux 386 环境中执行的代理 |
build-windows-386 | build-windows-386 构建在 Windows 386 环境中执行的代理 |
build-darwin-386 | build-darwin-386 构建在 Darwin 386 环境中执行的代理 |
build-arm | build-arm 构建在arm环境中执行的代理 |
build-arm64 | build-arm64 构建在arm64环境中执行的代理 |
lint-all | lint-all 在所有包上运行 golangci-lint。 golangci-lint 由 .golangci.yml 配置 |
package-rpm | package-rpm 构建代理并将其打包到基于 Linux amd64 的发行版的 RPM 包中 |
package-deb | package-deb 构建代理并将其打包到基于 Debian amd64 的发行版的 DEB 包中 |
package-win | package-win 构建代理并将其打包到 ZIP 包中 基于 Windows amd64 的发行版 |
package-rpm-386 | package-rpm-386 构建代理并将其打包到基于 Linux 386 的发行版的 RPM 包中 |
package-deb-386 | package-deb-386 构建代理并将其打包到基于 Debian 386 的发行版的 DEB 包中 |
package-win-386 | package-win-386 构建代理并将其打包到基于 Windows 386 的发行版的 ZIP 包中 |
package-rpm-arm64 | package-rpm-arm64 构建代理并将其打包到 RPM 包中 基于 Linux arm64 的发行版 |
package-deb-arm | package-deb-arm 构建代理并将其打包到 DEB 包中 基于 Debian arm 的发行版 |
package-deb-arm64 | package-deb-arm64 构建代理并将其打包到基于 Debian arm64 的发行版的 DEB 包中 |
package-linux | package-linux 为基于 Linux 和 Debian 的发行版创建更新包 |
package-windows | package-windows 为基于 Windows 的发行版创建更新包 |
package-darwin | package-darwin 为基于 Darwin 的发行版创建更新包 |
get-tools | get-tools 使用go get get 获取 gocode 和 oracle |
clean | clean 删除构建工件 |
欢迎贡献和反馈!提案和拉取请求将被考虑并回复。请参阅 CONTRIBUTING.md 文件以获取更多信息。
Amazon Web Services 目前不提供对此软件的修改副本的支持。
要为代理设置您自己的自定义配置:
SSM 代理源代码发布到 github 后,安装包最多可能需要 2 周的时间才能传播到所有 AWS 区域。
以下命令可用于拉取VERSION
文件并检查某个区域中可用的最新代理。
curl https://s3.{region}.amazonaws.com/amazon-ssm-{region}/latest/VERSION
{region}
替换为us-east-1
等区域代码。curl https://s3.{region}.amazonaws.com.cn/amazon-ssm-{region}/latest/VERSION
{region}
替换为区域代码cn-north-1
、 cn-northwest-1
。curl https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/VERSION
Amazon SSM 代理根据 Apache 2.0 许可证获得许可。