Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Siapkan akses pribadi ke bucket Amazon S3 melalui titik akhir VPC
Martin Maritsch, Nicolas Jacob Baer, Gabriel Rodriguez Garcia, Shukhrat Khodjaev, Mohan Gowda Purushothama, dan Joaquin Rinaudo, Amazon Web Services
Ringkasan
Di Amazon Simple Storage Service (Amazon S3), URLs presigned memungkinkan Anda berbagi file dengan ukuran arbitrer dengan pengguna target. Secara default, Amazon S3 presigned dapat URLs diakses dari internet dalam jangka waktu kedaluwarsa, yang membuatnya nyaman digunakan. Namun, lingkungan perusahaan seringkali memerlukan akses ke Amazon S3 yang ditetapkan URLs untuk dibatasi hanya pada jaringan pribadi.
Pola ini menyajikan solusi tanpa server untuk berinteraksi secara aman dengan objek S3 dengan menggunakan presigned URLs dari jaringan pribadi tanpa traversal internet. Dalam arsitektur, pengguna mengakses Application Load Balancer melalui nama domain internal. Lalu lintas dirutekan secara internal melalui Amazon API Gateway dan titik akhir virtual private cloud (VPC) untuk bucket S3. AWS Lambda Fungsi ini menghasilkan presigned URLs untuk unduhan file melalui titik akhir VPC pribadi, yang membantu meningkatkan keamanan dan privasi untuk data sensitif.
Prasyarat dan batasan
Prasyarat
VPC yang menyertakan subnet yang digunakan dalam Akun AWS yang terhubung ke jaringan perusahaan (misalnya, melalui). AWS Direct Connect
Batasan
Bucket S3 harus memiliki nama yang sama dengan domain, jadi sebaiknya Anda memeriksa aturan penamaan bucket Amazon S3.
Contoh arsitektur ini tidak menyertakan fitur pemantauan untuk infrastruktur yang digunakan. Jika kasus penggunaan Anda memerlukan pemantauan, pertimbangkan untuk menambahkan layanan AWS pemantauan.
Contoh arsitektur ini tidak menyertakan validasi masukan. Jika kasus penggunaan Anda memerlukan validasi input dan tingkat keamanan yang lebih tinggi, pertimbangkan AWS WAF untuk menggunakan untuk melindungi API Anda.
Contoh arsitektur ini tidak menyertakan akses logging dengan Application Load Balancer. Jika kasus penggunaan Anda memerlukan pencatatan akses, pertimbangkan untuk mengaktifkan log akses penyeimbang beban.
Versi
Python versi 3.11 atau yang lebih baru
Terraform versi 1.6 atau yang lebih baru
Arsitektur
Tumpukan teknologi target
Layanan AWS berikut digunakan dalam tumpukan teknologi target:
Amazon S3 adalah layanan penyimpanan inti yang digunakan untuk mengunggah, mengunduh, dan menyimpan file dengan aman.
Amazon API Gateway mengekspos sumber daya dan titik akhir untuk berinteraksi dengan bucket S3. Layanan ini berperan dalam menghasilkan presigned URLs untuk mengunduh atau mengunggah data.
AWS Lambdamenghasilkan presigned URLs untuk men-download file dari Amazon S3. Fungsi Lambda dipanggil oleh API Gateway.
Amazon VPC menyebarkan sumber daya dalam VPC untuk menyediakan isolasi jaringan. VPC mencakup subnet dan tabel routing untuk mengontrol arus lalu lintas.
Application Load Balancer merutekan lalu lintas masuk ke API Gateway atau ke endpoint VPC bucket S3. Ini memungkinkan pengguna dari jaringan perusahaan untuk mengakses sumber daya secara internal.
Titik akhir VPC untuk Amazon S3 memungkinkan komunikasi langsung dan pribadi antara sumber daya di VPC dan Amazon S3 tanpa melintasi internet publik.
AWS Identity and Access Management (IAM) mengontrol akses ke AWS sumber daya. Izin disiapkan untuk memastikan interaksi yang aman dengan API dan layanan lainnya.
Arsitektur target

