Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Membuat layanan Amazon ECS yang menggunakan Service Discovery
Pelajari cara membuat layanan yang berisi tugas Fargate yang menggunakan penemuan layanan dengan. AWS CLI
Untuk daftar penemuan layanan dukungan Wilayah AWS tersebut, lihatGunakan penemuan layanan untuk menghubungkan layanan Amazon ECS dengan nama DNS.
Untuk informasi tentang Daerah yang mendukung Fargate, lihat. Wilayah yang Didukung untuk Amazon ECS di Fargate AWS
catatan
Anda dapat menggunakan titik akhir layanan dual-stack untuk berinteraksi dengan Amazon ECS dari AWS CLI, SDKs dan Amazon ECS API melalui keduanya dan. IPv4 IPv6 Untuk informasi selengkapnya, lihat Menggunakan titik akhir tumpukan ganda Amazon ECS.
Prasyarat
Sebelum Anda memulai tutorial ini, pastikan bahwa prasyarat berikut terpenuhi:
-
Versi terbaru diinstal dan dikonfigurasi. AWS CLI Untuk informasi selengkapnya, lihat Menginstal atau memperbarui ke versi terbaru AWS CLI.
-
Langkah-langkah yang dijelaskan Siapkan untuk menggunakan Amazon ECS sudah lengkap.
-
Pengguna IAM Anda memiliki izin yang diperlukan yang ditentukan dalam contoh kebijakan Amazonecs_ FullAccess IAM.
-
Anda telah membuat setidaknya satu VPC dan satu grup keamanan. Untuk informasi selengkapnya, lihat Buat virtual private cloud.
Langkah 1: Buat sumber daya Penemuan Layanan di AWS 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.
tutorialGantivpc-abcd1234dengan ID salah satu yang sudah ada VPCs.aws servicediscovery create-private-dns-namespace \ --nametutorial\ --vpcvpc-abcd1234Output dari perintah ini adalah sebagai berikut.
{ "OperationId": "
h2qe3s6dxftvvt7riu6lfy2f6c3jlhf4-je6chs2e" } -
Menggunakan
OperationIddari output dari langkah sebelumnya, verifikasi bahwa namespace pribadi berhasil dibuat. Catat ID namespace karena Anda menggunakannya dalam perintah berikutnya.aws servicediscovery get-operation \ --operation-idh2qe3s6dxftvvt7riu6lfy2f6c3jlhf4-je6chs2eOutputnya adalah sebagai berikut.
{ "Operation": { "Id": "
h2qe3s6dxftvvt7riu6lfy2f6c3jlhf4-je6chs2e", "Type": "CREATE_NAMESPACE", "Status": "SUCCESS", "CreateDate": 1519777852.502, "UpdateDate": 1519777856.086, "Targets": { "NAMESPACE": "ns-uejictsjen2i4eeg" } } } -
Menggunakan
NAMESPACEID dari output dari 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 \ --namemyapplication\ --dns-config "NamespaceId="ns-uejictsjen2i4eeg",DnsRecords=[{Type="A",TTL="300"}]" \ --health-check-custom-config FailureThreshold=1Outputnya 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, definisi tugas, dan layanan:
-
Buat cluster Amazon ECS. Contoh ini menciptakan sebuah cluster yang diberi nama
tutorial.aws ecs create-cluster \ --cluster-nametutorial -
Daftarkan definisi tugas yang kompatibel dengan Fargate dan gunakan mode
awsvpcjaringan. Ikuti langkah-langkah ini:-
Buat file yang diberi nama
fargate-task.jsondengan isi definisi tugas berikut.{ "family": "tutorial-task-def", "networkMode": "awsvpc", "containerDefinitions": [ { "name": "sample-app", "image": "public.ecr.aws/docker/library/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 definisi 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 yang diberi nama
ecs-service-discovery.jsondengan konten layanan ECS yang Anda buat. Contoh ini menggunakan definisi tugas yang dibuat pada langkah sebelumnya.awsvpcConfigurationdiperlukan karena ketentuan tugas contoh menggunakan mode jaringanawsvpc.Saat Anda membuat layanan ECS, tentukan Fargate dan versi platform
LATESTyang mendukung penemuan layanan. Ketika layanan penemuan layanan dibuat di AWS Cloud Map ,registryArnadalah ARN dikembalikan. ItusecurityGroupsdansubnetsharus milik VPC yang digunakan untuk membuat namespace Cloud Map. Anda dapat memperoleh grup keamanan dan subnet IDs 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 Penemuan Layanan di AWS Cloud Map
Anda dapat memverifikasi bahwa semuanya dibuat dengan benar dengan menanyakan informasi penemuan layanan Anda. Setelah penemuan layanan dikonfigurasi, Anda dapat menggunakan operasi AWS Cloud Map API, atau menelepon dig dari instance dalam VPC Anda. Ikuti langkah-langkah ini:
-
Dengan 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-idsrv-utcrh6wavdkggqtkOutputnya 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 cluster ECS untuk menanyakan detail tentang instance penemuan layanan.
aws servicediscovery discover-instances \ --namespace-name tutorial \ --service-name myapplication \ --query-parameters ECS_CLUSTER_NAME=tutorial -
Catatan DNS yang dibuat di zona host Route 53 untuk layanan penemuan layanan dapat ditanyakan dengan perintah berikut: AWS CLI
-
Menggunakan ID namespace, dapatkan informasi tentang namespace, yang mencakup ID zona yang dihosting Route 53.
aws servicediscovery \ get-namespace --idns-uejictsjen2i4eegOutputnya 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 dihosting Route 53 dari langkah sebelumnya (lihat teks dalam huruf tebal), dapatkan catatan sumber daya yang ditetapkan untuk zona yang dihosting.
aws route53 list-resource-record-sets \ --hosted-zone-idZ35JQ4ZFDRYPLV
-
-
Anda juga dapat menanyakan DNS dari instance dalam
digVPC Anda menggunakan.dig +short myapplication.tutorial
Langkah 4: Membersihkan
Setelah selesai dengan tutorial ini, bersihkan sumber daya terkait untuk menghindari biaya untuk sumber daya yang tidak digunakan. Ikuti langkah-langkah ini:
-
Batalkan pendaftaran instance layanan penemuan layanan menggunakan ID layanan dan ID instans yang Anda catat sebelumnya.
aws servicediscovery deregister-instance \ --service-idsrv-utcrh6wavdkggqtk\ --instance-id16becc26-8558-4af1-9fbd-f81be062a266Outputnya adalah sebagai berikut.
{ "OperationId": "
xhu73bsertlyffhm3faqi7kumsmx274n-jh0zimzv" } -
Menggunakan
OperationIddari output dari langkah sebelumnya, verifikasi bahwa instance layanan penemuan layanan berhasil dideregistrasi.aws servicediscovery get-operation \ --operation-idxhu73bsertlyffhm3faqi7kumsmx274n-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 \ --idsrv-utcrh6wavdkggqtk -
Hapus namespace penemuan layanan menggunakan ID namespace.
aws servicediscovery delete-namespace \ --idns-uejictsjen2i4eegOutputnya adalah sebagai berikut.
{ "OperationId": "
c3ncqglftesw4ibgj5baz6ktaoh6cg4t-jh0ztysj" } -
Menggunakan
OperationIddari output dari langkah sebelumnya, verifikasi bahwa namespace penemuan layanan berhasil dihapus.aws servicediscovery get-operation \ --operation-idc3ncqglftesw4ibgj5baz6ktaoh6cg4t-jh0ztysjOutputnya 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 ke
0. Anda harus melakukan ini untuk menghapus layanan di langkah berikutnya.aws ecs update-service \ --cluster tutorial \ --service ecs-service-discovery \ --desired-count 0 -
Hapus layanan Amazon ECS.
aws ecs delete-service \ --cluster tutorial \ --service ecs-service-discovery -
Hapus cluster Amazon ECS.
aws ecs delete-cluster \ --cluster tutorial