Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Pelajari cara menggunakan penemuan AWS Cloud Map layanan dengan kueri DNS dan panggilan API menggunakan AWS CLI
Tutorial ini menunjukkan bagaimana menggunakan penemuan AWS Cloud Map layanan menggunakan AWS Command Line Interface (CLI). Anda akan membuat arsitektur microservice dengan dua layanan backend — satu dapat ditemukan menggunakan kueri DNS dan satu lagi dapat ditemukan menggunakan API saja. AWS Cloud Map
Untuk tutorial yang menyertakan langkah-langkah AWS Cloud Map konsol, lihatPelajari cara menggunakan penemuan AWS Cloud Map layanan dengan kueri DNS dan panggilan API.
Prasyarat
Prasyarat berikut harus dipenuhi untuk menyelesaikan tutorial dengan sukses.
-
Sebelum memulai, selesaikan langkah-langkah di Siapkan untuk digunakan AWS Cloud Map.
-
Jika Anda belum menginstal AWS Command Line Interface, ikuti langkah-langkah di Menginstal atau memperbarui versi terbaru AWS CLI untuk menginstalnya.
Tutorial ini membutuhkan terminal baris perintah atau shell untuk menjalankan perintah. Di Linux dan macOS, gunakan shell dan manajer paket pilihan Anda.
catatan
Di Windows, beberapa perintah Bash CLI yang biasa Anda gunakan dengan Lambda (
zip
seperti) tidak didukung oleh terminal bawaan sistem operasi. Untuk mendapatkan versi terintegrasi Windows dari Ubuntu dan Bash, instal Windows Subsystem untukLinux. Tutorial ini membutuhkan lingkungan lokal dengan perintah utilitas pencarian
dig
DNS.
Buat AWS Cloud Map namespace
Pertama, Anda akan membuat AWS Cloud Map namespace publik. AWS Cloud Map akan membuat zona yang dihosting Route 53 dengan nama yang sama, memungkinkan penemuan layanan melalui catatan DNS dan panggilan API.
-
Buat namespace DNS publik:
aws servicediscovery create-public-dns-namespace \ --name cloudmap-tutorial.com \ --creator-request-id cloudmap-tutorial-request-1 \ --region us-east-2
Perintah mengembalikan ID operasi yang dapat Anda gunakan untuk memeriksa status pembuatan namespace:
{ "OperationId": "gv4g5meo7ndmeh4fqskygvk23d2fijwa-k9xmplyzd" }
-
Periksa status operasi untuk mengonfirmasi namespace berhasil dibuat:
aws servicediscovery get-operation \ --operation-id gv4g5meo7ndmeh4fqskygvk23d2fijwa-k9xmplyzd \ --region us-east-2
-
Setelah operasi berhasil, dapatkan ID namespace:
aws servicediscovery list-namespaces \ --region us-east-2 \ --query "Namespaces[?Name=='cloudmap-tutorial.com'].Id" \ --output text
Perintah ini mengembalikan ID namespace, yang Anda perlukan untuk langkah-langkah selanjutnya:
ns-abcd1234xmplefgh
Buat AWS Cloud Map layanan
Sekarang, buat dua layanan dalam namespace Anda. Layanan pertama akan dapat ditemukan menggunakan panggilan DNS dan API, sedangkan yang kedua akan ditemukan hanya menggunakan panggilan API.
-
Buat layanan pertama dengan penemuan DNS diaktifkan:
aws servicediscovery create-service \ --name public-service \ --namespace-id ns-abcd1234xmplefgh \ --dns-config "RoutingPolicy=MULTIVALUE,DnsRecords=[{Type=A,TTL=300}]" \ --region us-east-2
Perintah mengembalikan rincian tentang layanan yang dibuat:
{ "Service": { "Id": "srv-abcd1234xmplefgh", "Arn": "arn:aws:servicediscovery:us-east-2:123456789012:service/srv-abcd1234xmplefgh", "Name": "public-service", "NamespaceId": "ns-abcd1234xmplefgh", "DnsConfig": { "NamespaceId": "ns-abcd1234xmplefgh", "RoutingPolicy": "MULTIVALUE", "DnsRecords": [ { "Type": "A", "TTL": 300 } ] }, "CreateDate": 1673613600.000, "CreatorRequestId": "public-service-request" } }
-
Buat layanan kedua dengan penemuan khusus API:
aws servicediscovery create-service \ --name backend-service \ --namespace-id ns-abcd1234xmplefgh \ --type HTTP \ --region us-east-2
Perintah mengembalikan rincian tentang layanan yang dibuat:
{ "Service": { "Id": "srv-ijkl5678xmplmnop", "Arn": "arn:aws:servicediscovery:us-east-2:123456789012:service/srv-ijkl5678xmplmnop", "Name": "backend-service", "NamespaceId": "ns-abcd1234xmplefgh", "Type": "HTTP", "CreateDate": 1673613600.000, "CreatorRequestId": "backend-service-request" } }
Daftarkan instance AWS Cloud Map layanan
Selanjutnya, daftarkan instance layanan untuk setiap layanan Anda. Contoh ini mewakili sumber daya aktual yang akan ditemukan.
-
Daftarkan instance pertama dengan IPv4 alamat untuk penemuan DNS:
aws servicediscovery register-instance \ --service-id srv-abcd1234xmplefgh \ --instance-id first \ --attributes AWS_INSTANCE_IPV4=192.168.2.1 \ --region us-east-2
Perintah mengembalikan ID operasi:
{ "OperationId": "4yejorelbukcjzpnr6tlmrghsjwpngf4-k9xmplyzd" }
-
Periksa status operasi untuk mengonfirmasi instans berhasil terdaftar:
aws servicediscovery get-operation \ --operation-id 4yejorelbukcjzpnr6tlmrghsjwpngf4-k9xmplyzd \ --region us-east-2
-
Daftarkan instance kedua dengan atribut khusus untuk penemuan API:
aws servicediscovery register-instance \ --service-id srv-ijkl5678xmplmnop \ --instance-id second \ --attributes service-name=backend \ --region us-east-2
Perintah mengembalikan ID operasi:
{ "OperationId": "7zxcvbnmasdfghjklqwertyuiop1234-k9xmplyzd" }
-
Periksa status operasi untuk mengonfirmasi instans berhasil terdaftar:
aws servicediscovery get-operation \ --operation-id 7zxcvbnmasdfghjklqwertyuiop1234-k9xmplyzd \ --region us-east-2
Temukan contoh AWS Cloud Map layanan
Sekarang setelah Anda membuat dan mendaftarkan instance layanan Anda, Anda dapat memverifikasi semuanya berfungsi dengan menemukannya menggunakan kueri DNS dan API. AWS Cloud Map
-
Pertama, dapatkan ID zona yang dihosting Route 53:
aws route53 list-hosted-zones-by-name \ --dns-name cloudmap-tutorial.com \ --query "HostedZones[0].Id" \ --output text
Ini mengembalikan ID zona yang dihosting:
/hostedzone/Z1234ABCDXMPLEFGH
-
Dapatkan server nama untuk zona host Anda:
aws route53 get-hosted-zone \ --id Z1234ABCDXMPLEFGH \ --query "DelegationSet.NameServers[0]" \ --output text
Ini mengembalikan salah satu server nama:
ns-1234.awsdns-12.org
-
Gunakan
dig
perintah untuk menanyakan catatan DNS untuk layanan publik Anda:dig @ns-1234.awsdns-12.org public-service.cloudmap-tutorial.com
Output harus menampilkan IPv4 alamat yang Anda kaitkan dengan layanan Anda:
;; ANSWER SECTION: public-service.cloudmap-tutorial.com. 300 IN A 192.168.2.1
-
Gunakan AWS CLI untuk menemukan instance layanan backend:
aws servicediscovery discover-instances \ --namespace-name cloudmap-tutorial.com \ --service-name backend-service \ --region us-east-2
Output menampilkan atribut yang Anda kaitkan dengan layanan:
{ "Instances": [ { "InstanceId": "second", "NamespaceName": "cloudmap-tutorial.com", "ServiceName": "backend-service", "HealthStatus": "UNKNOWN", "Attributes": { "service-name": "backend" } } ], "InstancesRevision": 71462688285136850 }
Bersihkan sumber daya
Setelah Anda menyelesaikan tutorial, bersihkan sumber daya untuk menghindari biaya yang dikenakan. AWS Cloud Map mengharuskan Anda membersihkannya dalam urutan terbalik: instance layanan terlebih dahulu, lalu layanan, dan terakhir namespace.
-
Deregister instance layanan pertama:
aws servicediscovery deregister-instance \ --service-id srv-abcd1234xmplefgh \ --instance-id first \ --region us-east-2
-
Deregister instance layanan kedua:
aws servicediscovery deregister-instance \ --service-id srv-ijkl5678xmplmnop \ --instance-id second \ --region us-east-2
-
Hapus layanan publik:
aws servicediscovery delete-service \ --id srv-abcd1234xmplefgh \ --region us-east-2
-
Hapus layanan backend:
aws servicediscovery delete-service \ --id srv-ijkl5678xmplmnop \ --region us-east-2
-
Hapus namespace :
aws servicediscovery delete-namespace \ --id ns-abcd1234xmplefgh \ --region us-east-2
-
Verifikasi bahwa zona yang dihosting Route 53 telah dihapus:
aws route53 list-hosted-zones-by-name \ --dns-name cloudmap-tutorial.com