Membuat ECS tugas Amazon untuk jenis EC2 peluncuran dengan AWS CLI - Amazon Elastic Container Service

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

Membuat ECS tugas Amazon untuk jenis EC2 peluncuran dengan AWS CLI

Langkah-langkah berikut ini membantu Anda untuk mengatur sebuah klaster, mendaftarkan ketentuan tugas, menjalankan tugas, dan melakukan skenario umum lainnya di Amazon ECS dengan AWS CLI. Gunakan versi terbaru dari AWS CLI. Untuk informasi selengkapnya tentang cara meningkatkan ke versi terbaru, lihat Menginstal atau memperbarui ke versi terbaru AWS CLI.

Prasyarat

Tutorial ini mengasumsikan bahwa prasyarat berikut telah diselesaikan:

Langkah 1: Buat Klaster

Secara default, akun Anda menerima klaster default ketika Anda meluncurkan instans kontainer pertama Anda.

catatan

Manfaat menggunakan klaster default yang disediakan untuk Anda adalah Anda tidak perlu menentukan opsi --cluster cluster_name dalam perintah berikutnya. Jika Anda membuat klaster non-default sendiri, Anda harus menentukan --cluster cluster_name untuk setiap perintah yang ingin Anda gunakan dengan klaster itu.

Buat klaster Anda sendiri dengan nama yang unik menggunakan perintah berikut:

aws ecs create-cluster --cluster-name MyCluster

Output:

{ "cluster": { "clusterName": "MyCluster", "status": "ACTIVE", "clusterArn": "arn:aws:ecs:region:aws_account_id:cluster/MyCluster" } }

Langkah 2: Luncurkan Instans dengan Amazon ECS AMI

Anda harus memiliki instans ECS penampung Amazon di klaster Anda sebelum dapat menjalankan tugas di klaster tersebut. Jika Anda tidak memiliki instans kontainer di klaster Anda, lihat Meluncurkan instans penampung Amazon ECS Linux untuk informasi selengkapnya.

Langkah 3: Buat Daftar Instans Kontainer

Dalam beberapa menit setelah meluncurkan instans kontainer Anda, ECS agen Amazon mendaftarkan instans dengan klaster default Anda. Anda dapat membuat daftar instans kontainer dalam klaster dengan menjalankan perintah berikut:

aws ecs list-container-instances --cluster default

Output:

{ "containerInstanceArns": [ "arn:aws:ecs:us-east-1:aws_account_id:container-instance/container_instance_ID" ] }

Langkah 4: Jelaskan Instans Kontainer Anda

Setelah Anda memiliki ARN atau ID instans kontainer, Anda dapat menggunakan describe-container-instances perintah untuk mendapatkan informasi berharga terkait instans, seperti sumber daya yang tersisa CPU dan terdaftar dan memori.

aws ecs describe-container-instances --cluster default --container-instances container_instance_ID

Output:

