fuzzbucket命令行客户端
项目描述
fuzzbucket
fuzzbucket
API和fuzzbucket-client
命令行工具旨在协同工作,为人类提供一种简化的方式来对托管VPC中临时EC2实例(“盒子”)执行类似于“CRUD”的操作。
此外,还有一个定期功能将终止过时的盒子。
这适合我吗?
可能。
如果您熟悉通过AWS authz直接访问EC2,用于管理从任意AMIs启动的实例,且具有类似复杂网络需求,那么fuzzbucket
可能不适合。
如果您需要默认情况下EC2实例运行超过几小时/几天,那么fuzzbucket
可能不是您所需要的。
使用方法
当与已部署的fuzzbucket
API一起工作时,可以使用fuzzbucket-client
完成所有这些事情
# install fuzzbucket-client via pip with python3.9+
pip install fuzzbucket-client
# get some help
fuzzbucket-client --help
如本帮助文本所述,客户端工具需要通过以下环境变量配置API URL
# e.g.:
export FUZZBUCKET_URL='https://fuzzbucket.example.com/prod'
如果您有权访问API配置工具和资源,此值将在部署结束时打印,并通过
serverless
/sls
工具(使用npx sls info --stage prod
)提供。:warning: 如果没有
serverless
/sls
工具和必要的AWS访问权限,您必须从有权访问的人那里获取此值。
如何选择管理这个环境变量完全取决于您,例如将其包含在您的shell配置文件中(如~/.bashrc
、~/.zshrc
)或使用direnv之类的工具。
开发
开发的基本要求是
仅仅是
yarn
hatch
在macOS上,可以使用brew
安装just
工具,以及其他方式,如这里所述。同样,可以使用brew
在macOS上安装yarn
工具,以及其他方式,如这里所述。可以使用pip
安装hatch
工具。
一旦这些基本要求可用,默认的工作流程几乎与github工作流程中捕获的相同。
just deps
# BEGIN editing, linting, testing loop {
# edit edit edit
just lint
just test
# } END editing, linting, testing loop
部署
部署fuzzbucket
API需要AWS凭证,以便创建由serverless
框架管理的所有资源以及serverless配置中定义的额外资源。
基本要求
定义一个YAML配置文件和环境变量,通过serverless.yml
使用它,例如
cp -v ./default-config.yml ./my-config.yml
# edit ./my-config.yml
export FUZZBUCKET_CONFIG_prod='my-config.yml'
./default-config.yml
的副本包含有关文件结构和含义的注释。
注意:现有的部署可能正在使用“custom”一词的配置格式和环境变量,例如
FUZZBUCKET_CUSTOM_prod=custom-mine.yml
。此格式不再受支持,必须通过lint-config
脚本来迁移到新格式。hatch run lint-config ./custom-mine.yml >my-config.yml # edit ./my-config.yml export FUZZBUCKET_CONFIG_prod='my-config.yml'
可选的IAM角色自定义
如果lambda函数使用的IAM角色需要自定义,可以通过定义YAML文件和环境变量来完成,例如
cp -v ./default-iam-role-statements.yml ./my-iam-role-statements.yml
# edit ./my-iam-role-statements.yml
export FUZZBUCKET_IAM_ROLE_STATEMENTS_prod='my-iam-role-statements.yml'
可选的CloudFormation资源自定义
如果通过serverless.yml
管理的CloudFormation资源需要自定义,可以通过定义YAML文件和环境变量来完成,例如
cp -v ./default-resources.yml ./my-resources.yml
# edit ./my-resources.yml
export FUZZBUCKET_RESOURCES_prod='my-resources.yml'
配置和自定义的组合
由于每个配置和自定义文件都通过一个不同的顶级键合并,因此它们可以合并并作为一个单独的文件管理,例如
cat \
./my-config.yml \
<(echo) \
./my-iam-role-statements.yml \
<(echo) \
./my-resources.yml | tee ./combo-config.yml
# edit ./combo-config.yml
export FUZZBUCKET_CONFIG_prod='combo-config.yml'
export FUZZBUCKET_RESOURCES_prod='combo-config.yml'
export FUZZBUCKET_IAM_ROLE_STATEMENTS_prod='combo-config.yml'
管理生命周期
在部署之前,应通过lint-config
脚本来检查配置文件。
# output a diff, if any:
hatch run lint-config --diff ./path-to-config.yml
# write back the complete config to the same path:
hatch run lint-config --write ./path-to-config.yml
just deploy
目标将运行必要的serverless
命令来创建整个结构。
# deploy to STAGE=dev in REGION=us-east-1
just deploy
# deploy to STAGE=prod in REGION=us-west-2
just deploy prod us-west-2
这些命令预计需要根据需要重新运行,例如在修改上述基本要求中描述的YAML配置后。
变更日志
请参阅变更日志。
许可证
请参阅许可证。
项目详情
fuzzbucket_client-0.15.0-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | d3c8693b66ee7577b43051329a18545b324ebd3b12f5aabb4a7fcbe2b1e97296 |
|
MD5 | 51e530f6281fe5a8a254757575d666d5 |
|
BLAKE2b-256 | c44014f8d334064e224823115b992b339cc70c49d98891a033f5a7664f3ff2b3 |