跳转到主要内容

fuzzbucket命令行客户端

项目描述

fuzzbucket

fuzzbucket API和fuzzbucket-client命令行工具旨在协同工作,为人类提供一种简化的方式来对托管VPC中临时EC2实例(“盒子”)执行类似于“CRUD”的操作。

此外,还有一个定期功能将终止过时的盒子。

asciicast

这适合我吗?

可能。

如果您熟悉通过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 (16.6 kB 查看哈希值)

上传时间 Python 3

支持者