Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menyiapkan nama domain khusus untuk titik akhir Gateway
Secara default, titik akhir Gateway disediakan dengan nama domain AWS yang dikelola dalam format. <gateway-id>.gateway.bedrock-agentcore.<region>.amazonaws.com Untuk lingkungan produksi atau untuk menciptakan pengalaman yang lebih ramah pengguna, Anda mungkin ingin menggunakan nama domain khusus untuk titik akhir gateway Anda. Bagian ini memandu Anda melalui pengaturan nama domain khusus menggunakan Amazon CloudFront sebagai proxy terbalik.
Prasyarat
Sebelum memulai, pastikan Anda memiliki:
-
Titik akhir Gateway yang berfungsi
-
Delegasi DNS (jika domain Route 53 Anda harus dapat dijangkau secara publik)
-
AWS CDK diinstal dan dikonfigurasi (jika mengikuti pendekatan CDK)
-
Izin IAM yang sesuai untuk membuat dan mengelola CloudFront distribusi, zona yang dihosting Route 53, dan sertifikat ACM
Ikhtisar solusi
Solusinya melibatkan komponen berikut:
-
Route 53 Hosted Zone: Mengelola catatan DNS untuk domain kustom Anda
-
Sertifikat ACM: Menyediakan SSL/TLS enkripsi untuk domain kustom Anda
-
CloudFront Distribusi: Bertindak sebagai proxy terbalik, meneruskan permintaan dari domain kustom Anda ke titik akhir Gateway
-
Rute 53 A Record: Memetakan domain khusus Anda ke CloudFront distribusi
Langkah-langkah berikut akan memandu Anda melalui pengaturan komponen ini menggunakan AWS CDK.
Langkah-langkah implementasi
Langkah 1: Buat zona yang dihosting Route 53
Pertama, buat zona host Route 53 untuk domain kustom Anda:
import { RemovalPolicy } from 'aws-cdk-lib'; import { PublicHostedZone } from 'aws-cdk-lib/aws-route53'; const domainName = 'my.example.com'; const hostedZone = new PublicHostedZone(this, 'HostedZone', { zoneName: domainName, }); this.hostedZone.applyRemovalPolicy(RemovalPolicy.RETAIN);
catatan
Kami menerapkan kebijakan penghapusan RETAIN untuk mencegah penghapusan zona yang dihosting secara tidak sengaja selama pembaruan atau penghapusan tumpukan.
Langkah 2: Buat DNS-validated sertifikat
Selanjutnya, buat SSL/TLS sertifikat untuk domain kustom Anda menggunakan AWS Certificate Manager (ACM) dengan validasi DNS:
import { RemovalPolicy } from 'aws-cdk-lib'; import { Certificate, CertificateValidation } from 'aws-cdk-lib/aws-certificatemanager'; const certificate = new Certificate(this, 'SSLCertificate', { domainName: domainName, // route53 hosted zone domain name from step 1 validation: CertificateValidation.fromDns(hostedZone), // route53 hosted zone from step 1 }); this.certificate.applyRemovalPolicy(RemovalPolicy.RETAIN);
Validasi DNS secara otomatis membuat catatan validasi yang diperlukan di zona host Route 53 Anda.
Langkah 3: Buat CloudFront distribusi
Buat CloudFront distribusi untuk bertindak sebagai proxy terbalik untuk titik akhir Gateway Anda:
import { AllowedMethods, CachePolicy, Distribution, OriginProtocolPolicy, ViewerProtocolPolicy } from 'aws-cdk-lib/aws-cloudfront'; import { HttpOrigin } from 'aws-cdk-lib/aws-cloudfront-origins'; const bedrockAgentCoreGatewayHostName = '<mymcpserver>.gateway.bedrock-agentcore.<region>.amazonaws.com' const bedrockAgentCoreGatewayPath = '/mcp' // can also be left undefined, depending on your requirement const distribution = new Distribution(this, 'Distribution', { defaultBehavior: { origin: new HttpOrigin(bedrockAgentCoreGatewayHostName, { protocolPolicy: OriginProtocolPolicy.HTTPS_ONLY, originPath: bedrockAgentCoreGatewayPath, }), viewerProtocolPolicy: ViewerProtocolPolicy.HTTPS_ONLY, cachePolicy: CachePolicy.CACHING_DISABLED, // important since caching is enabled by default and hence is not suitable for a reverse proxy allowedMethods: AllowedMethods.ALLOW_ALL, }, domainNames: [domainName], // route53 hosted zone domain name from step 1 certificate: certificate, // ssl certificate for the route53 domain from step 2 });
penting
Set cachePolicy: CachePolicy.CACHING_DISABLED el untuk memastikan bahwa CloudFront tidak menyimpan respons dari titik akhir Gateway Anda, yang penting untuk interaksi API dinamis.
Ganti <mymcpserver> dengan ID gateway Anda dan <region> dengan Wil AWS ayah Anda (mis.,us-east-1).
Langkah 4: Buat catatan Route 53 A
Buat catatan Route 53 A yang mengarahkan domain kustom Anda ke CloudFront distribusi:
import { ARecord, RecordTarget } from 'aws-cdk-lib/aws-route53'; import { CloudFrontTarget } from 'aws-cdk-lib/aws-route53-targets'; const aRecord = new ARecord(this, 'AliasRecord', { zone: hostedZone, // route53 hosted zone from step 1 recordName: domainName, // route53 hosted zone domain name from step 1 target: RecordTarget.fromAlias(new CloudFrontTarget(distribution)), // cloudfront distribution from step 3 });
Ini membuat catatan alias yang memetakan domain kustom Anda ke CloudFront distribusi.
Langkah 5: Menyebarkan infrastruktur Anda
Terapkan tumpukan CDK Anda untuk membuat sumber daya:
cdk deploy
Proses penerapan mungkin memakan waktu, terutama untuk validasi sertifikat dan pembuatan CloudFront distribusi.
Menguji domain kustom Anda
Setelah menerapkan infrastruktur Anda, verifikasi bahwa domain kustom Anda dikonfigurasi dengan benar:
Verifikasi resolusi DNS
Gunakan dig perintah untuk memverifikasi bahwa domain kustom Anda terselesaikan ke CloudFront distribusi:
dig my.example.com
Output harus menunjukkan bahwa domain Anda teratasi ke CloudFront alamat IP.
Verifikasi sertifikat SSL
Gunakan curl untuk memverifikasi bahwa sertifikat SSL dikonfigurasi dengan benar:
curl -v https://my.example.com
Output harus menunjukkan jabat tangan SSL yang berhasil tanpa kesalahan sertifikat.
Mengkonfigurasi klien MCP
Setelah domain kustom diatur dan diverifikasi, Anda dapat mengonfigurasi klien MCP untuk menggunakannya:
Konfigurasi kursor
Untuk Cursor, perbarui file konfigurasi Anda:
{ "mcpServers": { "my-mcp-server": { "url": "https://my.example.com" } } }
Klien MCP lainnya
Untuk klien MCP yang tidak mendukung HTTP yang dapat dialirkan secara native:
{ "mcpServers": { "my-mcp-server": { "command": "/path/to/uvx", "args": [ "mcp-proxy", "--transport", "streamablehttp", "https://my.example.com" ] } } }
Pertimbangan tambahan
- Implikasi biaya
-
Menggunakan CloudFront sebagai proxy terbalik menimbulkan biaya tambahan untuk transfer data dan penanganan permintaan. Tinjau model CloudFront penetapan harga untuk memahami implikasi biaya untuk kasus penggunaan spesifik Anda.
- Pertimbangan keamanan
-
Pertimbangkan untuk menerapkan langkah-langkah keamanan tambahan seperti:
-
Aturan WAF untuk melindungi titik akhir Anda dari eksploitasi web umum
-
Geo-restrictions untuk membatasi akses ke wilayah geografis tertentu
-
Header khusus atau permintaan penandatanganan untuk menambahkan lapisan otentikasi tambahan
-
- Pencatatan dan pemantauan
-
Akti CloudFront fkan log akses dan konfigurasikan CloudWatch alarm untuk memantau kesehatan dan kinerja pengaturan domain kustom Anda.
- Perpanjangan sertifikat
-
Sertifikat ACM yang dikeluarkan melalui validasi DNS diperpanjang secara otomatis selama catatan DNS tetap ada. Pastikan Anda tidak menghapus catatan validasi.
- Titik akhir sumber daya dilindungi OAuth dengan domain khusus
-
Secara default,
/.well-known/oauth-protected-resourcetitik akhir mengembalikan URL sumber daya yang berisi domain gateway, bukan domain kustom Anda. Hal ini dapat menyebabkan klien OAuth gagal otentikasi saat menggunakan domain khusus.Untuk mengatasi masalah ini, Anda dapat menerapkan fungsi Lambda @Edge yang mencegat respons penemuan OAuth dan menghasilkan respons baru dengan URL domain kustom yang benar. Berikut pendekatannya:
-
Gunakan Lambda @Edge dengan tipe peristiwa ORIGIN_RESPONSE: Buat fungsi yang memicu respons asal untuk mencegat respons titik akhir sumber daya yang dilindungi OAuth.
-
Hasilkan respons baru: Lambda @Edge tidak dapat membaca badan respons asal, jadi alih-alih memodifikasi respons yang ada, buat respons JSON yang sama sekali baru dengan domain khusus.
-
Asosiasikan dengan CloudFront perilaku: Konfigurasikan fungsi Lambda @Edge untuk memicu secara khusus untuk pola
/.well-known/oauth-protected-resourcejalur.Setelah menerapkan solusi ini, titik akhir sumber daya yang dilindungi OAuth akan mengembalikan domain kustom yang benar:
curl https://my-custom-domain.com/.well-known/oauth-protected-resource { "authorization_servers": ["https://my-org.okta.com/oauth2/default"], "resource": "https://my-custom-domain.com/mcp" }catatan
Sementara Lambda @Edge memberikan solusi untuk masalah ini, menerapkan domain khusus untuk AgentCore Gateway tanpa dukungan bawaan memerlukan kompleksitas tambahan yang mungkin tidak optimal untuk semua pelanggan. Pertimbangkan pendekatan ini sebagai solusi sampai dukungan asli untuk penemuan OAuth dengan domain khusus tersedia.
-
Pemecahan masalah
- Masalah resolusi DNS
-
Jika domain kustom Anda tidak diselesaikan dengan benar:
-
Verifikasi bahwa catatan A dikonfigurasi dengan benar di zona yang dihosting Route 53 Anda
-
Periksa apakah server nama domain Anda diatur dengan benar di registrar domain Anda
-
Berikan waktu untuk propagasi DNS (hingga 48 jam dalam beberapa kasus)
-
- Masalah sertifikat SSL
-
Jika Anda mengalami kesalahan sertifikat SSL:
-
Verifikasi bahwa sertifikat dikeluarkan dan aktif di konsol ACM
-
Periksa apakah sertifikat dikaitkan dengan benar dengan CloudFront distribusi Anda
-
Pastikan sertifikat mencakup nama domain yang tepat yang Anda gunakan
-
- Masalah konektivitas gateway
-
Jika domain kustom Anda tidak terhubung ke gateway Anda:
-
Verifikasi bahwa domain asal dan jalur dalam CloudFront distribusi Anda benar
-
Periksa apakah titik akhir gateway Anda dapat diakses secara langsung
-
T CloudFront injau log distribusi untuk setiap kesalahan
-
Kesimpulan
Menyiapkan nama domain khusus untuk titik akhir Gateway meningkatkan tampilan profesional aplikasi Anda dan memberikan fleksibilitas dalam mengelola titik akhir API Anda. Dengan mengikuti langkah-langkah yang diuraikan dalam panduan ini, Anda dapat membuat konfigurasi domain kustom yang aman dan andal CloudFront menggunakan proxy terbalik.
Untuk informasi selengkapnya tentang fitur dan kemampuan Gateway, lihat Amazon Bedrock AgentCore Gateway: Sambungkan alat dan sumber daya lainnya dengan aman ke Gateway Anda.