跳转到主要内容

ECS部署控制

项目描述

Paaws

Build

Paaws是一个CLI,它使AWS服务感觉更像是一个PaaS,例如HerokuDokku。它旨在与以下内容协同工作:

Paaws是由Lincoln Loop创建的,旨在帮助开发者管理和监控在AWS上运行的服务,而无需深入了解AWS本身。我们目前正在使用它来管理生产中的服务。

我们内部创建了一个Terraform模块,用于使用BuildpacksProcfile启动服务,允许开发者以非常少的配置在AWS上运行新应用程序。我们希望将来将其作为Terraform和/或Cloudformation模块发布。然而,在此期间,CLI设计为通过AWS参数存储中的某些配置与现有系统协同工作。

如果您对Paaws的商业支持感兴趣,请联系我们

🚧 这是一个早期发布,正在积极开发中。API和命令可能在发布之间发生变化。

安装

CLI需要Python 3.6+。可以通过pip安装

pip install paaws

或者您可以从发布页面下载最新版本,并通过python3 paaws ...运行它,或者运行chmod +x paaws并直接运行它,./paaws ...

目标

  1. 开发者友好 开发者应能够在不是AWS专家的情况下使用PaaS。如有疑问,请参考Heroku是如何操作的。
  2. 原生云 尽可能利用AWS服务。避免仅为了使PaaS功能而运行任何额外的服务。无需额外的维护。
  3. 安全 遵循最佳通用实践,且与受限制的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 (13.5 kB 查看哈希值)

上传时间 源代码

构建分布

paaws-0.1-py3-none-any.whl (16.8 kB 查看哈希值)

上传时间 Python 3

由以下支持