https://github.com/ipeterov/ecs-deployer-boto3
Deploy applications to AWS ECS using boto3 and pydantic.
https://github.com/ipeterov/ecs-deployer-boto3
Last synced: 28 days ago
JSON representation
Deploy applications to AWS ECS using boto3 and pydantic.
- Host: GitHub
- URL: https://github.com/ipeterov/ecs-deployer-boto3
- Owner: ipeterov
- License: mit
- Created: 2026-05-16T11:06:11.000Z (about 2 months ago)
- Default Branch: main
- Last Pushed: 2026-05-16T12:25:41.000Z (about 2 months ago)
- Last Synced: 2026-05-16T13:41:44.023Z (about 2 months ago)
- Language: Python
- Homepage:
- Size: 77.1 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# ecs-deployer-boto3
Deploy applications to AWS ECS using boto3 and pydantic.
This library provides a thin, typed wrapper over the AWS ECS deployment API.
It is decoupled from how you discover or provision your infrastructure
(CloudFormation, CDK, Terraform, or by hand) — you describe your services as
pydantic models and the library handles registering task definitions, creating
or updating services, cleaning up old revisions, and monitoring deployments.
Supports both EC2 (with placement strategy / constraints) and Fargate (with
capacity provider strategy and `awsvpc` network configuration).
## Installation
```bash
pip install ecs-deployer-boto3
```
## Usage
```python
import boto3
from ecs_deployer_boto3 import (
ApplicationUpdater,
Container,
DeploymentMonitor,
Service,
Task,
)
services = [
Service(
name='web',
cluster='my-cluster',
task_definition=Task(
family='web',
containers=[
Container(
name='web',
image='123456789.dkr.ecr.us-east-1.amazonaws.com/web:latest',
port_mappings=[{'container_port': 8000}],
),
],
cpu='256',
memory='512',
requires_compatibilities=['FARGATE'],
),
launch_type='FARGATE',
network_configuration={
'subnets': ['subnet-abc'],
'security_groups': ['sg-abc'],
'assign_public_ip': 'ENABLED',
},
),
]
session = boto3.Session()
updater = ApplicationUpdater(services, session)
updater.update_application(environment={'FOO': 'bar'})
monitor = DeploymentMonitor(services, session)
monitor.monitor(limit_minutes=15)
```
## License
MIT