Contoh definisi ECS tugas Amazon - 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 ECS tugas Amazon

Anda dapat menyalin contoh dan potongan untuk mulai membuat ketentuan tugas Anda sendiri.

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

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

Webserver

Berikut ini adalah contoh ketentuan tugas menggunakan kontainer Linux pada tipe peluncuran 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": "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 ketentuan tugas menggunakan kontainer Windows pada tipe peluncuran 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"] }

splunkdriver log

Cuplikan berikut menunjukkan cara menggunakan driver splunk log dalam ketentuan 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 ECS wadah 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" }],

fluentddriver log

Cuplikan berikut menunjukkan cara menggunakan driver fluentd log dalam ketentuan 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 ECS wadah 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 }] }],

gelfdriver log

Cuplikan berikut menunjukkan cara menggunakan driver gelf log dalam ketentuan tugas yang mengirimkan log ke host jarak jauh dan menjalankan Logstash yang menggunakan 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 ketentuan ECS tugas Amazon, gunakan requiresCompatibilities parameter dan tentukan EXTERNAL yang memvalidasi bahwa ketentuan tugas kompatibel untuk digunakan saat menjalankan ECS beban kerja Amazon pada instans eksternal Anda. Jika Anda menggunakan konsol untuk mendaftarkan definisi tugas, Anda harus menggunakan JSON editor. Untuk informasi selengkapnya, lihat Membuat definisi ECS tugas Amazon menggunakan konsol.

penting

Jika tugas Anda memerlukan IAM peran eksekusi tugas, maka pastikan bahwa peran tersebut ditentukan dalam ketentuan 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" }

Peran definisi ECR IAM gambar dan tugas Amazon

Cuplikan berikut menggunakan ECR gambar Amazon yang disebut aws-nodejs-sample dengan v1 tag dari registri123456789012.dkr.ecr.us-west-2.amazonaws.com. Wadah dalam tugas ini mewarisi IAM izin dari peran. arn:aws:iam::123456789012:role/AmazonECSTaskS3BucketRole Untuk informasi selengkapnya, lihat IAMPeran ECS tugas 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" }

Entrypoint dengan perintah

Potongan berikut menunjukkan sintaksis untuk kontainer Docker yang menggunakan titik entri 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

Potongan ini menunjukkan sintaksis untuk ketentuan tugas dengan beberapa kontainer tempat dependensi kontainer ditentukan. Dalam ketentuan tugas berikut, envoy kontainer harus mencapai status sehat, ditentukan oleh parameter pemeriksaan kesehatan kontainer yang diperlukan, sebelum app kontainer mulai. 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" }

Ketentuan tugas sampel Windows

Berikut ini adalah sampel ketentuan tugas untuk membantu Anda memulai dengan kontainer Windows di AmazonECS.

contoh Aplikasi Sampel ECS Konsol Amazon untuk Windows

Ketentuan tugas berikut adalah aplikasi sampel ECS konsol Amazon yang diproduksi di wizard yang dijalankan pertama kali untuk AmazonECS; telah di-port untuk menggunakan citra kontainer 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" }