Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Memulai dengan AWS App Mesh dan Amazon ECS
penting
Pemberitahuan akhir dukungan: Pada 30 September 2026, AWS akan menghentikan dukungan untuk. AWS App Mesh Setelah 30 September 2026, Anda tidak akan lagi dapat mengakses AWS App Mesh konsol atau AWS App Mesh sumber daya. Untuk informasi selengkapnya, kunjungi posting blog ini Ber migrasi dari AWS App Mesh ke Amazon ECS Service Connect.
Topik ini membantu Anda menggunakan AWS App Mesh layanan aktual yang berjalan di Amazon ECS. Tutorial ini mencakup fitur dasar dari beberapa jenis sumber daya App Mesh.
Skenario
Untuk mengilustrasikan cara menggunakan App Mesh, asumsikan bahwa Anda memiliki aplikasi dengan karakteristik berikut:
-
Terdiri dari dua layanan bernama
serviceAdanserviceB. -
Kedua layanan terdaftar ke namespace bernama
apps.local. -
ServiceAberkomunikasi denganserviceBlebih dari HTTP/2, port 80. -
Anda telah menerapkan versi 2
serviceBdan mendaftarkannya dengan namaserviceBv2diapps.localnamespace.
Anda memiliki persyaratan berikut:
-
Anda ingin mengirim 75 persen lalu lintas dari
serviceAkeserviceBdan 25 persen lalu lintas ke yangserviceBv2pertama. Dengan hanya mengirim 25 persen keserviceBv2, Anda dapat memvalidasi bahwa itu bebas bug sebelum Anda mengirim 100 persen lalu lintas dariserviceA. -
Anda ingin dapat dengan mudah menyesuaikan bobot lalu lintas sehingga 100 persen lalu lintas masuk
serviceBv2setelah terbukti dapat diandalkan. Setelah semua lalu lintas dikirim keserviceBv2, Anda ingin menghentikannya.serviceB -
Anda tidak ingin mengubah kode aplikasi yang ada atau pendaftaran penemuan layanan untuk layanan Anda yang sebenarnya untuk memenuhi persyaratan sebelumnya.
Untuk memenuhi kebutuhan Anda, Anda memutuskan untuk membuat mesh layanan App Mesh dengan layanan virtual, node virtual, router virtual, dan rute. Setelah menerapkan mesh Anda, Anda memperbarui layanan Anda untuk menggunakan proxy Envoy. Setelah diperbarui, layanan Anda berkomunikasi satu sama lain melalui proxy Envoy daripada langsung satu sama lain.
Prasyarat
penting
Pemberitahuan akhir dukungan: Pada 30 September 2026, AWS akan menghentikan dukungan untuk. AWS App Mesh Setelah 30 September 2026, Anda tidak akan lagi dapat mengakses AWS App Mesh konsol atau AWS App Mesh sumber daya. Untuk informasi selengkapnya, kunjungi posting blog ini Ber migrasi dari AWS App Mesh ke Amazon ECS Service Connect.
-
Pemahaman yang ada tentang konsep App Mesh. Untuk informasi selengkapnya, lihat Apa itu AWS App Mesh?.
-
Pemahaman yang ada tentang konsep Amazon ECS. Untuk informasi selengkapnya, lihat Apa itu Amazon ECS di Panduan Pengembang Layanan Kontainer Amazon Elastic.
-
App Mesh mendukung layanan Linux yang terdaftar dengan DNS, AWS Cloud Map, atau keduanya. Untuk menggunakan panduan memulai ini, kami sarankan Anda memiliki tiga layanan yang sudah ada yang terdaftar dengan DNS. Prosedur dalam topik ini mengasumsikan bahwa layanan yang ada diberi
serviceAnamaserviceB,,serviceBv2dan bahwa semua layanan dapat ditemukan melalui namespace bernama.apps.localAnda dapat membuat jaring layanan dan sumber dayanya meskipun layanan tidak ada, tetapi Anda tidak dapat menggunakan mesh sampai Anda telah menerapkan layanan aktual. Untuk informasi selengkapnya tentang penemuan layanan di Amazon ECS, lihat Penemuan https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-discovery.html Layanan. Untuk membuat layanan Amazon ECS dengan penemuan layanan, lihat Tutorial: Membuat Layanan Menggunakan Penemuan Layanan. Jika belum menjalankan layanan, Anda dapat Membuat layanan Amazon ECS dengan penemuan layanan.
Langkah 1: Buat layanan mesh dan virtual
Mesh layanan adalah batas logis untuk lalu lintas jaringan antara layanan yang berada di dalamnya. Untuk informasi selengkapnya, lihat Jala Layanan. Layanan virtual adalah abstraksi dari layanan aktual. Untuk informasi selengkapnya, lihat Layanan virtual.
Buat sumber daya berikut:
-
Sebuah mesh bernama
apps, karena semua layanan dalam skenario terdaftar keapps.localnamespace. -
Sebuah layanan virtual bernama
serviceb.apps.local, karena layanan virtual mewakili layanan yang dapat ditemukan dengan nama itu, dan Anda tidak ingin mengubah kode Anda untuk mereferensikan nama lain. Sebuah layanan virtual bernamaservicea.apps.localditambahkan pada langkah selanjutnya.
Anda dapat menggunakan Konsol Manajemen AWS atau AWS CLI versi 1.18.116 atau lebih tinggi atau 2.0.38 atau lebih tinggi untuk menyelesaikan langkah-langkah berikut. Jika menggunakan AWS CLI, gunakan aws --version perintah untuk memeriksa AWS CLI versi yang Anda instal. Jika Anda tidak menginstal versi 1.18.116 atau lebih tinggi atau 2.0.38 atau lebih tinggi, maka Anda harus menginstal atau memperbarui. AWS CLI Pilih tab untuk alat yang ingin Anda gunakan.
Langkah 2: Buat simpul virtual
Node virtual bertindak sebagai penunjuk logis ke layanan aktual. Untuk informasi selengkapnya, lihat Node virtual.
Buat node virtual bernamaserviceB, karena salah satu node virtual mewakili layanan aktual bernamaserviceB. Layanan aktual yang diwakili oleh simpul virtual dapat ditemukan melalui DNS nama host. serviceb.apps.local Sebagai alternatif, Anda dapat menemukan layanan aktual menggunakan AWS Cloud Map. Node virtual akan mendengarkan lalu lintas menggunakan HTTP/2 protokol pada port 80. Protokol lain juga didukung, seperti pemeriksaan kesehatan. Anda akan membuat node virtual untuk serviceA dan serviceBv2 di langkah selanjutnya.
Langkah 3: Buat router dan rute virtual
Router virtual merutekan lalu lintas untuk satu atau lebih layanan virtual dalam mesh Anda. Untuk informasi selengkapnya, lihat Router virtual dan Rute.
Buat sumber daya berikut:
-
Sebuah router virtual bernama
serviceB, karena layananserviceB.apps.localvirtual tidak memulai komunikasi keluar dengan layanan lain. Ingatlah bahwa layanan virtual yang Anda buat sebelumnya adalah abstraksi dariserviceb.apps.locallayanan Anda yang sebenarnya. Layanan virtual mengirimkan lalu lintas ke router virtual. Router virtual mendengarkan lalu lintas menggunakan HTTP/2 protokol pada port 80. Protokol lain juga didukung. -
Sebuah rute bernama
serviceB. Ini mengarahkan 100 persen lalu lintasnya ke nodeserviceBvirtual. Bobotnya ada di langkah selanjutnya setelah Anda menambahkan simpulserviceBv2virtual. Meskipun tidak tercakup dalam panduan ini, Anda dapat menambahkan kriteria filter tambahan untuk rute dan menambahkan kebijakan coba ulang untuk menyebabkan proxy Envoy melakukan beberapa upaya untuk mengirim lalu lintas ke node virtual saat mengalami masalah komunikasi.
Langkah 4: Tinjau dan buat
Tinjau pengaturan terhadap instruksi sebelumnya.
Langkah 5: Buat sumber daya tambahan
Untuk menyelesaikan skenario, Anda perlu:
-
Buat satu simpul virtual bernama
serviceBv2dan satu lagi bernamaserviceA. Kedua node virtual mendengarkan permintaan di atas HTTP/2 port 80. Untuk nodeserviceAvirtual, konfigurasikan backend dariserviceb.apps.local. Semua lalu lintas keluar dari nodeserviceAvirtual dikirim ke layanan virtual bernamaserviceb.apps.local. Meskipun tidak tercakup dalam panduan ini, Anda juga dapat menentukan jalur file untuk menulis log akses untuk node virtual. -
Buat satu layanan virtual tambahan bernama
servicea.apps.local, yang mengirimkan semua lalu lintas langsung ke nodeserviceAvirtual. -
Perbarui
serviceBrute yang Anda buat pada langkah sebelumnya untuk mengirim 75 persen lalu lintas ke nodeserviceBvirtual dan 25 persen lalu lintas ke nodeserviceBv2virtual. Seiring waktu, Anda dapat terus memodifikasi bobot hinggaserviceBv2menerima 100 persen lalu lintas. Setelah semua lalu lintas dikirim keserviceBv2, Anda dapat mematikan dan menghentikan nodeserviceBvirtual dan layanan aktual. Saat Anda mengubah bobot, kode Anda tidak memerlukan modifikasi apa pun, karena nama layananserviceb.apps.localvirtual dan aktual tidak berubah. Ingatlah bahwa layananserviceb.apps.localvirtual mengirimkan lalu lintas ke router virtual, yang merutekan lalu lintas ke node virtual. Nama penemuan layanan untuk node virtual dapat diubah kapan saja.
Ringkasan mesh
Sebelum Anda membuat mesh layanan, Anda memiliki tiga layanan aktual bernamaservicea.apps.local,serviceb.apps.local, danservicebv2.apps.local. Selain layanan aktual, Anda sekarang memiliki mesh layanan yang berisi sumber daya berikut yang mewakili layanan aktual:
-
Dua layanan virtual. Proxy mengirimkan semua lalu lintas dari layanan
servicea.apps.localvirtual ke layananserviceb.apps.localvirtual melalui router virtual. -
Tiga node virtual bernama
serviceA,serviceB, danserviceBv2. Proksi Envoy menggunakan informasi penemuan layanan yang dikonfigurasi untuk node virtual untuk mencari alamat IP dari layanan yang sebenarnya. -
Satu router virtual dengan satu rute yang menginstruksikan proxy Envoy untuk merutekan 75 persen lalu lintas masuk ke node
serviceBvirtual dan 25 persen lalu lintas ke node virtual.serviceBv2
Langkah 6: Perbarui layanan
Setelah membuat mesh Anda, Anda harus menyelesaikan tugas-tugas berikut:
-
Otorisasi proxy Envoy yang Anda terapkan dengan setiap tugas Amazon ECS untuk membaca konfigurasi satu atau lebih node virtual. Untuk informasi selengkapnya tentang cara mengotorisasi proxy, lihat Otorisasi https://docs.aws.amazon.com/app-mesh/latest/userguide/proxy-authorization.html proxy.
-
Perbarui setiap definisi tugas Amazon ECS Anda yang ada untuk menggunakan proxy Envoy.
Kredensial
Wadah Envoy memerlukan AWS Identity and Access Management kredenSIAL untuk permintaan penandatanganan yang dikirim ke layanan App Mesh. Untuk tugas Amazon ECS yang digunakan dengan jenis peluncuran Amazon EC2, kredenSIAL dapat berasal dari peran instans atau dari peran IAM tugas. Tugas Amazon ECS yang digunakan dengan Fargate di wadah Linux tidak memiliki akses ke server metadata Amazon EC2 yang menyediakan kredentif profil IAM instance. Untuk menyediakan kredenSIAL, Anda harus melampirkan peran tugas IAM ke tugas apa pun yang digunakan dengan jenis kontainer Fargate di Linux.
Jika tugas diterapkan dengan jenis peluncuran Amazon EC2 dan akses diblokir ke server metadata Amazon EC2, seperti yang dijelaskan dalam anotasi Penting di Peran IAM untuk Tugas, maka peran IAM tugas juga harus dilampirkan ke tugas. Peran yang Anda tetapkan ke instance atau tugas harus memiliki kebijakan IAM yang dilampirkan seperti yang dijelaskan dalam Otorisasi https://docs.aws.amazon.com/app-mesh/latest/userguide/proxy-authorization.html Proxy.
Untuk memperbarui definisi tugas Anda menggunakan AWS CLI
Anda menggunakan AWS CLI perintah register-task-definition Amazon ECS. Contoh definisi tugas di bawah ini menunjukkan cara mengonfigurasi App Mesh untuk layanan Anda.
catatan
Mengonfigurasi App Mesh untuk Amazon ECS melalui konsol tidak tersedia.
Konfigurasi proxy
Untuk mengonfigurasi layanan Amazon ECS Anda agar menggunakan App Mesh, definisi tugas layanan Anda harus memiliki bagian konfigurasi proxy berikut. Atur konfigurasi proxy type ke APPMESH dan containerName keenvoy. Tetapkan nilai properti berikut yang sesuai.
IgnoredUID-
Proksi Envoy tidak merutekan lalu lintas dari proses yang menggunakan ID pengguna ini. Anda dapat memilih ID pengguna apa pun yang Anda inginkan untuk nilai properti ini, tetapi ID ini harus sama dengan
userID untuk wadah Utusan dalam definisi tugas Anda. Pencocokan ini memungkinkan Envoy untuk mengabaikan lalu lintas sendiri tanpa menggunakan proxy. Contoh kami digunakanuntuk tujuan sejarah.1337 ProxyIngressPort-
Ini adalah port masuk untuk wadah proxy Envoy. Tetapkan nilai ini ke
15000. ProxyEgressPort-
Ini adalah port keluar untuk wadah proxy Envoy. Tetapkan nilai ini ke
15001. AppPorts-
Tentukan port masuk yang didengarkan oleh wadah aplikasi Anda. Dalam contoh ini, wadah aplikasi mendengarkan pada port
. Port yang Anda tentukan harus sesuai dengan port yang dikonfigurasi pada pendengar node virtual.9080 EgressIgnoredIPs-
Envoy tidak melakukan proxy lalu lintas ke alamat IP ini. Tetapkan nilai ini ke
169.254.170.2,169.254.169.254, yang mengabaikan server metadata Amazon EC2 dan titik akhir metadata tugas Amazon ECS. Titik akhir metadata menyediakan peran IAM untuk kredenSIAL tugas. Anda dapat menambahkan alamat tambahan. EgressIgnoredPorts-
Anda dapat menambahkan daftar port yang dipisahkan koma. Utusan tidak memproksi lalu lintas ke port ini. Bahkan jika Anda tidak mencantumkan port, port 22 diabaikan.
catatan
Jumlah maksimum port keluar yang dapat diabaikan adalah 15.
"proxyConfiguration": { "type": "APPMESH", "containerName": "envoy", "properties": [{ "name": "IgnoredUID", "value": "1337" }, { "name": "ProxyIngressPort", "value": "15000" }, { "name": "ProxyEgressPort", "value": "15001" }, { "name": "AppPorts", "value": "9080" }, { "name": "EgressIgnoredIPs", "value": "169.254.170.2,169.254.169.254" }, { "name": "EgressIgnoredPorts", "value": "22" } ] }
Ketergantungan Utusan wadah aplikasi
Wadah aplikasi dalam definisi tugas Anda harus menunggu proxy Envoy melakukan bootstrap dan mulai sebelum dapat dimulai. Untuk memastikan hal ini terjadi, Anda menetapkan dependsOn bagian di setiap definisi wadah aplikasi untuk menunggu wadah Envoy dilaporkan sebagaiHEALTHY. Kode berikut menunjukkan contoh definisi wadah aplikasi dengan ketergantungan ini. Semua properti dalam contoh berikut diperlukan. Beberapa nilai properti juga diperlukan, tetapi beberapa diperlukanreplaceable.
{ "name": "appName", "image": "appImage", "portMappings": [{ "containerPort":9080, "hostPort":9080, "protocol": "tcp" }], "essential": true, "dependsOn": [{ "containerName": "envoy", "condition": "HEALTHY" }] }
Definisi wadah utusan
Definisi tugas Amazon ECS Anda harus berisi gambar wadah App Mesh Envoy.
- Semua Wil ayah yang didukung dapat diganti
Region-codedengan Wilayah apa punme-south-1selainap-east-1,ap-southeast-3,eu-south-1,,il-central-1, danaf-south-1. -
Standar
840364872350.dkr.ecr.region-code.amazonaws.com/aws-appmesh-envoy:v1.39.1.0-prodFIPS-compliant
840364872350.dkr.ecr.region-code.amazonaws.com/aws-appmesh-envoy:v1.39.1.0-prod-fips me-south-1-
Standar
772975370895.dkr.ecr.me-south-1.amazonaws.com/aws-appmesh-envoy:v1.39.1.0-prod ap-east-1-
Standar
856666278305.dkr.ecr.ap-east-1.amazonaws.com/aws-appmesh-envoy:v1.39.1.0-prod ap-southeast-3-
Standar
909464085924.dkr.ecr.ap-southeast-3.amazonaws.com/aws-appmesh-envoy:v1.39.1.0-prod eu-south-1-
Standar
422531588944.dkr.ecr.eu-south-1.amazonaws.com/aws-appmesh-envoy:v1.39.1.0-prod il-central-1-
Standar
564877687649.dkr.ecr.il-central-1.amazonaws.com/aws-appmesh-envoy:v1.39.1.0-prod af-south-1-
Standar
924023996002.dkr.ecr.af-south-1.amazonaws.com/aws-appmesh-envoy:v1.39.1.0-prod Public repository-
Standar
public.ecr.aws/appmesh/aws-appmesh-envoy:v1.39.1.0-prodFIPS-compliant
public.ecr.aws/appmesh/aws-appmesh-envoy:v1.39.1.0-prod-fips
penting
Hanya versi v1.9.0.0-prod atau yang lebih baru yang didukung untuk digunakan dengan App Mesh.
Anda harus menggunakan image wadah App Mesh Envoy hingga tim proyek Envoy menggabungkan perubahan yang mendukung App Mesh. Untuk detail tambahan, lihat masalah GitHub peta jalan
Semua properti dalam contoh berikut diperlukan. Beberapa nilai properti juga diperlukan, tetapi beberapa diperlukanreplaceable.
catatan
-
Definisi wadah Utusan harus ditandai sebagai
essential. -
Kami merekomendasikan mengalokasikan unit
512CPU dan setidaknya64MiB memori ke wadah Envoy. Pada Fargate yang terendah yang dapat Anda atur adalah1024MiB memori. -
Nama simpul virtual untuk layanan Amazon ECS harus disetel ke nilai
APPMESH_RESOURCE_ARNproperti. Properti ini memerlukan versi gambar Utusan1.15.0atau yang lebih baru. Untuk informasi selengkapnya, lihat Gambar utusan. -
Nilai untuk
userpengaturan harus sesuai denganIgnoredUIDnilai dari konfigurasi proxy definisi tugas. Dalam contoh ini, kami menggunakan.1337 -
Pemeriksaan kesehatan yang ditunjukkan di sini menunggu wadah Envoy melakukan bootstrap dengan benar sebelum melaporkan ke Amazon ECS bahwa wadah Envoy sehat dan siap untuk wadah aplikasi dimulai.
-
Secara default, App Mesh menggunakan nama sumber daya yang Anda tentukan
APPMESH_RESOURCE_ARNsaat Envoy merujuk pada dirinya sendiri dalam metrik dan pelacakan. Anda dapat menimpa perilaku ini dengan mengatur variabel lingkunganAPPMESH_RESOURCE_CLUSTERdengan nama Anda sendiri. Properti ini memerlukan versi gambar Utusan1.15.0atau yang lebih baru. Untuk informasi selengkapnya, lihat Gambar utusan.
Kode berikut menunjukkan contoh definisi kontainer Envoy.
{ "name": "envoy", "image": "840364872350.dkr.ecr.us-west-2.amazonaws.com/aws-appmesh-envoy:v1.39.1.0-prod", "essential": true, "environment": [{ "name": "APPMESH_RESOURCE_ARN", "value": "arn:aws:appmesh:us-west-2:111122223333:mesh/apps/virtualNode/serviceB" }], "healthCheck": { "command": [ "CMD-SHELL", "curl -s http://localhost:9901/server_info | grep state | grep -q LIVE" ], "startPeriod":10, "interval":5, "timeout":2, "retries":3}, "user": "1337" }
Contoh ketentuan tugas
Contoh berikut definisi tugas Amazon ECS menunjukkan cara menggabungkan contoh dari atas ke dalam definisi tugas untuktaskB. Contoh disediakan untuk membuat tugas untuk kedua jenis peluncuran Amazon ECS dengan atau tanpa menggunakan AWS X-Ray. Ubah replaceable nilai, jika sesuai, untuk membuat definisi tugas untuk tugas yang diberi nama taskBv2 dan taskA dari skenario. Ganti nama mesh dan nama simpul virtual untuk APPMESH_RESOURCE_ARN nilai dan daftar port yang didengarkan aplikasi Anda untuk AppPorts nilai konfigurasi proxy. Secara default, App Mesh menggunakan nama sumber daya yang Anda tentukan APPMESH_RESOURCE_ARN saat Envoy merujuk pada dirinya sendiri dalam metrik dan pelacakan. Anda dapat menimpa perilaku ini dengan mengatur variabel lingkungan APPMESH_RESOURCE_CLUSTER dengan nama Anda sendiri. Semua properti dalam contoh berikut diperlukan. Beberapa nilai properti juga diperlukan, tetapi beberapa diperlukanreplaceable.
Jika Anda menjalankan tugas Amazon ECS seperti yang dijelaskan di bagian Kredensi, maka Anda perlu menambahkan peran IAM tugas yang ada, ke contoh.
penting
Fargate harus menggunakan nilai port lebih besar dari 1024.
contoh JSON untuk definisi tugas Amazon ECS - Fargate pada wadah Linux
{ "family" : "taskB", "memory" : "1024", "cpu" : "0.5 vCPU", "proxyConfiguration" : { "containerName" : "envoy", "properties" : [ { "name" : "ProxyIngressPort", "value" : "15000" }, { "name" : "AppPorts", "value" : "9080" }, { "name" : "EgressIgnoredIPs", "value" : "169.254.170.2,169.254.169.254" }, { "name": "EgressIgnoredPorts", "value": "22" }, { "name" : "IgnoredUID", "value" : "1337" }, { "name" : "ProxyEgressPort", "value" : "15001" } ], "type" : "APPMESH" }, "containerDefinitions" : [ { "name" : "appName", "image" : "appImage", "portMappings" : [ { "containerPort" :9080, "protocol" : "tcp" } ], "essential" : true, "dependsOn" : [ { "containerName" : "envoy", "condition" : "HEALTHY" } ] }, { "name" : "envoy", "image" : "840364872350.dkr.ecr.us-west-2.amazonaws.com/aws-appmesh-envoy:v1.39.1.0-prod", "essential" : true, "environment" : [ { "name" : "APPMESH_VIRTUAL_NODE_NAME", "value" : "mesh/apps/virtualNode/serviceB" } ], "healthCheck" : { "command" : [ "CMD-SHELL", "curl -s http://localhost:9901/server_info | grep state | grep -q LIVE" ], "interval" :5, "retries" :3, "startPeriod" :10, "timeout" :2}, "memory" :500, "user" : "1337" } ], "requiresCompatibilities" : [ "FARGATE" ], "taskRoleArn" : "arn:aws:iam::123456789012:role/ecsTaskRole", "executionRoleArn" : "arn:aws:iam::123456789012:role/ecsTaskExecutionRole", "networkMode" : "awsvpc" }
contoh JSON untuk definisi tugas Amazon ECS dengan AWS X-Ray - Fargate pada wadah Linux
X-Ray memungkinkan Anda mengumpulkan data tentang permintaan yang dilayani aplikasi dan menyediakan alat yang dapat Anda gunakan untuk memvisualisasikan arus lalu lintas. Menggunakan X-Ray driver untuk Envoy memungkinkan Envoy melaporkan informasi pelacakan ke. X-Ray Anda dapat mengaktifkan pel X-Ray acakan menggunakan konfigurasi https://docs.aws.amazon.com/app-mesh/latest/userguide/envoy.html Envoy. Berdasarkan konfigurasi, Envoy mengirimkan data pelacakan ke X-Ray daemon yang berjalan sebagai wadah sidecar dan daemon meneruskan jejak ke layanan. X-Ray Setelah jejak dipublikasikan ke X-Ray, Anda dapat menggunakan X-Ray konsol untuk memvisualisasikan grafik panggilan layanan dan meminta detail pelacakan. JSON berikut mewakili definisi tugas untuk mengaktifkan X-Ray integrasi.
{ "family" : "taskB", "memory" : "1024", "cpu" : "512", "proxyConfiguration" : { "containerName" : "envoy", "properties" : [ { "name" : "ProxyIngressPort", "value" : "15000" }, { "name" : "AppPorts", "value" : "9080" }, { "name" : "EgressIgnoredIPs", "value" : "169.254.170.2,169.254.169.254" }, { "name": "EgressIgnoredPorts", "value": "22" }, { "name" : "IgnoredUID", "value" : "1337" }, { "name" : "ProxyEgressPort", "value" : "15001" } ], "type" : "APPMESH" }, "containerDefinitions" : [ { "name" : "appName", "image" : "appImage", "portMappings" : [ { "containerPort" :9080, "protocol" : "tcp" } ], "essential" : true, "dependsOn" : [ { "containerName" : "envoy", "condition" : "HEALTHY" } ] }, { "name" : "envoy", "image" : "840364872350.dkr.ecr.us-west-2.amazonaws.com/aws-appmesh-envoy:v1.39.1.0-prod", "essential" : true, "environment" : [ { "name" : "APPMESH_VIRTUAL_NODE_NAME", "value" : "mesh/apps/virtualNode/serviceB" }, { "name": "ENABLE_ENVOY_XRAY_TRACING", "value": "1" } ], "healthCheck" : { "command" : [ "CMD-SHELL", "curl -s http://localhost:9901/server_info | grep state | grep -q LIVE" ], "interval" :5, "retries" :3, "startPeriod" :10, "timeout" :2}, "memory" :500, "user" : "1337" }, { "name" : "xray-daemon", "image" : "amazon/aws-xray-daemon", "user" : "1337", "essential" : true, "cpu" : "32", "memoryReservation" : "256", "portMappings" : [ { "containerPort" : 2000, "protocol" : "udp" } ] } ], "requiresCompatibilities" : [ "FARGATE" ], "taskRoleArn" : "arn:aws:iam::123456789012:role/ecsTaskRole", "executionRoleArn" : "arn:aws:iam::123456789012:role/ecsTaskExecutionRole", "networkMode" : "awsvpc" }
contoh JSON untuk definisi tugas Amazon ECS - Jenis peluncuran EC2
{ "family": "taskB", "memory": "256", "proxyConfiguration": { "type": "APPMESH", "containerName": "envoy", "properties": [ { "name": "IgnoredUID", "value": "1337" }, { "name": "ProxyIngressPort", "value": "15000" }, { "name": "ProxyEgressPort", "value": "15001" }, { "name": "AppPorts", "value": "9080" }, { "name": "EgressIgnoredIPs", "value": "169.254.170.2,169.254.169.254" }, { "name": "EgressIgnoredPorts", "value": "22" } ] }, "containerDefinitions": [ { "name": "appName", "image": "appImage", "portMappings": [ { "containerPort":9080, "hostPort":9080, "protocol": "tcp" } ], "essential": true, "dependsOn": [ { "containerName": "envoy", "condition": "HEALTHY" } ] }, { "name": "envoy", "image": "840364872350.dkr.ecr.us-west-2.amazonaws.com/aws-appmesh-envoy:v1.39.1.0-prod", "essential": true, "environment": [ { "name": "APPMESH_VIRTUAL_NODE_NAME", "value": "mesh/apps/virtualNode/serviceB" } ], "healthCheck": { "command": [ "CMD-SHELL", "curl -s http://localhost:9901/server_info | grep state | grep -q LIVE" ], "startPeriod":10, "interval":5, "timeout":2, "retries":3}, "user": "1337" } ], "requiresCompatibilities" : [ "EC2" ], "taskRoleArn" : "arn:aws:iam::123456789012:role/ecsTaskRole", "executionRoleArn" : "arn:aws:iam::123456789012:role/ecsTaskExecutionRole", "networkMode": "awsvpc" }
contoh JSON untuk definisi tugas Amazon ECS dengan AWS X-Ray - Jenis peluncuran EC2
{ "family": "taskB", "memory": "256", "cpu" : "1024", "proxyConfiguration": { "type": "APPMESH", "containerName": "envoy", "properties": [ { "name": "IgnoredUID", "value": "1337" }, { "name": "ProxyIngressPort", "value": "15000" }, { "name": "ProxyEgressPort", "value": "15001" }, { "name": "AppPorts", "value": "9080" }, { "name": "EgressIgnoredIPs", "value": "169.254.170.2,169.254.169.254" }, { "name": "EgressIgnoredPorts", "value": "22" } ] }, "containerDefinitions": [ { "name": "appName", "image": "appImage", "portMappings": [ { "containerPort":9080, "hostPort":9080, "protocol": "tcp" } ], "essential": true, "dependsOn": [ { "containerName": "envoy", "condition": "HEALTHY" } ] }, { "name": "envoy", "image": "840364872350.dkr.ecr.us-west-2.amazonaws.com/aws-appmesh-envoy:v1.39.1.0-prod", "essential": true, "environment": [ { "name": "APPMESH_VIRTUAL_NODE_NAME", "value": "mesh/apps/virtualNode/serviceB" }, { "name": "ENABLE_ENVOY_XRAY_TRACING", "value": "1" } ], "healthCheck": { "command": [ "CMD-SHELL", "curl -s http://localhost:9901/server_info | grep state | grep -q LIVE" ], "startPeriod":10, "interval":5, "timeout":2, "retries":3}, "user": "1337" }, { "name": "xray-daemon", "image": "amazon/aws-xray-daemon", "user": "1337", "essential": true, "cpu": 32, "memoryReservation": 256, "portMappings": [ { "containerPort": 2000, "protocol": "udp" } ] } ], "requiresCompatibilities" : [ "EC2" ], "taskRoleArn" : "arn:aws:iam::123456789012:role/ecsTaskRole", "executionRoleArn" : "arn:aws:iam::123456789012:role/ecsTaskExecutionRole", "networkMode": "awsvpc" }
Topik lanjutan
Penerapan Canary menggunakan App Mesh
Penerapan dan rilis Canary membantu Anda mengalihkan lalu lintas antara versi lama aplikasi dan versi yang baru digunakan. Ini juga memantau kesehatan versi yang baru digunakan. Jika ada masalah dengan versi baru, penyebaran kenari dapat secara otomatis mengalihkan lalu lintas kembali ke versi lama. Penerapan Canary memberi Anda kemampuan untuk mengalihkan lalu lintas antar versi aplikasi dengan kontrol lebih.
Untuk informasi selengkapnya tentang cara menerapkan penerapan burung kenari untuk Amazon ECS menggunakan App Mesh, lihat Membuat pipeline dengan penerapan burung kenari untuk Amazon ECS menggunakan App Mesh
catatan
Untuk contoh dan panduan lebih lanjut untuk App Mesh, lihat repositori contoh App Mesh.