Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Exemples de définitions de ECS tâches Amazon
Vous pouvez copier les exemples et les extraits de code pour commencer à créer vos propres définitions de tâches.
Vous pouvez copier les exemples, puis les coller lorsque vous utilisez l'JSONoption Configurer via de la console. Assurez-vous de personnaliser les exemples, en utilisant par exemple votre ID de compte. Vous pouvez inclure les extraits dans la définition de votre tâche. JSON Pour plus d’informations, consultez Création d'une définition de ECS tâche Amazon à l'aide de la console et Paramètres de définition des ECS tâches Amazon.
Pour d'autres exemples de définition de tâches, voir AWS Exemples de définitions de tâches
Rubriques
serveur Web
Voici un exemple de définition de tâche à l'aide des conteneurs Linux du type de lancement Fargate qui configure un serveur web :
{ "containerDefinitions": [ { "command": [ "/bin/sh -c \"echo '<html> <head> <title>Amazon ECS Sample App</title> <style>body {margin-top: 40px; background-color: #333;} </style> </head><body> <div style=color:white;text-align:center> <h1>Amazon ECS Sample App</h1> <h2>Congratulations!</h2> <p>Your application is now running on a container in Amazon ECS.</p> </div></body></html>' > /usr/local/apache2/htdocs/index.html && httpd-foreground\"" ], "entryPoint": [ "sh", "-c" ], "essential": true, "image": "httpd:2.4", "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-group" : "/ecs/fargate-task-definition", "awslogs-region": "us-east-1", "awslogs-stream-prefix": "ecs" } }, "name": "sample-fargate-app", "portMappings": [ { "containerPort": 80, "hostPort": 80, "protocol": "tcp" } ] } ], "cpu": "256", "executionRoleArn": "arn:aws:iam::
012345678910
:role/ecsTaskExecutionRole", "family": "fargate-task-definition", "memory": "512", "networkMode": "awsvpc", "runtimePlatform": { "operatingSystemFamily": "LINUX" }, "requiresCompatibilities": [ "FARGATE" ] }
Voici un exemple de définition de tâche à l'aide des conteneurs Windows du type de lancement Fargate qui configure un serveur web :
{ "containerDefinitions": [ { "command": ["New-Item -Path C:\\inetpub\\wwwroot\\index.html -Type file -Value '<html> <head> <title>Amazon ECS Sample App</title> <style>body {margin-top: 40px; background-color: #333;} </style> </head><body> <div style=color:white;text-align:center> <h1>Amazon ECS Sample App</h1> <h2>Congratulations!</h2> <p>Your application is now running on a container in Amazon ECS.</p>'; C:\\ServiceMonitor.exe w3svc"], "entryPoint": [ "powershell", "-Command" ], "essential": true, "cpu": 2048, "memory": 4096, "image": "mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2019", "name": "sample_windows_app", "portMappings": [ { "hostPort": 80, "containerPort": 80, "protocol": "tcp" } ] } ], "memory": "4096", "cpu": "2048", "networkMode": "awsvpc", "family": "windows-simple-iis-2019-core", "executionRoleArn": "arn:aws:iam::012345678910:role/ecsTaskExecutionRole", "runtimePlatform": {"operatingSystemFamily": "WINDOWS_SERVER_2019_CORE"}, "requiresCompatibilities": ["FARGATE"] }
splunk
pilote de journal
L'extrait suivant montre comment utiliser le pilote de journal splunk
dans une définition de tâche qui envoie les journaux à un service distant. Le paramètre de jeton Splunk est spécifiée en tant qu'option secrète, car il peut être traité comme des données sensibles. Pour de plus amples informations, veuillez consulter Transférer des données sensibles vers un ECS conteneur Amazon.
"containerDefinitions": [{ "logConfiguration": { "logDriver": "splunk", "options": { "splunk-url": "
https://cloud.splunk.com:8080
", "tag": "tag_name
", }, "secretOptions": [{ "name": "splunk-token", "valueFrom": "arn:aws:secretsmanager:region
:aws_account_id
:secret:splunk-token-KnrBkD
" }],
fluentd
pilote de journal
L'extrait suivant montre comment utiliser le pilote de journal fluentd
dans une définition de tâche qui envoie les journaux à un service distant. La valeur fluentd-address
est spécifiée en tant qu'option secrète, car elle peut être traitée comme des données sensibles. Pour de plus amples informations, veuillez consulter Transférer des données sensibles vers un ECS conteneur Amazon.
"containerDefinitions": [{ "logConfiguration": { "logDriver": "fluentd", "options": { "tag": "
fluentd demo
" }, "secretOptions": [{ "name": "fluentd-address", "valueFrom": "arn:aws:secretsmanager:region
:aws_account_id
:secret:fluentd-address-KnrBkD
" }] }, "entryPoint": [], "portMappings": [{ "hostPort": 80, "protocol": "tcp", "containerPort": 80 }, { "hostPort": 24224, "protocol": "tcp", "containerPort": 24224 }] }],
gelf
pilote de journal
L'extrait suivant montre comment utiliser le pilote de journal gelf
dans une définition de tâche qui envoie les journaux à un hôte distant exécutant Logstash qui accepte les journaux Gelf sous forme d'entrée. Pour de plus amples informations, veuillez consulter logConfiguration.
"containerDefinitions": [{ "logConfiguration": { "logDriver": "gelf", "options": { "gelf-address": "
udp://logstash-service-address:5000
", "tag": "gelf task demo
" } }, "entryPoint": [], "portMappings": [{ "hostPort": 5000, "protocol": "udp", "containerPort": 5000 }, { "hostPort": 5000, "protocol": "tcp", "containerPort": 5000 } ] }],
Charges de travail sur les instances externes
Lorsque vous enregistrez une définition de ECS tâche Amazon, utilisez le requiresCompatibilities
paramètre et spécifiez EXTERNAL
ce qui confirme que la définition de tâche est compatible lors de l'exécution de ECS charges de travail Amazon sur vos instances externes. Si vous utilisez la console pour enregistrer une définition de tâche, vous devez utiliser l'JSONéditeur. Pour de plus amples informations, veuillez consulter Création d'une définition de ECS tâche Amazon à l'aide de la console.
Important
Si vos tâches nécessitent un IAM rôle d'exécution de tâches, assurez-vous qu'il est spécifié dans la définition de la tâche.
Lorsque vous déployez votre application, utilisez le type de lancement EXTERNAL
lors de la création de votre service ou de l'exécution de votre tâche autonome.
Voici un exemple de définition de tâche.
ECRImage Amazon et IAM rôle de définition des tâches
L'extrait suivant utilise une ECR image Amazon appelée aws-nodejs-sample
avec la v1
balise du 123456789012.dkr.ecr.us-west-2.amazonaws.com
registre. Le conteneur de cette tâche hérite IAM des autorisations du arn:aws:iam::123456789012:role/AmazonECSTaskS3BucketRole
rôle. Pour de plus amples informations, veuillez consulter IAMRôle de ECS tâche Amazon.
{ "containerDefinitions": [ { "name": "sample-app", "image": "123456789012.dkr.ecr.us-west-2.amazonaws.com/aws-nodejs-sample:v1", "memory": 200, "cpu": 10, "essential": true } ], "family": "example_task_3", "taskRoleArn": "arn:aws:iam::123456789012:role/AmazonECSTaskS3BucketRole" }
Point d'entrée avec commande
L'extrait suivant illustre la syntaxe d'un conteneur Docker qui utilise un point d'entrée et un argument de commande. Ce conteneur enverra un ping à google.com
quatre fois, puis il s'arrêtera.
{ "containerDefinitions": [ { "memory": 32, "essential": true, "entryPoint": ["ping"], "name": "alpine_ping", "readonlyRootFilesystem": true, "image": "alpine:3.4", "command": [ "-c", "4", "example.com" ], "cpu": 16 } ], "family": "example_task_2" }
Dépendances du conteneur
Cet extrait illustre la syntaxe d'une définition de tâche avec plusieurs conteneurs où la dépendance de conteneur est spécifiée. Dans la définition de tâche suivante, le conteneur envoy
doit atteindre un état sain, déterminé par les paramètres de surveillance de l'état du conteneur requis avant que le conteneur app
démarre. Pour de plus amples informations, veuillez consulter Dépendances du conteneur.
{ "family": "
appmesh-gateway
", "runtimePlatform": { "operatingSystemFamily": "LINUX" }, "proxyConfiguration":{ "type": "APPMESH", "containerName": "envoy", "properties": [ { "name": "IgnoredUID", "value": "1337" }, { "name": "ProxyIngressPort", "value": "15000" }, { "name": "ProxyEgressPort", "value": "15001" }, { "name": "AppPorts", "value": "9080
" }, { "name": "EgressIgnoredIPs", "value": "169.254.170.2,169.254.169.254" } ] }, "containerDefinitions": [ { "name": "app", "image": "application_image
", "portMappings": [ { "containerPort":9080
, "hostPort":9080
, "protocol": "tcp" } ], "essential": true, "dependsOn": [ { "containerName": "envoy", "condition": "HEALTHY" } ] }, { "name": "envoy", "image": "840364872350.dkr.ecr.region-code
.amazonaws.com/aws-appmesh-envoy:v1.15.1.0-prod", "essential": true, "environment": [ { "name": "APPMESH_VIRTUAL_NODE_NAME", "value": "mesh/meshName
/virtualNode/virtualNodeName
" }, { "name": "ENVOY_LOG_LEVEL", "value": "info" } ], "healthCheck": { "command": [ "CMD-SHELL", "echo hello" ], "interval": 5, "timeout": 2, "retries": 3 } } ], "executionRoleArn": "arn:aws:iam::123456789012
:role/ecsTaskExecutionRole
", "networkMode": "awsvpc" }
Exemples de définitions de tâche Windows
Voici un exemple de définition de tâche pour vous aider à démarrer avec les conteneurs Windows sur AmazonECS.
Exemple d'application Amazon ECS Console pour Windows
La définition de tâche suivante est l'exemple d'application de la ECS console Amazon produit dans l'assistant de première exécution pour Amazon ECS ; elle a été portée pour utiliser l'image du conteneur microsoft/iis
Windows.
{ "family": "windows-simple-iis", "containerDefinitions": [ { "name": "windows_sample_app", "image": "mcr.microsoft.com/windows/servercore/iis", "cpu": 1024, "entryPoint":["powershell", "-Command"], "command":["New-Item -Path C:\\inetpub\\wwwroot\\index.html -Type file -Value '<html> <head> <title>Amazon ECS Sample App</title> <style>body {margin-top: 40px; background-color: #333;} </style> </head><body> <div style=color:white;text-align:center> <h1>Amazon ECS Sample App</h1> <h2>Congratulations!</h2> <p>Your application is now running on a container in Amazon ECS.</p>'; C:\\ServiceMonitor.exe w3svc"], "portMappings": [ { "protocol": "tcp", "containerPort": 80 } ], "memory": 1024, "essential": true } ], "networkMode": "awsvpc", "memory": "1024", "cpu": "1024" }