Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Tutorial: Membuat layanan menggunakan Service Discovery
Penemuan layanan sekarang diintegrasikan ke dalam wizard Buat Layanan di konsol Amazon ECS. Untuk informasi selengkapnya, lihat Membuat layanan Amazon ECS di konsol klasik.
Tutorial berikut menunjukkan cara membuat layanan ECS yang berisi tugas Fargate yang menggunakan penemuan layanan denganAWS CLI.
Untuk daftar penemuan layanan dukunganWilayah AWS tersebut, lihatPenemuan Layanan .
Untuk informasi tentang Daerah yang mendukung Fargate, lihatWilayah yang Didukung untuk Amazon ECS diAWS Fargate.
Prasyarat
Sebelum Anda memulai tutorial ini, pastikan prasyarat berikut terpenuhi:
-
Versi AWS CLI terbaru telah diinstal dan dikonfigurasi. Untuk informasi lebih lanjut, lihat Menginstal AWS Command Line Interface.
-
Langkah-langkah yangMengatur untuk menggunakan Amazon ECS dijelaskan dalam selesai.
-
AWSPengguna Anda memiliki izin yang diperlukan yang ditentukan dalam contoh kebijakanIzin wizard yang dijalankan pertama Amazon ECS IAM.
-
Anda telah membuat setidaknya satu VPC dan satu grup keamanan. Untuk informasi selengkapnya, lihat Buat virtual private cloud.
Langkah 1: Buat sumber daya Layanan Discovery diAWS Cloud Map
Ikuti langkah-langkah berikut untuk membuat namespace penemuan layanan dan layanan penemuan layanan Anda:
-
Buat namespace penemuan layanan Cloud Map pribadi. Contoh ini menciptakan namespace yang disebut
tutorial
. Gantivpc-abcd1234
dengan ID salah satu VPC Anda yang ada.aws servicediscovery create-private-dns-namespace \ --name
tutorial
\ --vpcvpc-abcd1234
Output perintah ini adalah sebagai berikut.
{ "OperationId": "
h2qe3s6dxftvvt7riu6lfy2f6c3jlhf4-je6chs2e
" } -
Menggunakan
OperationId
dari output dari langkah sebelumnya, verifikasi bahwa namespace privat telah berhasil dibuat. Catat ID namespace karena Anda menggunakannya dalam perintah berikutnya.aws servicediscovery get-operation \ --operation-id
h2qe3s6dxftvvt7riu6lfy2f6c3jlhf4-je6chs2e
Outputnya adalah sebagai berikut.
{ "Operation": { "Id": "
h2qe3s6dxftvvt7riu6lfy2f6c3jlhf4-je6chs2e
", "Type": "CREATE_NAMESPACE", "Status": "SUCCESS", "CreateDate": 1519777852.502, "UpdateDate": 1519777856.086, "Targets": { "NAMESPACE": "ns-uejictsjen2i4eeg
" } } } -
Menggunakan
NAMESPACE
ID dari output langkah sebelumnya, buat layanan penemuan layanan. Contoh ini menciptakan layanan bernamamyapplication
. Catat ID layanan dan ARN karena Anda menggunakannya dalam perintah berikutnya.aws servicediscovery create-service \ --name
myapplication
\ --dns-config "NamespaceId="ns-uejictsjen2i4eeg
",DnsRecords=[{Type="A
",TTL="300
"}]" \ --health-check-custom-config FailureThreshold=1
Outputnya adalah sebagai berikut.
{ "Service": { "Id": "
srv-utcrh6wavdkggqtk
", "Arn": "arn:aws:servicediscovery:region
:aws_account_id
:service/srv-utcrh6wavdkggqtk
", "Name": "myapplication", "DnsConfig": { "NamespaceId": "ns-uejictsjen2i4eeg
", "DnsRecords": [ { "Type": "A
", "TTL":300
} ] }, "HealthCheckCustomConfig": { "FailureThreshold":1
}, "CreatorRequestId": "e49a8797-b735-481b-a657-b74d1d6734eb" } }
Langkah 2: Buat sumber daya Amazon ECS
Ikuti langkah-langkah berikut untuk membuat klaster Amazon ECS Anda, ketentuan tugas, dan layanan:
-
Buat klaster Amazon. Contoh ini menciptakan sebuah cluster yang bernama
tutorial
.aws ecs create-cluster \ --cluster-name
tutorial
-
Daftarkan definisi tugas yang kompatibel dengan Fargate dan gunakan mode
awsvpc
jaringan. Ikuti langkah-langkah ini:-
Buat file bernama
fargate-task.json
dengan isi ketentuan tugas berikut.{ "family": "tutorial-task-def", "networkMode": "awsvpc", "containerDefinitions": [ { "name": "sample-app", "image": "httpd:2.4", "portMappings": [ { "containerPort": 80, "hostPort": 80, "protocol": "tcp" } ], "essential": true, "entryPoint": [ "sh", "-c" ], "command": [ "/bin/sh -c \"echo '<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> </div></body></html>' > /usr/local/apache2/htdocs/index.html && httpd-foreground\"" ] } ], "requiresCompatibilities": [ "FARGATE" ], "cpu": "256", "memory": "512" }
-
Daftarkan ketentuan tugas menggunakan
fargate-task.json
.aws ecs register-task-definition \ --cli-input-json file://fargate-task.json
-
-
Buat layanan ECS dengan mengikuti langkah-langkah berikut:
-
Buat file bernama
ecs-service-discovery.json
dengan konten layanan ECS yang Anda buat. Contoh ini menggunakan ketentuan tugas yang dibuat pada langkah sebelumnya.awsvpcConfiguration
diperlukan karena ketentuan tugas contoh menggunakan mode jaringanawsvpc
.Saat Anda membuat layanan ECS, tentukan jenis peluncuran Fargate, dan versi
LATEST
platform yang mendukung penemuan layanan. Saat layanan penemuan layananregistryArn
dibuatAWS Cloud Map, ARN dikembalikan. ThesecurityGroups
dansubnets
harus milik VPC yang digunakan untuk membuat namespace Cloud Map. Anda dapat memperoleh ID grup keamanan dan subnet dari Konsol VPC Amazon.{ "cluster": "tutorial", "serviceName": "ecs-service-discovery", "taskDefinition": "tutorial-task-def", "serviceRegistries": [ { "registryArn": "arn:aws:servicediscovery:
region
:aws_account_id
:service/srv-utcrh6wavdkggqtk
" } ], "launchType": "FARGATE", "platformVersion": "LATEST", "networkConfiguration": { "awsvpcConfiguration": { "assignPublicIp": "ENABLED", "securityGroups": [ "sg-abcd1234
" ], "subnets": [ "subnet-abcd1234
" ] } }, "desiredCount":1
} -
Buat layanan ECS Anda menggunakan
ecs-service-discovery.json
.aws ecs create-service \ --cli-input-json file://ecs-service-discovery.json
-
Langkah 3: Verifikasi Layanan Discovery diAWS Cloud Map
Anda dapat memverifikasi bahwa semuanya dibuat dengan benar dengan menanyakan informasi penemuan layanan Anda. Setelah penemuan layanan dikonfigurasi, Anda dapat menggunakan operasiAWS Cloud Map API, atau menelepondig
dari instans dalam VPC Anda. Ikuti langkah-langkah ini:
-
Menggunakan ID layanan penemuan layanan, cantumkan instance penemuan layanan. Catat ID instance (ditandai dengan huruf tebal) untuk pembersihan sumber daya.
aws servicediscovery list-instances \ --service-id
srv-utcrh6wavdkggqtk
Outputnya adalah sebagai berikut.
{ "Instances": [ { "Id": "16becc26-8558-4af1-9fbd-f81be062a266", "Attributes": { "AWS_INSTANCE_IPV4": "172.31.87.2" "AWS_INSTANCE_PORT": "80", "AVAILABILITY_ZONE": "us-east-1a", "REGION": "us-east-1", "ECS_SERVICE_NAME": "ecs-service-discovery", "ECS_CLUSTER_NAME": "tutorial", "ECS_TASK_DEFINITION_FAMILY": "tutorial-task-def" } } ] }
-
Gunakan namespace penemuan layanan, layanan, dan parameter tambahan seperti nama klaster ECS untuk menanyakan detail tentang instans penemuan layanan.
aws servicediscovery discover-instances \ --namespace-name tutorial \ --service-name myapplication \ --query-parameters ECS_CLUSTER_NAME=tutorial
-
Data DNS yang dibuat di zona yang di-hosting Route 53 untuk layanan penemuan layanan dapat dikueri denganAWS CLI perintah berikut:
Menggunakan ID namespace, dapatkan informasi tentang namespace, yang mencakup ID zona yang di-hosting Route 53.
aws servicediscovery \ get-namespace --id
ns-uejictsjen2i4eeg
Outputnya adalah sebagai berikut.
{ "Namespace": { "Id": "
ns-uejictsjen2i4eeg
", "Arn": "arn:aws:servicediscovery:region
:aws_account_id
:namespace/ns-uejictsjen2i4eeg
", "Name": "tutorial", "Type": "DNS_PRIVATE", "Properties": { "DnsProperties": { "HostedZoneId": "Z35JQ4ZFDRYPLV
" } }, "CreateDate": 1519777852.502, "CreatorRequestId": "9049a1d5-25e4-4115-8625-96dbda9a6093" } }-
Menggunakan ID zona yang di-hosting Route 53 dari langkah sebelumnya (lihat teks dalam huruf tebal), dapatkan set catatan sumber daya untuk zona yang di-hosting.
aws route53 list-resource-record-sets \ --hosted-zone-id
Z35JQ4ZFDRYPLV
-
Anda juga dapat mengueri DNS dari sebuah instans dalam penggunaan VPC Anda
dig
.dig +short myapplication.tutorial
Langkah 4: Bersihkan
Setelah Anda menyelesaikan tutorial ini, bersihkan sumber daya terkait untuk menghindari timbulnya biaya untuk sumber daya yang tidak digunakan. Ikuti langkah-langkah ini:
-
Deregister instans layanan penemuan layanan menggunakan ID layanan dan ID instans yang Anda catat sebelumnya.
aws servicediscovery deregister-instance \ --service-id
srv-utcrh6wavdkggqtk
\ --instance-id16becc26-8558-4af1-9fbd-f81be062a266
Outputnya adalah sebagai berikut.
{ "OperationId": "
xhu73bsertlyffhm3faqi7kumsmx274n-jh0zimzv
" } -
Menggunakan
OperationId
dari output langkah sebelumnya, verifikasi bahwa instans layanan penemuan layanan berhasil dibatalkan pendaftarannya.aws servicediscovery get-operation \ --operation-id
xhu73bsertlyffhm3faqi7kumsmx274n-jh0zimzv
{ "Operation": { "Id": "xhu73bsertlyffhm3faqi7kumsmx274n-jh0zimzv", "Type": "DEREGISTER_INSTANCE", "Status": "SUCCESS", "CreateDate": 1525984073.707, "UpdateDate": 1525984076.426, "Targets": { "INSTANCE": "16becc26-8558-4af1-9fbd-f81be062a266", "ROUTE_53_CHANGE_ID": "C5NSRG1J4I1FH", "SERVICE": "srv-utcrh6wavdkggqtk" } } }
-
Hapus layanan penemuan layanan menggunakan ID layanan.
aws servicediscovery delete-service \ --id
srv-utcrh6wavdkggqtk
-
Hapus namespace penemuan layanan menggunakan ID namespace.
aws servicediscovery delete-namespace \ --id
ns-uejictsjen2i4eeg
Outputnya adalah sebagai berikut.
{ "OperationId": "
c3ncqglftesw4ibgj5baz6ktaoh6cg4t-jh0ztysj
" } -
Menggunakan
OperationId
dari output langkah sebelumnya, verifikasi bahwa namespace penemuan layanan berhasil dihapus.aws servicediscovery get-operation \ --operation-id
c3ncqglftesw4ibgj5baz6ktaoh6cg4t-jh0ztysj
Outputnya adalah sebagai berikut.
{ "Operation": { "Id": "
c3ncqglftesw4ibgj5baz6ktaoh6cg4t-jh0ztysj
", "Type": "DELETE_NAMESPACE", "Status": "SUCCESS", "CreateDate": 1525984602.211, "UpdateDate": 1525984602.558, "Targets": { "NAMESPACE": "ns-rymlehshst7hhukh", "ROUTE_53_CHANGE_ID": "CJP2A2M86XW3O" } } } -
Perbarui hitungan yang diinginkan untuk layanan Amazon ECS
0
. Anda harus melakukan ini untuk menghapus layanan di langkah berikutnya.aws ecs update-service \ --cluster tutorial \ --service ecs-service-discovery \ --desired-count 0
-
Menghapus layanan Amazon ECS.
aws ecs delete-service \ --cluster tutorial \ --service ecs-service-discovery
-
Menghapus klaster Amazon ECS.
aws ecs delete-cluster \ --cluster tutorial