30 Eylül 2026 · 5 dk okuma
Gizli S3 ve R2 dosyalarını presigned URL ile paylaşma
Her dosya herkese açık bir bucket'ta durmamalı. Sözleşmeler, faturalar ya da yayınlanmamış build'ler gizli kalıp yine de paylaşılabilir: yalnızca sınırlı bir süre çalışan bir bağlantıyla.
Presigned URL'ler nasıl çalışır
URL, S3'ün isteği doğrulamak için ihtiyaç duyduğu her şeyi içerir: hangi anahtarla imzalandığını, ne zaman imzalandığını, ne kadar geçerli olduğunu ve bir imzayı. Şuna benzer:
https://your-bucket.s3.eu-central-1.amazonaws.com/contract.pdf
?X-Amz-Algorithm=AWS4-HMAC-SHA256
&X-Amz-Credential=AKIA…/20260930/eu-central-1/s3/aws4_request
&X-Amz-Date=20260930T120000Z
&X-Amz-Expires=3600
&X-Amz-SignedHeaders=host
&X-Amz-Signature=…
İmzalama senin bilgisayarında olur. Biri bağlantıyı açana kadar sağlayıcıya hiçbir şey gönderilmez ve bağlantının herhangi bir kısmını değiştirmek imzayı bozar.
AWS CLI ile oluştur
aws s3 presign s3://your-bucket/contract.pdf --expires-in 86400
Bu bağlantı 24 saat çalışır. Cloudflare R2 ya da başka bir S3 uyumlu servis için CLI'ı onun uç noktasına yönlendir:
aws s3 presign s3://your-bucket/contract.pdf --expires-in 86400 \
--endpoint-url https://<ACCOUNT_ID>.r2.cloudflarestorage.comBilmen gereken sınırlar
- En fazla 7 gün. Signature Version 4, S3'te de R2'de de en fazla 604.800 saniyeye izin verir.
- Geçici kimlik bilgileri daha erken biter. STS ya da SSO oturumuyla imzalanan bir URL, daha uzun bir süre istemiş olsan bile o oturum sona erdiğinde çalışmayı bırakır.
- R2, API alan adını ister. R2'de presigned URL'ler özel alan adıyla değil,
<ACCOUNT_ID>.r2.cloudflarestorage.comile çalışır. - Bağlantıya sahip herkes kullanabilir. Süresi dolana kadar ona bir şifre gibi davran.
- Bağlantı bazında iptal yok. Bir bağlantıyı erken kesmek için nesneyi sil ya da yeniden adlandır veya onu imzalayan access key'i devre dışı bırak.
Presigned URL mi, herkese açık bucket mı?
Görülmesi amaçlanan ve çalışmaya devam etmesi gereken dosyalar için herkese açık bir bucket kullan: dokümanlardaki ekran görüntüleri, bir README'deki görseller. Hassas ya da kısa ömürlü her şey için presigned URL kullan. Birçok kişi her birinden bir bucket tutar ve dosya bazında seçer.
Sık sorulan sorular
Bir presigned URL 7 günden uzun geçerli olabilir mi?
S3 ve R2'nin kullandığı Signature Version 4 ile hayır. Daha uzun erişim için dosyayı herkese açık yap ya da eskisinin süresi dolunca yeni bir bağlantı oluştur.
Presigned URL'im neden SignatureDoesNotMatch döndürüyor?
Genellikle URL imzalandıktan sonra değiştirilmiştir; örneğin bir e-posta istemcisi tarafından ya da adres özel bir alan adıyla değiştirildiğinde. Bölge ve uç nokta ayarlarının da bucket'la eşleşmesi gerekir.
Presigned URL'ler Backblaze B2 ve MinIO ile çalışır mı?
Evet. İkisi de S3 uyumlu API'leri üzerinden Signature Version 4 presigned URL'leri destekler.