TurboJet
Storage

AWS S3

Konfigurasi Amazon S3 dengan IAM, CORS, dan variabel env S3_* TurboJet.

Amazon S3 adalah API S3 asli yang diimplementasikan provider lain. Pakai ini jika Anda sudah di AWS atau butuh integrasi erat dengan ekosistem AWS.

1. Buat bucket S3

Di konsol AWS S3, buat bucket:

  • Pilih nama unik global dan region dekat pengguna Anda
  • Biarkan Block all public access aktif
  • Versioning opsional tetapi berguna di production

Jaga bucket tetap privat

TurboJet memakai URL terpresign untuk unggah dan unduh. Akses publik tidak diperlukan.

2. Buat pengguna IAM

Di konsol IAM, buat pengguna untuk app dan lampirkan policy yang di-scope ke bucket Anda:

IAM Policy (scoped to your bucket)
{
	"Version": "2012-10-17",
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"s3:GetObject",
				"s3:PutObject",
				"s3:DeleteObject",
				"s3:ListBucket"
			],
			"Resource": [
				"arn:aws:s3:::your-app-bucket",
				"arn:aws:s3:::your-app-bucket/*"
			]
		}
	]
}

Buat access key di Security credentials dan salin Access Key ID serta Secret Access Key.

3. Konfigurasi CORS

Bucket → Permissions → Cross-origin resource sharing (CORS):

[
	{
		"AllowedHeaders": ["*"],
		"AllowedMethods": ["GET", "PUT", "POST", "DELETE", "HEAD"],
		"AllowedOrigins": [
			"https://your-marketing-domain.com",
			"http://localhost:3001"
		],
		"ExposeHeaders": ["ETag"],
		"MaxAgeSeconds": 3600
	}
]

Ganti origin dengan URL marketing nyata dan port lokal Anda.

4. Variabel environment

.env
S3_ACCESS_KEY_ID="your-aws-access-key-id"
S3_SECRET_ACCESS_KEY="your-aws-secret-access-key"
S3_ENDPOINT="https://s3.us-east-1.amazonaws.com"
S3_REGION="us-east-1"
S3_BUCKET="your-app-bucket"

Gunakan region bucket Anda. Pola endpoint: https://s3.<region>.amazonaws.com.

5. Uji unggahan

Jalankan app marketing dan ikuti Unggah file sambil masuk.

CloudFront (opsional)

Untuk latensi lebih rendah di production, taruh distribusi CloudFront di depan bucket dengan Origin Access Control (OAC) agar bucket tetap privat.

FAQ

Berapa biaya S3?

Harga berbeda per region dan kelas. S3 Standard kurang lebih sen per GB-bulan plus biaya request dan egress. Cek harga AWS S3 terkini. Untuk egress berat, bandingkan Cloudflare R2.

Apakah akses publik diperlukan?

Tidak. Pakai /api/storage/signed untuk file privat.

Bagaimana membatasi tipe atau ukuran file?

Edit packages/validations/src/storage/storage.ts — batas itu ditegakkan saat membuat URL unggah.

Terkait

Di halaman ini