Diagram ini menggambarkan hal sebagai berikut:
Pengguna dari jaringan perusahaan dapat mengakses Application Load Balancer melalui nama domain internal. Kami berasumsi bahwa ada koneksi antara jaringan perusahaan dan subnet intranet di Akun AWS (misalnya, melalui koneksi). AWS Direct Connect
Application Load Balancer merutekan lalu lintas masuk ke API Gateway untuk menghasilkan presigned URLs untuk mengunduh atau mengunggah data ke Amazon S3, atau ke titik akhir VPC bucket S3. Dalam kedua skenario, permintaan dirutekan secara internal dan tidak perlu melintasi internet.
API Gateway mengekspos sumber daya dan titik akhir untuk berinteraksi dengan bucket S3. Dalam contoh ini, kami menyediakan titik akhir untuk mengunduh file dari bucket S3, tetapi ini dapat diperluas untuk menyediakan fungsionalitas unggah juga.
Fungsi Lambda menghasilkan URL yang telah ditetapkan sebelumnya untuk mengunduh file dari Amazon S3 dengan menggunakan nama domain Application Load Balancer, bukan domain Amazon S3 publik.
Pengguna menerima URL yang telah ditetapkan sebelumnya dan menggunakannya untuk mengunduh file dari Amazon S3 dengan menggunakan Application Load Balancer. Penyeimbang beban menyertakan rute default untuk mengirim lalu lintas yang tidak dimaksudkan untuk API menuju titik akhir VPC bucket S3.
Titik akhir VPC merutekan URL yang telah ditetapkan sebelumnya dengan nama domain kustom ke bucket S3. Bucket S3 harus memiliki nama yang sama dengan domain.
Otomatisasi dan skala
Pola ini menggunakan Terraform untuk menyebarkan infrastruktur dari repositori kode ke file. Akun AWS
Alat
Alat
Python adalah bahasa
pemrograman komputer tujuan umum. Terraform
adalah alat infrastruktur sebagai kode (IAc) HashiCorp yang membantu Anda membuat dan mengelola sumber daya cloud dan lokal. AWS Command Line Interface (AWS CLI) adalah alat open source yang membantu Anda berinteraksi dengan AWS layanan melalui perintah di shell baris perintah Anda.
Repositori kode
Praktik terbaik
Contoh arsitektur untuk pola ini menggunakan izin IAM untuk mengontrol akses ke API. Siapa pun yang memiliki kredensil IAM yang valid dapat memanggil API. Jika kasus penggunaan Anda memerlukan model otorisasi yang lebih kompleks, Anda mungkin ingin menggunakan mekanisme kontrol akses yang berbeda.
Epik
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Dapatkan AWS kredensil. | Tinjau AWS kredensi Anda dan akses Anda ke akun Anda. Untuk petunjuk, lihat Pengaturan konfigurasi dan file kredensyal dalam AWS CLI dokumentasi. | AWS DevOps, AWS Umum |
Kloning repositori. | Kloning GitHub repositori yang disediakan dengan pola ini:
| AWS DevOps, AWS Umum |
Konfigurasikan variabel. |
| AWS DevOps, AWS Umum |
Menyebarkan solusi. |
| AWS DevOps, AWS Umum |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Buat file uji. | Unggah file ke Amazon S3 untuk membuat skenario pengujian untuk unduhan file. Anda dapat menggunakan konsol Amazon S3
| AWS DevOps, AWS Umum |
Uji fungsionalitas URL yang telah ditetapkan sebelumnya. |
| AWS DevOps, AWS Umum |
Bersihkan. | Pastikan untuk menghapus sumber daya saat tidak lagi diperlukan:
| AWS DevOps, AWS Umum |
Pemecahan Masalah
| Isu | Solusi |
|---|---|
Nama kunci objek S3 dengan karakter khusus seperti tanda angka (#) memecah parameter URL dan menyebabkan kesalahan. | Encode parameter URL dengan benar, dan pastikan bahwa nama kunci objek S3 mengikuti pedoman Amazon S3. |
Sumber daya terkait
Amazon S3:
Amazon API Gateway:
Application Load Balancer:
Hosting Situs Web Statis HTTPS Internal dengan ALB, S3, dan PrivateLink
(AWS posting blog)