Menjangkau S3 dari jaringan kantor melalui VPN situs bukan masalah perutean yang bisa diselesaikan rute statis sendirian. Endpoint gateway terpasang pada tabel rute dan melayani permintaan yang berasal dari dalam VPC. Endpoint antarmuka menempatkan antarmuka jaringan elastis dengan alamat privat di subnet Anda, dan alamat tersebut dapat dijangkau dari lokasi melalui VPN atau Direct Connect. Dari mana permintaan dimulai menentukan mana dari keduanya yang benar-benar Anda butuhkan, dan pekerjaan DNS, grup keamanan, serta kebijakan mengikuti jawaban itu.

Pisahkan jenis endpoint berdasarkan dari mana permintaan dimulai

Endpoint gateway muncul sebagai entri tabel rute yang menunjuk ke daftar prefiks terkelola. Ia tidak memiliki antarmuka jaringan, grup keamanan, maupun alamat privat sendiri, dan justru karena itu host di lokasi tidak dapat merutekan ke sana: tidak ada apa pun di sisi lain untuk dirutekan. Lalu lintas dari dalam VPC mencapai S3 karena tabel rute subnet mengirim prefiks tersebut ke endpoint. Lalu lintas dari tempat lain tidak memiliki entri semacam itu untuk diikuti.

Endpoint antarmuka adalah sekumpulan antarmuka jaringan di subnet yang Anda pilih, masing-masing dengan alamat privat dari subnet itu dan grup keamanan yang terpasang. Itulah bentuk yang dapat digunakan klien hibrida, karena ini tujuan biasa yang dapat membawa paket melalui tunnel Anda. Ini juga berarti endpoint memakai alamat di subnet dan bisa kehabisan.

aws ec2 describe-vpc-endpoints --query "VpcEndpoints[].{Id:VpcEndpointId,Type:VpcEndpointType,Service:ServiceName,State:State}" --output table

Baca kolom Type, bukan namanya. Satu VPC biasanya menampung kedua jenis untuk layanan yang sama, dan entri yang dibutuhkan aplikasi di lokasi Anda adalah entri antarmuka.

Bangun jalur ke alamat antarmuka sebelum menguji S3

Tiga hal harus benar sekaligus: router di lokasi memiliki rute ke subnet endpoint, jalur balik dari subnet itu mencapai jaringan klien, dan grup keamanan endpoint mengizinkan rentang sumber klien. ACL jaringan subnet masih bisa menjatuhkan paket setelah ketiganya lolos, jadi periksa itu sebagai butir keempat, bukan sebagai renungan belakangan.

Rute yang berfungsi ke salah satu instans EC2 di VPC tidak membuktikan satu pun dari hal itu. Itu hanya menunjukkan tunnel hidup, bagian dari jalur yang sudah Anda ketahui. Buktikan alamat endpoint secara terpisah, lalu buktikan nama itu terurai ke alamat tersebut.

ip route get 10.60.4.37
nc -vz 10.60.4.37 443
openssl s_client -connect 10.60.4.37:443 -servername bucket.vpce-0123456789abcdef0-abc123.s3.us-east-1.vpce.amazonaws.com </dev/null

Perintah pertama menunjukkan antarmuka mana yang akan dipakai klien. Perintah kedua membuktikan jabat tangan TCP. Perintah ketiga membuktikan TLS selesai dengan sertifikat yang sah untuk nama endpoint, dan itulah pemeriksaan yang menangkap alamat keliru sebelum Anda menyalahkan izin.

Putuskan jawaban DNS mana yang diterima aplikasi

Adanya endpoint antarmuka di VPC tidak dengan sendirinya mengalihkan SDK di lokasi. Klien memakai nama khusus endpoint yang diterbitkan AWS untuk endpoint itu, atau zona terhosting privat yang sengaja Anda buat dapat diuraikan dari kantor.

Untuk resolusi hibrida, resolver di lokasi membutuhkan jalur yang didukung ke tampilan DNS VPC, biasanya melalui endpoint masuk Resolver. Mengaktifkan DNS privat tanpa memahami sumber kueri mana yang terpengaruh adalah cara sebuah pencarian mulai mengembalikan alamat yang tidak dapat dijangkau kantor. Pengaturan itu mengubah jawaban untuk kueri yang datang melalui resolver VPC, bukan untuk setiap klien di mana-mana.

dig +short bucket.vpce-0123456789abcdef0-abc123.s3.us-east-1.vpce.amazonaws.com
aws s3api head-bucket --bucket example-artifacts --endpoint-url https://bucket.vpce-0123456789abcdef0-abc123.s3.us-east-1.vpce.amazonaws.com

Jalankan keduanya di host aplikasi, bukan di kotak loncat di dalam VPC. Resolver yang menjawab di sana adalah yang dipakai beban kerja Anda, dan jawaban berbeda dari host berbeda adalah sumber kebingungan paling umum dalam desain ini.

Keterjangkauan bukan otorisasi

Permintaan yang tiba di endpoint tetap membutuhkan prinsipal yang berwenang dan izin bucket yang berlaku. Kebijakan endpoint dapat mempersempit apa yang diizinkan endpoint, dan kebijakan bucket dapat mempersempitnya lagi. Menjangkau antarmuka tidak mengatakan apa pun tentang objek mana yang boleh dibaca pemanggil.

Uji kedua arah: satu panggilan berwenang yang tidak berbahaya ke bucket yang dimaksud, dan satu panggilan yang diperkirakan ditolak untuk identitas atau sumber daya di luar kebijakan. Simpan nama endpoint, alamat hasil resolusi, dan konteks kebijakan bersama hasilnya agar orang berikutnya dapat mereproduksinya. Penolakan yang menyebut jenis kebijakan menghemat satu jam menebak.

Terakhir, perhitungkan harga kedua opsi sebelum menyediakan. Endpoint antarmuka menagih per jam antarmuka dan per gigabyte, sedangkan endpoint gateway tidak, dan perbedaan itu memutuskan pertanyaan bagi banyak beban kerja bervolume rendah yang hanya membutuhkan akses dari sisi VPC.

Artikel terkait