Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Tutorial: Membuat sebuah klaster dengan tugas Fargate Windows menggunakanAWS CLI
Langkah-langkah berikut ini membantu Anda untuk mengatur sebuah klaster, mendaftarkan ketentuan tugas, menjalankan tugas Windows, dan melakukan skenario umum lainnya di Amazon ECS denganAWS CLI. Pastikan bahwa Anda menggunakan versi terbaru AWS CLI. Untuk informasi selengkapnya tentang cara meningkatkan ke versi terbaru, lihat Menginstal AWS Command Line Interface.
Topik
Prasyarat
Tutorial ini mengasumsikan bahwa prasyarat berikut telah diselesaikan.
-
Versi terbaru dari AWS CLI telah diinstal dan dikonfigurasi. Untuk informasi selengkapnya tentang cara meningkatkan atau memutakhirkan AWS CLI, lihat Menginstal AWS Command Line Interface.
-
Langkah-langkah di Mengatur untuk menggunakan Amazon ECS telah diselesaikan.
-
AWSPengguna Anda memiliki izin yang diperlukan yang ditentukan dalam contoh kebijakanIzin wizard yang dijalankan pertama Amazon ECS IAM.
-
Anda memiliki VPC dan grup keamanan yang telah dibuat untuk digunakan. Tutorial ini menggunakan citra kontainer yang di-host pada Docker Hub sehingga tugas Anda harus memiliki akses kepada internet. Untuk memberikan tugas Anda rute ke internet, gunakan salah satu pilihan berikut ini.
-
Gunakan subnet privat dengan gateway NAT yang memiliki alamat IP elastis.
-
Gunakan subnet publik dan tetapkan alamat IP publik untuk tugas tersebut.
Untuk informasi selengkapnya, lihat Buat virtual private cloud.
Untuk informasi tentang grup dan aturan keamanan, lihat, Grup keamanan default untuk aturan VPC dan Contoh Anda di Panduan Pengguna Amazon Virtual Private Cloud.
-
-
Opsional:AWS CloudShell adalah alat yang memberikan pelanggan baris perintah tanpa perlu membuat instans EC2 mereka sendiri. Untuk informasi selengkapnya, lihat Apa itu AWS CloudShell dalam Panduan Pengguna AWS CloudShell.
Langkah 1: Buat Klaster
Secara default, akun Anda menerima klaster default
.
Manfaat dari penggunaan klaster default
yang disediakan untuk Anda adalah bahwa Anda tidak perlu menentukan properti pada pilihan --cluster
di 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
fargate-cluster
Output:
{
"cluster": {
"status": "ACTIVE",
"statistics": [],
"clusterName": "fargate-cluster",
"registeredContainerInstancesCount": 0,
"pendingTasksCount": 0,
"runningTasksCount": 0,
"activeServicesCount": 0,
"clusterArn": "arn:aws:ecs:region
:aws_account_id
:cluster/fargate-cluster
"
}
}
Langkah 2: Daftarkan Ketentuan tugas Windows
Sebelum Anda dapat menjalankan tugas Windows di klaster Amazon ECS Anda, Anda harus mendaftarkan ketentuan tugas. Ketentuan tugas adalah daftar kontainer yang dikelompokkan bersama. Contoh berikut adalah ketentuan tugas sederhana yang menciptakan sebuah aplikasi web. Untuk informasi selengkapnya tentang parameter ketentuan tugas yang tersedia, lihat Definisi tugas Amazon ECS.
{ "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", "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-group": "/ecs/fargate-windows-task-definition", "awslogs-region": "us-east-1", "awslogs-stream-prefix": "ecs" } }, "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" ] }
Contoh JSON di atas dapat diteruskan ke AWS CLI dengan dua cara: Anda dapat menyimpan JSON ketentuan tugas sebagai file dan meneruskannya dengan opsi
.--cli-input-json
file://path_to_file.json
Untuk menggunakan file JSON untuk ketentuan kontainer:
aws ecs register-task-definition --cli-input-json
file://$HOME/tasks/fargate-task.json
Parameter perintah register-task-definition mengembalikan penjelasan pada ketentuan tugas setelah menyelesaikan pendaftarannya.
Langkah 3: Cantumkan Ketentuan tugas
Anda dapat mencantumkan daftar ketentuan tugas untuk akun Anda kapan saja 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:ecs:region
:aws_account_id
:task-definition/sample-fargate-windows:1"
]
}
Langkah 4: Buat Layanan
Setelah Anda telah mendaftarkan tugas untuk akun Anda, Anda dapat membuat layanan untuk tugas yang telah terdaftar di klaster Anda. Pada contoh ini, Anda membuat layanan dengan satu instans dari ketentuan tugas sample-fargate:1
yang berjalan di klaster Anda. Tugas tersebut membutuhkan rute menuju internet, maka terdapat dua cara untuk Anda agar bisa mencapainya. Salah satu caranya adalah dengan menggunakan subnet privat yang dikonfigurasikan dengan gateway NAT dengan alamat IP elastis di subnet publik. Cara lainnya adalah dengan menggunakan subnet publik dan menetapkan alamat IP publik untuk tugas Anda. Kami menyediakan kedua contoh di bawah ini.
Contoh menggunakan subnet privat.
aws ecs create-service --cluster
fargate-cluster
--service-namefargate-service
--task-definitionsample-fargate-windows:1
--desired-count1
--launch-type "FARGATE" --network-configuration "awsvpcConfiguration={subnets=[subnet-abcd1234
],securityGroups=[sg-abcd1234
]}"
Contoh menggunakan subnet publik.
aws ecs create-service --cluster
fargate-cluster
--service-namefargate-service
--task-definitionsample-fargate-windows:1
--desired-count1
--launch-type "FARGATE" --network-configuration "awsvpcConfiguration={subnets=[subnet-abcd1234
],securityGroups=[sg-abcd1234
],assignPublicIp=ENABLED
}"
Perintah create-service mengembalikan penjelasan pada ketentuan tugas setelah menyelesaikan pendaftarannya.
Langkah 5: Cantumkan Layanan
Cantumkan layanan untuk klaster Anda. Anda seharusnya dapat melihat layanan yang Anda buat di bagian sebelumnya. Anda dapat mengambil nama layanan atau ARN penuh yang telah dikembalikan dari perintah ini serta menggunakannya untuk menjelaskan layanan nantinya.
aws ecs list-services --cluster
fargate-cluster
Output:
{
"serviceArns": [
"arn:aws:ecs:region
:aws_account_id
:service/fargate-service"
]
}
Langkah 6: Jelaskan Layanan yang Berjalan
Jelaskan layanan yang menggunakan nama layanan yang telah diambil sebelumnya untuk mendapatkan informasi lebih lanjut tentang tugas.
aws ecs describe-services --cluster
fargate-cluster
--servicesfargate-service
Jika berhasil, tugas akan mengembalikan deskripsi dari layanan yang gagal juga layanan. Sebagai contoh, pada bagian layanan, Anda akan menemukan informasi tentang deployment, seperti menjelaskan status pada tugas berjalan atau tertundanya tugas tersebut. Anda juga dapat menemukan informasi tentang ketentuan tugas, konfigurasi jaringan dan peristiwa stempel waktu. Pada bagian kegagalan, Anda akan menemukan informasi tentang kegagalan, jika ada kegagalan tersebut, yang terkait dengan panggilan tersebut. Untuk pemecahan masalah, lihat Pesan Peristiwa Layanan. Untuk informasi selengkapnya tentang deskripsi layanan, lihat Jelaskan layanan.
{
"services": [
{
"status": "ACTIVE",
"taskDefinition": "arn:aws:ecs:region
:aws_account_id
:task-definition/sample-fargate-windows:1",
"pendingCount": 2,
"launchType": "FARGATE",
"loadBalancers": [],
"roleArn": "arn:aws:iam::aws_account_id
:role/aws-service-role/ecs.amazonaws.com/AWSServiceRoleForECS",
"placementConstraints": [],
"createdAt": 1510811361.128,
"desiredCount": 2,
"networkConfiguration": {
"awsvpcConfiguration": {
"subnets": [
"subnet-abcd1234
"
],
"securityGroups": [
"sg-abcd1234
"
],
"assignPublicIp": "DISABLED"
}
},
"platformVersion": "LATEST",
"serviceName": "fargate-service",
"clusterArn": "arn:aws:ecs:region
:aws_account_id
:cluster/fargate-cluster",
"serviceArn": "arn:aws:ecs:region
:aws_account_id
:service/fargate-service",
"deploymentConfiguration": {
"maximumPercent": 200,
"minimumHealthyPercent": 100
},
"deployments": [
{
"status": "PRIMARY",
"networkConfiguration": {
"awsvpcConfiguration": {
"subnets": [
"subnet-abcd1234
"
],
"securityGroups": [
"sg-abcd1234
"
],
"assignPublicIp": "DISABLED"
}
},
"pendingCount": 2,
"launchType": "FARGATE",
"createdAt": 1510811361.128,
"desiredCount": 2,
"taskDefinition": "arn:aws:ecs:region
:aws_account_id
:task-definition/sample-fargate-windows:1",
"updatedAt": 1510811361.128,
"platformVersion": "0.0.1",
"id": "ecs-svc/9223370526043414679",
"runningCount": 0
}
],
"events": [
{
"message": "(service fargate-service) has started 2 tasks: (task 53c0de40-ea3b-489f-a352-623bf1235f08) (task d0aec985-901b-488f-9fb4-61b991b332a3).",
"id": "92b8443e-67fb-4886-880c-07e73383ea83",
"createdAt": 1510811841.408
},
{
"message": "(service fargate-service) has started 2 tasks: (task b4911bee-7203-4113-99d4-e89ba457c626) (task cc5853e3-6e2d-4678-8312-74f8a7d76474).",
"id": "d85c6ec6-a693-43b3-904a-a997e1fc844d",
"createdAt": 1510811601.938
},
{
"message": "(service fargate-service) has started 2 tasks: (task cba86182-52bf-42d7-9df8-b744699e6cfc) (task f4c1ad74-a5c6-4620-90cf-2aff118df5fc).",
"id": "095703e1-0ca3-4379-a7c8-c0f1b8b95ace",
"createdAt": 1510811364.691
}
],
"runningCount": 0,
"placementStrategy": []
}
],
"failures": []
}
Langkah 7: Bersihkan
Setelah Anda selesai dengan tutorial ini, Anda harus membersihkan sumber daya yang terkait untuk menghindari biaya sumber daya yang tidak terpakai.
Hapus layanan.
aws ecs delete-service --cluster
fargate-cluster
--servicefargate-service
--force
Hapus klaster.
aws ecs delete-cluster --cluster
fargate-cluster