4 个版本
0.3.1 | 2024 年 2 月 13 日 |
---|---|
0.3.0 | 2024 年 2 月 11 日 |
0.2.1 | 2024 年 1 月 15 日 |
0.2.0 | 2024 年 1 月 15 日 |
#437 在 网络编程
30KB
139 行
可用的 AWS 弹性网络接口(ENI)
总结每个 AWS 弹性网络接口(ENI)的状态。可选地删除每个状态为“可用”的 ENI。
这是一个非常小巧的工具,基本上只做一件事:清理那些似乎从我们定期构建和拆除的非常复杂的 terraform 配置中落出的散弹网络接口。
这个工具非常快。它并发地删除所有可用的 ENI。
内置帮助
简洁
available-enis -h
Count and optionally delete available AWS Elastic Networks
Usage: available-enis [OPTIONS]
Options:
-d, --delete Delete "available" ENIs
-p, --profile <PROFILE> AWS profile to use
-r, --region <REGION> AWS region to target
-h, --help Print help (see more with '--help')
-V, --version Print version
完整
available-enis --help
Summarize the status of every AWS Elastic Network Interface,
ENI. Optionally, delete every ENI with a status of "available".
You can set the environment variable `RUST_LOG` to adjust
logging, for example `RUST_LOG=trace available-enis`
Usage: available-enis [OPTIONS]
Options:
-d, --delete
Delete "available" ENIs
-p, --profile <PROFILE>
AWS profile to use.
This overrides the standard (and complex!) AWS
profile handling.
-r, --region <REGION>
AWS region to target.
This override the standard (and complex!) AWS region
handling.
-h, --help
Print help (see a summary with '-h')
-V, --version
Print version
安装
通过 shell 脚本安装预构建的二进制文件
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/bruceadams/available-enis/releases/latest/download/available-enis-installer.sh | sh
通过 powershell 脚本安装预构建的二进制文件
irm https://github.com/bruceadams/available-enis/releases/latest/download/available-enis-installer.ps1 | iex
将预构建的二进制文件安装到您的 npm 项目中
npm install available-enis
或使用 npx
安装和运行二进制文件
npx available-enis --help
通过 Homebrew 安装预构建的二进制文件
brew install bruceadams/homebrew-utilities/available-enis
通过 cargo binstall 安装预构建的二进制文件
cargo binstall available-enis
下载
文件 | 平台 | 校验和 |
---|---|---|
available-enis-aarch64-apple-darwin.tar.gz | macOS Apple Silicon | 校验和 |
available-enis-x86_64-apple-darwin.tar.gz | macOS Intel | 校验和 |
available-enis-x86_64-pc-windows-msvc.zip | Windows x64 | 校验和 |
available-enis-x86_64-unknown-linux-gnu.tar.gz | Linux x64 | 校验和 |
available-enis-x86_64-unknown-linux-musl.tar.gz | musl Linux x64 | 校验和 |
available-enis-x86_64-pc-windows-msvc.msi | Windows x64 | 校验和 |
构建
这是一个简单的 Rust 项目,使用 Cargo。在安装 Rust(我强烈推荐使用 Rustup)之后,cargo build
应该“只需工作”。
背景
我一直使用以下 Bash 脚本,它使用 AWS CLI。这个脚本很慢,每秒删除约两个 ENI,并且信息不多。
用 Rust 编写一个坚实的程序可能有点过度设计问题。我很高兴有一个实用的用例来编写另一个 Rust CLI。我很高兴这个工具默认不进行任何更改,只是报告它找到的 ENI 状态的数量。
#!/usr/bin/env bash
set -euo pipefail
available_enis=$(
aws ec2 describe-network-interfaces |
jq -r '.NetworkInterfaces[] | select( .Status == "available" ) | .NetworkInterfaceId'
)
if [[ "$available_enis" ]]; then
echo "Found $(echo -n "$available_enis" | wc -l) available enis"
for eni in $available_enis; do
echo "$eni"
aws ec2 delete-network-interface --network-interface-id "$eni"
done
else
echo No available enis found
fi
依赖项
~79MB
~1M SLoC