#django #amazon-web-services #database-migration #github-actions #aws-fargate
Вопрос:
У меня возникла проблема с одноразовой задачей fargate , она предназначена для запуска миграции базы данных, а затем остановки, но она продолжает оставаться в рабочем состоянии
это определение задачи :
resource "aws_ecs_task_definition" "migrate" {
family = "${var.project_name}-${var.environment}-migrate"
network_mode = "awsvpc"
requires_compatibilities = ["FARGATE"]
cpu = 512
memory = 1024
execution_role_arn = aws_iam_role.ecs_task_execution_role.arn
task_role_arn = aws_iam_role.ecs_task_execution_role.arn
container_definitions = <<DEFINITION
[
{
"name": "${var.project_name}-migrate",
"image": "${var.repository_url}:latest",
"cpu": 512,
"memory": 1024,
"command": [
"/bin/sh",
"-c",
"python manage.py migrate --no-input"
],
"mountPoints": [],
"environment": [
{
"name": "DJANGO_SETTINGS_MODULE",
"value": "****"
},
{
"name": "DB_HOST",
"value": "****"
},
{
"name": "DD_API_KEY",
"value": "****"
}
],
"secrets": [
{
"name": "SECRETS",
"valueFrom": "*****"
}
],
"logConfiguration": {
"logDriver": "awslogs",
"options": {
"awslogs-group": "****",
"awslogs-region": "****",
"awslogs-stream-prefix": "******"
}
},
"volumesFrom": []
}
]
DEFINITION
}
и вот как я называю это из действий github
aws ecs run-task --launch-type FARGATE --cluster cs-name --task-definition $MIGRATE_TASK_ARN --network-configuration "awsvpcConfiguration={subnets=[${{ secrets.MIGRATE_TASK_SUBNET_IDA }}, ${{ secrets.MIGRATE_TASK_SUBNET_IDB }}],securityGroups=${{ secrets.MIGRATE_TASK_SECURITY_GROUP_ID }}}"
есть идеи, что случилось ?
Ответ №1:
Я думаю, это зависит от того, что command
он делает. Когда основной процесс в контейнере завершится, контейнеры остановятся, и задача остановится. Один из способов проверить поведение-запустить что-то подобное ls
(или подобное) и посмотреть, что произойдет. Мне интересно, связана ли проблема с тем, что вы вызываете оболочку, а затем программу на python, и когда программа выходит из оболочки, контейнер остается в живых? Вы пробовали просто запустить программу на python?
"command": "python manage.py migrate --no-input",
Комментарии:
1. да, уже пробовал, хотя я вижу в журналах, что gunicorn запущен, чего, я думаю, быть не должно