View a markdown version of this page

Contoh definisi tugas Amazon ECS - Amazon Elastic Container Service

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Contoh definisi tugas Amazon ECS

Anda dapat menyalin contoh dan cuplikan untuk mulai membuat definisi tugas Anda sendiri.

Anda dapat menyalin contoh, lalu menempelkannya saat Anda menggunakan opsi Konfigurasi melalui JSON di konsol. Pastikan untuk menyesuaikan contoh, seperti menggunakan ID akun Anda. Anda dapat menyertakan cuplikan dalam definisi tugas JSON Anda. Untuk informasi selengkapnya, lihat Membuat definisi tugas Amazon ECS menggunakan konsol dan Parameter definisi tugas Amazon ECS untuk Fargate.

Untuk contoh definisi tugas lainnya, lihat AWS Contoh Definisi Tugas pada GitHub.

Webserver

Berikut ini adalah contoh definisi tugas menggunakan wadah Linux di Fargate yang mengatur server 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": "public.ecr.aws/docker/library/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" ] }

Berikut ini adalah contoh definisi tugas menggunakan wadah Windows di Fargate yang mengatur server 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"] }

driver log splunk

Cuplikan berikut menunjukkan cara menggunakan driver splunk log dalam definisi tugas yang mengirimkan log ke layanan jarak jauh. Parameter token Splunk ditetapkan sebagai opsi rahasia karena dapat diperlakukan sebagai data sensitif. Untuk informasi selengkapnya, lihat Meneruskan data sensitif ke wadah Amazon ECS.

"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" }],

driver log fluentd

Cuplikan berikut menunjukkan cara menggunakan driver fluentd log dalam definisi tugas yang mengirimkan log ke layanan jarak jauh. Nilai fluentd-address ditetapkan sebagai opsi rahasia karena dapat diperlakukan sebagai data sensitif. Untuk informasi selengkapnya, lihat Meneruskan data sensitif ke wadah Amazon ECS.

"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 log driver

Cuplikan berikut menunjukkan cara menggunakan driver gelf log dalam definisi tugas yang mengirimkan log ke host jarak jauh yang menjalankan Logstash yang mengambil log Gelf sebagai input. Untuk informasi selengkapnya, lihat 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 } ] }],

Beban kerja pada instans eksternal

Saat mendaftarkan definisi tugas Amazon ECS, gunakan requiresCompatibilities parameter dan tentukan EXTERNAL yang memvalidasi definisi tugas kompatibel untuk digunakan saat menjalankan beban kerja Amazon ECS pada instans eksternal Anda. Jika Anda menggunakan konsol untuk mendaftarkan definisi tugas, Anda harus menggunakan editor JSON. Untuk informasi selengkapnya, lihat Membuat definisi tugas Amazon ECS menggunakan konsol.

penting

Jika tugas Anda memerlukan peran IAM eksekusi tugas, pastikan itu ditentukan dalam definisi tugas.

Ketika Anda men-deploy beban kerja, gunakan tipe peluncuran EXTERNAL ketika membuat layanan atau menjalankan tugas mandiri Anda.

Berikut ini merupakan ketentuan tugas contoh.

Linux
{ "requiresCompatibilities": [ "EXTERNAL" ], "containerDefinitions": [{ "name": "nginx", "image": "public.ecr.aws/nginx/nginx:latest", "memory": 256, "cpu": 256, "essential": true, "portMappings": [{ "containerPort": 80, "hostPort": 8080, "protocol": "tcp" }] }], "networkMode": "bridge", "family": "nginx" }
Windows
{ "requiresCompatibilities": [ "EXTERNAL" ], "containerDefinitions": [{ "name": "windows-container", "image": "mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2019", "memory": 256, "cpu": 512, "essential": true, "portMappings": [{ "containerPort": 80, "hostPort": 8080, "protocol": "tcp" }] }], "networkMode": "bridge", "family": "windows-container" }

Gambar Amazon ECR dan definisi tugas peran IAM

Cuplikan berikut menggunakan gambar Amazon ECR yang disebut aws-nodejs-sample dengan v1 tag dari 123456789012.dkr.ecr.us-west-2.amazonaws.com registri. Wadah dalam tugas ini mewarisi izin IAM dari peran. arn:aws:iam::123456789012:role/AmazonECSTaskS3BucketRole Untuk informasi selengkapnya, lihat Peran IAM tugas Amazon ECS.

{ "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" }

Titik masuk dengan perintah

Cuplikan berikut menunjukkan sintaks untuk wadah Docker yang menggunakan titik masuk dan argumen perintah. Kontainer ini menge-ping example.com empat kali dan kemudian keluar.

{ "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" }

Dependensi kontainer

Cuplikan ini menunjukkan sintaks untuk definisi tugas dengan beberapa wadah di mana ketergantungan kontainer ditentukan. Dalam definisi tugas berikut, envoy wadah harus mencapai status sehat, ditentukan oleh parameter pemeriksaan kesehatan wadah yang diperlukan, sebelum app wadah akan dimulai. Untuk informasi selengkapnya, lihat Dependensi kontainer.

{ "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" }

Volume dalam definisi tugas

Gunakan yang berikut ini untuk memahami cara menentukan volume dalam tugas.

Ketentuan tugas sampel Windows

Berikut ini adalah contoh definisi tugas untuk membantu Anda memulai dengan wadah Windows di Amazon ECS.

contoh Contoh Aplikasi Konsol Amazon ECS untuk Windows

Definisi tugas berikut adalah contoh aplikasi konsol Amazon ECS yang diproduksi di wizard yang dijalankan pertama untuk Amazon ECS; aplikasi ini telah di-porting untuk menggunakan image wadah 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" }