ECS部署控制
项目描述
Paaws
Paaws是一个CLI,它使AWS服务感觉更像是一个PaaS,例如Heroku或Dokku。它旨在与以下内容协同工作:
- 弹性容器服务(ECS)来运行应用程序进程
- 参数存储用于环境变量/密钥存储
- Cloudwatch日志用于日志记录
- 会话管理器用于shell访问
- Codebuild用于构建镜像和测试
Paaws是由Lincoln Loop创建的,旨在帮助开发者管理和监控在AWS上运行的服务,而无需深入了解AWS本身。我们目前正在使用它来管理生产中的服务。
我们内部创建了一个Terraform模块,用于使用Buildpacks和Procfile启动服务,允许开发者以非常少的配置在AWS上运行新应用程序。我们希望将来将其作为Terraform和/或Cloudformation模块发布。然而,在此期间,CLI设计为通过AWS参数存储中的某些配置与现有系统协同工作。
如果您对Paaws的商业支持感兴趣,请联系我们。
🚧 这是一个早期发布,正在积极开发中。API和命令可能在发布之间发生变化。
安装
CLI需要Python 3.6+。可以通过pip安装
pip install paaws
或者您可以从发布页面下载最新版本,并通过python3 paaws ...
运行它,或者运行chmod +x paaws
并直接运行它,./paaws ...
。
目标
- 开发者友好 开发者应能够在不是AWS专家的情况下使用PaaS。如有疑问,请参考Heroku是如何操作的。
- 原生云 尽可能利用AWS服务。避免仅为了使PaaS功能而运行任何额外的服务。无需额外的维护。
- 安全 遵循最佳通用实践,且与受限制的IAM策略兼容。
开发
python -m venv .venv && . .venv/bin/activate
pip install flit
flit install --symlink --deps develop
在开发中,您可以运行CLI
python -m paaws ...
分发
应用程序可以与shiv一起打包成Python zipapp
make paaws.pyz
术语
AWS
任务(ECS)
一个或多个容器,通常作为服务的一部分运行,但也可以作为一次性的进程运行,例如shell访问、发布过程等。
服务(ECS)
应该像守护进程一样永远运行的任务。可以扩展以运行多个实例。
日志组(Cloudwatch)
日志存储/聚合
容器实例(ECS/EC2)
运行Docker守护进程的虚拟服务器,执行任务。每个实例都是单个集群的一部分(见下文)
Fargate(ECS)
一个无需运行容器实例的AWS托管任务运行器。
集群(ECS)
所有任务都在集群中运行,集群既是一个逻辑边界,也是一个安全边界。
参数存储(SSM)
一组带或不带加密的键/值字符串。通常用于将环境变量注入到任务中。键使用路径样式表示法,权限可以包括通配符,因此键通常定义为/{application_name}/{key}
,权限授予在/{application_name}/*
上。
Paaws
应用程序
一个应用程序由运行所需的所有AWS资源组成。这通常是一个或多个服务、数据库、负载均衡器和多个参数。
配置
与应用程序关联的资源通过一组“合理”的默认值确定,这些默认值可以通过参数存储中的配置覆盖。
默认配置通过提供的应用程序名称生成。如果my-app
是您的应用程序名称,则配置将是
{
"cluster": {"name": "my-app"},
"log_group": {"name": "my-app"},
"parameter_store": {
"prefix": "/my-app",
"chamber_compatible": false
},
"codebuild_project": {"name": "my-app"},
"shell": {
"task_amily": "my-app-shell",
"command": "bash -l"
},
"db_utils": {
"shell_task_family": "my-app-dbutils-shell",
"dumpload_task_family": "my-app-dbutils-dumpload",
"s3_bucket": "myapp-dbutils"
},
"tags": []
}
可以使用tags
值来过滤从集群显示的服务和任务集。请注意,这只是一个视觉上的分离。IAM权限在集群级别处理,因此在此处不提供额外的安全措施。
覆盖
您可以通过创建一个名为/paaws/apps/{appname}/settings
的参数存储键,并在其中包含一个JSON字符串来覆盖默认设置。以下是一个使用AWS CLI的示例
$ aws ssm put-parameter \
--name /paaws/apps/$APPNAME/settings \
--value '{"cluster": {"name": "default"}, "log_group": {"name": "/aws/ecs/default/my-app"}}' \
--type String \
--overwrite
可用命令
builds
查看构建信息
list
列出最近的构建view
查看特定构建的状态logs
查看特定构建的构建或测试日志
config
查看/编辑环境变量
list
应用程序的环境变量get
获取变量的值set
设置变量的值unset
删除(删除)变量
db
执行数据库任务
dump
将数据库转储到本地文件load
用本地转储替换远程数据库shell
运行交互式数据库shell
deployments
列出部署
logs
查看应用程序日志
view
显示应用程序日志console
在Web控制台中打开日志
ps
显示正在运行的容器
shell
在远程环境中打开交互式shell
感谢
Paaws是我们与客户合作在ECS上托管应用程序几年学习的结果。Paaws CLI是在我们与Wharton Interactive合作的过程中诞生的,并得到了他们的祝福,可以作为一个独立的开源项目继续发展。感谢Sarah!🎉
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪一个,请了解有关安装包的更多信息。
源分布
构建分布
paaws-0.1.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | cec91e25d6191e87aea7f900e36d3e6b264219c04c9012aa81c81031d8be781c |
|
MD5 | 3e3763f427709732374c136c42f5c42e |
|
BLAKE2b-256 | 978987a40847511f445db450452ebc0fa197296a329072d22011776f60bbed70 |
paaws-0.1-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 2416429b7e944326c9148d9c1f9b79ba5a7022037f96de2e306a6f3da411c1e3 |
|
MD5 | d2021c7905bf25bb6b57834d375e4aa0 |
|
BLAKE2b-256 | 8bdbacdaeb867890b1979dd19090ad1e3a646e1fde9207b2a0aedf4d2fd3f5b6 |