{ "failures": [], "containerInstances": [ { "status": "ACTIVE", "registeredResources": [ { "integerValue": 1024, "longValue": 0, "type": "INTEGER", "name": "CPU", "doubleValue": 0.0 }, { "integerValue": 995, "longValue": 0, "type": "INTEGER", "name": "MEMORY", "doubleValue": 0.0 }, { "name": "PORTS", "longValue": 0, "doubleValue": 0.0, "stringSetValue": [ "22", "2376", "2375", "51678" ], "type": "STRINGSET", "integerValue": 0 }, { "name": "PORTS_UDP", "longValue": 0, "doubleValue": 0.0, "stringSetValue": [], "type": "STRINGSET", "integerValue": 0 } ], "ec2InstanceId": "instance_id", "agentConnected": true, "containerInstanceArn": "arn:aws:ecs:us-west-2:aws_account_id:container-instance/container_instance_ID", "pendingTasksCount": 0, "remainingResources": [ { "integerValue": 1024, "longValue": 0, "type": "INTEGER", "name": "CPU", "doubleValue": 0.0 }, { "integerValue": 995, "longValue": 0, "type": "INTEGER", "name": "MEMORY", "doubleValue": 0.0 }, { "name": "PORTS", "longValue": 0, "doubleValue": 0.0, "stringSetValue": [ "22", "2376", "2375", "51678" ], "type": "STRINGSET", "integerValue": 0 }, { "name": "PORTS_UDP", "longValue": 0, "doubleValue": 0.0, "stringSetValue": [], "type": "STRINGSET", "integerValue": 0 } ], "runningTasksCount": 0, "attributes": [ { "name": "com.amazonaws.ecs.capability.privileged-container" }, { "name": "com.amazonaws.ecs.capability.docker-remote-api.1.17" }, { "name": "com.amazonaws.ecs.capability.docker-remote-api.1.18" }, { "name": "com.amazonaws.ecs.capability.docker-remote-api.1.19" }, { "name": "com.amazonaws.ecs.capability.logging-driver.json-file" }, { "name": "com.amazonaws.ecs.capability.logging-driver.syslog" } ], "versionInfo": { "agentVersion": "1.5.0", "agentHash": "b197edd", "dockerVersion": "DockerVersion: 1.7.1" } } ] }

Anda juga dapat menemukan ID EC2 instans Amazon yang dapat Anda gunakan untuk memantau instance di EC2 konsol Amazon atau dengan aws ec2 describe-instances --instance-id instance_id perintah.

Langkah 5: Daftarkan Definisi Tugas

Sebelum Anda dapat menjalankan tugas di ECS klaster Anda, Anda harus mendaftarkan ketentuan tugas. Ketentuan tugas adalah daftar kontainer yang dikelompokkan bersama. Contoh berikut adalah ketentuan tugas sederhana yang menggunakan citra busybox dari Docker Hub dan hanya tidur selama 360 detik. Untuk informasi selengkapnya tentang parameter ketentuan tugas yang tersedia, lihat ECSKetentuan tugas Amazon.

{ "containerDefinitions": [ { "name": "sleep", "image": "busybox", "cpu": 10, "command": [ "sleep", "360" ], "memory": 10, "essential": true } ], "family": "sleep360" }

Contoh di atas JSON dapat diteruskan ke AWS CLI dalam dua cara: Anda dapat menyimpan definisi tugas JSON sebagai file dan meneruskannya dengan --cli-input-json file://path_to_file.json opsi. Atau, Anda dapat menghindari tanda kutip di JSON dan meneruskan ketentuan JSON kontainer pada baris perintah seperti pada contoh di bawah ini. Jika Anda memilih untuk meneruskan ketentuan kontainer pada baris perintah, maka perintah Anda juga memerlukan parameter --family yang digunakan untuk menjaga beberapa versi ketentuan tugas Anda yang terkait satu sama lain.

Untuk menggunakan JSON file untuk ketentuan kontainer:

aws ecs register-task-definition --cli-input-json file://$HOME/tasks/sleep360.json

Untuk menggunakan JSON string untuk ketentuan kontainer:

aws ecs register-task-definition --family sleep360 --container-definitions "[{\"name\":\"sleep\",\"image\":\"busybox\",\"cpu\":10,\"command\":[\"sleep\",\"360\"],\"memory\":10,\"essential\":true}]"

register-task-definition mengembalikan deskripsi ketentuan tugas setelah menyelesaikan pendaftarannya.

{ "taskDefinition": { "volumes": [], "taskDefinitionArn": "arn:aws:ec2:us-east-1:aws_account_id:task-definition/sleep360:1", "containerDefinitions": [ { "environment": [], "name": "sleep", "mountPoints": [], "image": "busybox", "cpu": 10, "portMappings": [], "command": [ "sleep", "360" ], "memory": 10, "essential": true, "volumesFrom": [] } ], "family": "sleep360", "revision": 1 } }

Langkah 6: Buat Daftar Definisi Tugas

