5个版本 (重大更改)
0.5.0 | 2024年2月19日 |
---|---|
0.4.0 | 2024年1月19日 |
0.3.0 | 2023年10月7日 |
0.2.0 | 2023年10月7日 |
0.1.0 | 2023年10月7日 |
#16 in #ec2
每月47次下载
33KB
642 行
aws-ec2
在AWS EC2实例上运行命令的工具。
目的
在开发实际软件时,我们通常希望在我们的代码上测试许多特定环境;这些环境往往是它将被部署的环境,这通常将是AWS EC2。
这可能需要像buildjet这样的服务,或者更复杂的基设,这可能需要消耗开发者时间。
这个项目是从我对firecracker和nix的工作中激发出来的,并思考如何简化它们的CI以及保持相同级别的平台覆盖率。
与上述解决方案不同,它可以在任何地方运行,无需任何设置*。贡献者可以自己测试代码,无需维护者干预。
*)不幸的是,某些事情(如AWS EC2 vcpu限制)是无法避免的,所以在像firecracker这样的应用程序中,它将启动多个非常大的.metal
实例,需要具有特定设置的AWS账户来支持此功能。
概述
它创建自己的资源并在完成后清理。
过程大致如下
- 创建密钥对。
- 创建安全组。
- 如果提供了
--path
,将目录压缩成一个.tar.gz
存档。 - 启动实例。
- 如果提供了
--path
,将.tar.gz
存档复制过去。 - 如果提供了
--path
,解压.tar.gz
存档。 - 运行
--command
。 - 终止实例。
- 删除密钥对。
- 删除安全组。
安装
cargo +nightly install aws-ec2
示例
默认
默认情况下,它运行以下命令:cat /proc/cpuinfo && uname -a && ls
。
AWS_ACCESS_KEY_ID=<public key> \
AWS_SECRET_ACCESS_KEY=<private key> \
AWS_DEFAULT_REGION=eu-west-2 \
aws-ec2 --instance t2.medium --ami ami-0eb260c4d5475b901
Rust Hello World!
在 t2.medium
Ubuntu 22.04 系统上,使用 32gb EBS 卷运行 Hello World!
:
AWS_ACCESS_KEY_ID=<public key> \
AWS_SECRET_ACCESS_KEY=<private key> \
AWS_DEFAULT_REGION=eu-west-2 \
aws-ec2 \
--size 32 \
--instance t2.medium \
--ami ami-0eb260c4d5475b901 \
--command "\
echo \"debconf debconf/frontend select Noninteractive\" | sudo debconf-set-selections \
&& sudo apt-get -y update \
&& sudo apt-get -y install build-essential \
&& curl https://sh.rustup.rs -sSf | sh -s -- -y \
&& \$HOME/.cargo/bin/cargo new hello-world \
&& cd hello-world \
&& \$HOME/.cargo/bin/cargo run \
"
测试 Rust 项目
如果您想在 t2.medium
Ubuntu 22.04 和 t4g.medium
Ubuntu 22.04 上使用 32gb EBS 卷测试您的代码,您可以运行:
AWS_ACCESS_KEY_ID=<public key> \
AWS_SECRET_ACCESS_KEY=<private key> \
AWS_DEFAULT_REGION=eu-west-2 \
aws-ec2 \
--size 32 \
--instance t2.medium \
--ami ami-0eb260c4d5475b901 \
--command "\
echo \"debconf debconf/frontend select Noninteractive\" | sudo debconf-set-selections \
&& sudo apt-get -y update \
&& sudo apt-get -y install git build-essential \
&& curl https://sh.rustup.rs -sSf | sh -s -- -y \
&& git clone --depth 1 --branch <branch> <repo> <directory> \
&& cd <directory> \
&& \$HOME/.cargo/bin/cargo test \
"
如果您想使用本地文件,可以运行:
AWS_ACCESS_KEY_ID=<public key> \
AWS_SECRET_ACCESS_KEY=<private key> \
AWS_DEFAULT_REGION=eu-west-2 \
aws-ec2 \
--size 32 \
--instance t2.medium,t4g.medium \
--ami ami-0eb260c4d5475b901,ami-0e3f80b3d2a794117 \
--path <path to your project>
--command "\
echo \"debconf debconf/frontend select Noninteractive\" | sudo debconf-set-selections \
&& sudo apt-get -y update \
&& sudo apt-get -y install build-essential \
&& curl https://sh.rustup.rs -sSf | sh -s -- -y \
&& \$HOME/.cargo/bin/cargo test \
"
依赖关系
~81MB
~1M SLoC