

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
<a name="set-up-private-access-to-an-amazon-s3-bucket-through-a-vpc-endpoint"></a>

*Martin Maritsch, Nicolas Jacob Baer, Gabriel Rodriguez Garcia, Shukhrat Khodjaev, Mohan Gowda Purushothama, dan Joaquin Rinaudo, Amazon Web Services*

## Ringkasan
<a name="set-up-private-access-to-an-amazon-s3-bucket-through-a-vpc-endpoint-summary"></a>

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
<a name="set-up-private-access-to-an-amazon-s3-bucket-through-a-vpc-endpoint-prereqs"></a>

**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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html).
+ Contoh arsitektur ini tidak menyertakan fitur pemantauan untuk infrastruktur yang digunakan. Jika kasus penggunaan Anda memerlukan pemantauan, pertimbangkan untuk menambahkan [layanan AWS pemantauan](https://docs.aws.amazon.com/prescriptive-guidance/latest/implementing-logging-monitoring-cloudwatch/welcome.html).
+ 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](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-control-access-aws-waf.html).
+ 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](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-access-logs.html).

**Versi**
+ Python versi 3.11 atau yang lebih baru
+ Terraform versi 1.6 atau yang lebih baru

## Arsitektur
<a name="set-up-private-access-to-an-amazon-s3-bucket-through-a-vpc-endpoint-architecture"></a>

**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 Lambda**menghasilkan 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**

![\[Menyiapkan akses pribadi ke bucket S3 melalui endpoing VPC\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/images/pattern-img/683ca6a1-789c-4444-bcbf-e4e80d253df3/images/1ca7ee17-d346-4eb9-bf61-ccf42528a401.png)


Diagram ini menggambarkan hal sebagai berikut:

1. 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). Direct Connect 

1. 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.

1. 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.

1. 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.

1. 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.

1. 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
<a name="set-up-private-access-to-an-amazon-s3-bucket-through-a-vpc-endpoint-tools"></a>

**Alat**
+ [Python adalah bahasa](https://www.python.org/) pemrograman komputer tujuan umum.
+ [Terraform](https://www.terraform.io/) adalah alat infrastruktur sebagai kode (IAc) HashiCorp yang membantu Anda membuat dan mengelola sumber daya cloud dan lokal.
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) adalah alat open source yang membantu Anda berinteraksi dengan AWS layanan melalui perintah di shell baris perintah Anda.

**Repositori kode**

[Kode untuk pola ini tersedia dalam GitHub repositori di private-s3-vpce. https://github.com/aws-samples/](https://github.com/aws-samples/private-s3-vpce)

## Praktik terbaik
<a name="set-up-private-access-to-an-amazon-s3-bucket-through-a-vpc-endpoint-best-practices"></a>

Contoh arsitektur untuk pola ini menggunakan [izin IAM](https://docs.aws.amazon.com/apigateway/latest/developerguide/permissions.html) 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](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-control-access-to-api.html).

## Epik
<a name="set-up-private-access-to-an-amazon-s3-bucket-through-a-vpc-endpoint-epics"></a>

### Menerapkan solusi dalam Akun AWS
<a name="deploy-the-solution-in-an-aws-account"></a>


| 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](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html) dalam AWS CLI dokumentasi. | AWS DevOps, AWS Umum | 
| Kloning repositori. | Kloning GitHub repositori yang disediakan dengan pola ini:<pre>git clone https://github.com/aws-samples/private-s3-vpce</pre> | AWS DevOps, AWS Umum | 
| Konfigurasikan variabel. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/set-up-private-access-to-an-amazon-s3-bucket-through-a-vpc-endpoint.html) | AWS DevOps, AWS Umum | 
| Menyebarkan solusi. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/set-up-private-access-to-an-amazon-s3-bucket-through-a-vpc-endpoint.html) | AWS DevOps, AWS Umum | 

### Pengujian solusi
<a name="test-the-solution"></a>


| 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](https://console.aws.amazon.com/s3/) atau perintah berikut: AWS CLI <pre>aws s3 cp /path/to/testfile s3://your-bucket-name/testfile</pre> | AWS DevOps, AWS Umum | 
| Uji fungsionalitas URL yang telah ditetapkan sebelumnya. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/set-up-private-access-to-an-amazon-s3-bucket-through-a-vpc-endpoint.html) | AWS DevOps, AWS Umum | 
| Bersihkan. | Pastikan untuk menghapus sumber daya saat tidak lagi diperlukan:<pre>terraform destroy</pre> | AWS DevOps, AWS Umum | 

## Pemecahan masalah
<a name="set-up-private-access-to-an-amazon-s3-bucket-through-a-vpc-endpoint-troubleshooting"></a>


| Isu | Solusi | 
| --- | --- | 
| Nama kunci objek S3 dengan karakter khusus seperti tanda angka (\$1) memecah parameter URL dan menyebabkan kesalahan. | Encode parameter URL dengan benar, dan pastikan bahwa nama kunci objek S3 mengikuti pedoman [Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html). | 

## Sumber daya terkait
<a name="set-up-private-access-to-an-amazon-s3-bucket-through-a-vpc-endpoint-resources"></a>

Amazon S3:
+ [Berbagi objek dengan presigned URLs](https://docs.aws.amazon.com/AmazonS3/latest/userguide/ShareObjectPreSignedURL.html)
+ [Mengontrol akses dari titik akhir VPC dengan kebijakan bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies-vpc-endpoint.html)

Amazon API Gateway:
+ [Menggunakan kebijakan titik akhir VPC secara pribadi APIs di API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-vpc-endpoint-policies.html)

Application Load Balancer:
+ [Hosting Situs Web Statis HTTPS Internal dengan ALB, S3, dan PrivateLink](https://aws.amazon.com/blogs/networking-and-content-delivery/hosting-internal-https-static-websites-with-alb-s3-and-privatelink/) (AWS posting blog)