Anda dapat membuat daftar ketentuan tugas untuk akun Anda kapan pun dengan perintah list-task-definitions. Output dari perintah ini menunjukkan nilai family dan revision yang dapat Anda gunakan bersama saat memanggil run-task atau start-task.

aws ecs list-task-definitions

Output:

{ "taskDefinitionArns": [ "arn:aws:ec2:us-east-1:aws_account_id:task-definition/sleep300:1", "arn:aws:ec2:us-east-1:aws_account_id:task-definition/sleep300:2", "arn:aws:ec2:us-east-1:aws_account_id:task-definition/sleep360:1", "arn:aws:ec2:us-east-1:aws_account_id:task-definition/wordpress:3", "arn:aws:ec2:us-east-1:aws_account_id:task-definition/wordpress:4", "arn:aws:ec2:us-east-1:aws_account_id:task-definition/wordpress:5", "arn:aws:ec2:us-east-1:aws_account_id:task-definition/wordpress:6" ] }

Langkah 7: Jalankan Tugas

Setelah Anda mendaftarkan tugas untuk akun Anda dan meluncurkan instans kontainer yang didaftarkan ke klaster Anda, Anda dapat menjalankan tugas terdaftar di klaster Anda. Untuk contoh ini, Anda menempatkan satu instans ketentuan tugas sleep360:1 di klaster default Anda.

aws ecs run-task --cluster default --task-definition sleep360:1 --count 1

Output:

{ "tasks": [ { "taskArn": "arn:aws:ecs:us-east-1:aws_account_id:task/task_ID", "overrides": { "containerOverrides": [ { "name": "sleep" } ] }, "lastStatus": "PENDING", "containerInstanceArn": "arn:aws:ecs:us-east-1:aws_account_id:container-instance/container_instance_ID", "clusterArn": "arn:aws:ecs:us-east-1:aws_account_id:cluster/default", "desiredStatus": "RUNNING", "taskDefinitionArn": "arn:aws:ecs:us-east-1:aws_account_id:task-definition/sleep360:1", "containers": [ { "containerArn": "arn:aws:ecs:us-east-1:aws_account_id:container/container_ID", "taskArn": "arn:aws:ecs:us-east-1:aws_account_id:task/task_ID", "lastStatus": "PENDING", "name": "sleep" } ] } ] }

Langkah 8: Cantumkan Tugas

Cantumkan tugas untuk klaster Anda. Anda akan melihat tugas yang Anda jalankan di bagian sebelumnya. Anda dapat mengambil ID tugas atau lengkap ARN yang dikembalikan dari perintah tersebut dan menggunakannya untuk menjelaskan tugas berikutnya.

aws ecs list-tasks --cluster default

Output:

{ "taskArns": [ "arn:aws:ecs:us-east-1:aws_account_id:task/task_ID" ] }

Langkah 9: Jelaskan Tugas yang Sedang Berjalan

Jelaskan tugas menggunakan ID tugas yang diambil sebelumnya untuk mendapatkan informasi selengkapnya tentang tugas tersebut.

aws ecs describe-tasks --cluster default --task task_ID

Output:

{ "failures": [], "tasks": [ { "taskArn": "arn:aws:ecs:us-east-1:aws_account_id:task/task_ID", "overrides": { "containerOverrides": [ { "name": "sleep" } ] }, "lastStatus": "RUNNING", "containerInstanceArn": "arn:aws:ecs:us-east-1:aws_account_id:container-instance/container_instance_ID", "clusterArn": "arn:aws:ecs:us-east-1:aws_account_id:cluster/default", "desiredStatus": "RUNNING", "taskDefinitionArn": "arn:aws:ecs:us-east-1:aws_account_id:task-definition/sleep360:1", "containers": [ { "containerArn": "arn:aws:ecs:us-east-1:aws_account_id:container/container_ID", "taskArn": "arn:aws:ecs:us-east-1:aws_account_id:task/task_ID", "lastStatus": "RUNNING", "name": "sleep", "networkBindings": [] } ] } ] }