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 membantu Anda menyiapkan klaster, mendaftarkan definisi 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 AWS Command Line Interface.
Topik
- Prasyarat
- Langkah 1: Buat Klaster
- Langkah 2: Luncurkan Instance dengan Amazon ECS AMI
- Langkah 3: Buat Daftar Instans Kontainer
- Langkah 4: Jelaskan Instans Kontainer Anda
- Langkah 5: Daftarkan Definisi Tugas
- Langkah 6: Buat Daftar Definisi Tugas
- Langkah 7: Jalankan Tugas
- Langkah 8: Cantumkan Tugas
- Langkah 9: Jelaskan Tugas yang Sedang Berjalan
Prasyarat
Tutorial ini mengasumsikan bahwa prasyarat berikut telah diselesaikan:
-
Versi terbaru diinstal dan dikonfigurasi. AWS CLI Untuk informasi selengkapnya tentang menginstal atau memutakhirkan AWS CLI, lihat Menginstal. AWS Command Line Interface
-
Langkah-langkah di Siapkan untuk menggunakan Amazon ECS telah diselesaikan.
-
AWS Pengguna Anda memiliki izin yang diperlukan yang ditentukan dalam contoh Amazon ECS _ FullAccess IAM kebijakan.
-
Anda memiliki grup VPC dan keamanan yang dibuat untuk digunakan. Untuk informasi selengkapnya, lihat Buat virtual private cloud.
-
(Opsional) AWS CloudShell adalah alat yang memberi pelanggan baris perintah tanpa perlu membuat EC2 instance mereka sendiri. Untuk informasi lebih lanjut, lihat Apa itu AWS CloudShell? dalam AWS CloudShell User Guide.
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
dalam perintah berikutnya. Jika Anda membuat klaster non-default sendiri, Anda harus menentukan cluster_name
--cluster
untuk setiap perintah yang ingin Anda gunakan dengan klaster itu.cluster_name
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 Instance dengan Amazon ECS AMI
Anda harus memiliki instans ECS penampung Amazon di klaster Anda sebelum dapat menjalankan tugas di dalamnya. 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 instance container Anda, ECS agen Amazon mendaftarkan instance tersebut 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 dari instance container, Anda dapat menggunakan describe-container-instances perintah untuk mendapatkan informasi berharga tentang instance, seperti sisa dan terdaftar CPU dan sumber daya memori.
aws ecs describe-container-instances --cluster
default
--container-instancescontainer_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 cluster Anda, Anda harus mendaftarkan definisi 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 Definisi ECS 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
opsi. Atau, Anda dapat menghindari tanda kutip di JSON dan meneruskan definisi JSON wadah 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 --cli-input-json
file://path_to_file.json
--family
yang digunakan untuk menjaga beberapa versi ketentuan tugas Anda yang terkait satu sama lain.
Untuk menggunakan JSON file untuk definisi kontainer:
aws ecs register-task-definition --cli-input-json
file://$HOME/tasks/sleep360.json
Untuk menggunakan JSON string untuk definisi 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-definitionsleep360:1
--count1
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 ini dan menggunakannya untuk menggambarkan tugas nanti.
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
--tasktask_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": []
}
]
}
]
}