Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Membuat tugas Amazon ECS 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 atau memperbarui ke versi terbaru AWS CLI.
Topik
- Prasyarat
- Langkah 1: Buat Klaster
- Langkah 2: Luncurkan Instans 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 atau memperbarui ke versi terbaru. AWS CLI
-
Langkah-langkah di Siapkan untuk menggunakan Amazon ECS telah diselesaikan.
-
AWS Pengguna Anda memiliki izin yang diperlukan yang ditentukan dalam contoh kebijakan Amazonecs_ FullAccess IAM.
-
Anda memiliki VPC dan grup 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 Instans dengan Amazon ECS AMI
Anda harus memiliki instans penampung Amazon ECS di cluster 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 instans penampung Anda, agen Amazon ECS 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 instans kontainer, Anda dapat menggunakan perintah describe-container-instances untuk mendapatkan informasi berharga terkait instans, seperti sumber daya CPU dan memori yang tersisa dan terdaftar.
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 klaster ECS, 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 Definisi tugas Amazon ECS.
{ "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 ketentuan kontainer JSON 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 file JSON untuk ketentuan kontainer:
aws ecs register-task-definition --cli-input-json
file://$HOME/tasks/sleep360.json
Untuk menggunakan string JSON 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-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 ARN lengkap 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
--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": []
}
]
}
]
}