How to find the number of allocated vcpus inside a Fargate task?

0

We want to dynamically configure an application running on Fargate ECS to have one thread for each vcpu allocated to it.

The application parameter can be configured via an environment variable.

I'd like to fetch the number of vcpu's allocated from inside the task container and set the environment variable before starting the application.

Is there a way (e.g. a file under /sys, for instnace?) to fetch this when the task starts up?

Amos
gefragt vor 8 Monaten409 Aufrufe
1 Antwort
2
Akzeptierte Antwort

Hi, if you simply want to get the number of threads in a task, you can run the following command.

root@ip-172-31-1-51:/usr/local/apache2# python3 -c 'import os; print(os.cpu_count())'
2

If you definitely want to get the number of vCPUs, you need to run aws ecs describe-task-definition command to fetch the vCPU info.

root@ip-172-31-1-51:/usr/local/apache2# PAGER=cat aws ecs describe-task-definition --task-definition MyTaskDefinition --query "taskDefinition.cpu" --output text
256
profile picture
HS
beantwortet vor 8 Monaten
profile picture
EXPERTE
überprüft vor 24 Tagen
profile pictureAWS
EXPERTE
überprüft vor 8 Monaten
  • Yes, section ContainerDefinitions provides what you are after: "containerDefinitions": [ { "environment": [], "name": "wordpress", "links": [ "mysql" ], "mountPoints": [], "image": "wordpress", "essential": true, "portMappings": [ { "containerPort": 80, "hostPort": 80 } ], "memory": 500, "cpu": 10, "volumesFrom": [] },

  • Thank you. It looks like the Python command you suggest would do the trick, assuming you mean that it can execute inside the container.

    The other answer will be trickier since I want to fetch this information from inside the container itself, without requiring direct AWS API access.

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen