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.
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 dari diinstal dan dikonfigurasi. AWS CLI Untuk informasi selengkapnya tentang cara meningkatkan atau memutakhirkan AWS CLI, lihat Menginstal atau memperbarui ke versi terbaru. AWS CLI
-
Langkah-langkah di Mengatur untuk menggunakan Amazon ECS telah diselesaikan.
-
AWS Pengguna Anda memiliki izin yang diperlukan yang ditentukan dalam contoh Amazon ECS _ FullAccess IAM kebijakan.
-
Anda sudah membuat VPC grup keamanan 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 selengkapnya, lihat Apa yang dimaksud dengan 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 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-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 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
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 --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 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-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 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": []
}
]
}
]
}