Yaklaşık 10 dakika

Amazon S3'e dosya yükleme ve herkese açık link paylaşma

Amazon S3, nesne depolamanın ilk örneğidir ve Aktar'ın Amazon S3 hazır ayarıyla çalışır. Dikkat isteyen tek kısım herkese açık erişimdir: S3 bunu varsayılan olarak engeller, bu yüzden ya herkese açık okuma için bir bucket policy eklersin ya da bucket'ın önüne CloudFront koyarsın.

Neye ihtiyacın var

  • Bir AWS hesabı
  • S3 bucket'ı ve IAM kullanıcısı oluşturma yetkisi
  • Mac'inde kurulu Aktar

Adım adım

  1. 1

    Bir bucket oluştur

    S3 konsolunda Create bucket'a tıkla, dünya genelinde benzersiz bir ad ve sana en yakın bölgeyi seç, örneğin eu-central-1. Varsayılan "Bucket owner enforced" nesne sahipliğini koruyabilirsin: Aktar ACL kullanmaz.

  2. 2

    Herkese açık okumaya izin ver

    A seçeneği, bucket policy: bucket'ın Permissions sekmesinde, herkese açık bucket policy'lerini engelleyen "Block public access" ayarlarını kapat, ardından şu bucket policy'yi ekle (YOUR-BUCKET kısmını değiştir):

    {
      "Version": "2012-10-17",
      "Statement": [{
        "Sid": "PublicRead",
        "Effect": "Allow",
        "Principal": "*",
        "Action": "s3:GetObject",
        "Resource": "arn:aws:s3:::YOUR-BUCKET/*"
      }]
    }

    B seçeneği, CloudFront: bucket'ı gizli tut ve kaynağı (origin) bucket olan bir CloudFront dağıtımı oluştur (Origin Access Control kullanarak). Bu sana özel alan adında HTTPS ve önbellekleme sağlar.

  3. 3

    Aktar için bir IAM kullanıcısı oluştur

    IAM'de bir kullanıcı oluştur ve ona yalnızca Aktar'ın o bucket üzerinde ihtiyaç duyduğu işlemlere izin veren bir policy ekle:

    {
      "Version": "2012-10-17",
      "Statement": [
        { "Effect": "Allow", "Action": "s3:ListBucket",
          "Resource": "arn:aws:s3:::YOUR-BUCKET" },
        { "Effect": "Allow",
          "Action": ["s3:PutObject", "s3:GetObject", "s3:DeleteObject"],
          "Resource": "arn:aws:s3:::YOUR-BUCKET/*" }
      ]
    }

    Ardından kullanıcı için bir access key oluştur ve Access Key ID ile Secret Access Key değerlerini kopyala.

  4. 4

    Hedefi Aktar'a ekle

    Ayarlar → Hedefler → Hedef Ekle bölümünde Amazon S3'ü seç ve aşağıdaki değerleri gir. Uç nokta ve bölge, bucket'ın bölgesiyle eşleşmelidir.

  5. 5

    Test et ve kaydet

    Bucket'a yazılabildiğini ve herkese açık URL'nin dosya sunduğunu doğrulamak için Bağlantıyı Test Et düğmesine, ardından Kaydet düğmesine tıkla.

Aktar ayarları

Bu değerleri Ayarlar → Hedefler → Hedef Ekle bölümüne gir. Alan adları uygulamadakiyle aynıdır.

AlanÖrnek değer
SağlayıcıAmazon S3
Endpointhttps://s3.eu-central-1.amazonaws.comBucket'ının bölgesini kullan.
Bölgeeu-central-1
Access Key IDAKIA…IAM kullanıcısından.
Secret Access Key••••••••
Bucketyour-bucket
Genel Temel URLyour-bucket.s3.eu-central-1.amazonaws.comYa da CloudFront alan adın.

İpuçları

  • Bağlantıları herkese açık paylaşıyorsan özel alan adıyla CloudFront'u tercih et: önbellekleme kazanırsın ve bucket'ın kendisini gizli tutabilirsin.
  • IAM policy'sini tek bir bucket'la sınırla. Aktar hiçbir zaman hesap genelinde yetkiye ihtiyaç duymaz.
  • Daha hızlı yüklemeler için sana yakın bir bölge seç; CDN kullanmıyorsan izleyicilerine de yakın olsun.
  • Kendiliğinden silinen yüklemeler için IAM kullanıcısının bucket üzerinde s3:GetLifecycleConfiguration ve s3:PutLifecycleConfiguration izinlerine de ihtiyacı var; yoksa yaşam döngüsü kurallarını kendin eklersin. Ayrıntılar: kendiliğinden silinen yüklemeler.

Sorun giderme

Bağlantıyı Test Et sonucunda bölge ya da yönlendirme (redirect) hatası çıkıyor

Uç nokta ve bölge, bucket'ın oluşturulduğu bölgeyle eşleşmelidir; örneğin https://s3.eu-central-1.amazonaws.com ile eu-central-1.

Yüklemeler Access Denied ile başarısız oluyor

IAM kullanıcısının YOUR-BUCKET/* üzerinde s3:PutObject, bucket'ın kendisi üzerinde ise s3:ListBucket iznine ihtiyacı var.

Bağlantılar 403 döndürüyor

Bucket policy eksik ya da hâlâ "Block public access" tarafından engelleniyor, veya CloudFront bucket'ı okuyamıyor. Bkz. Access Denied hataları.

Hâlâ takıldın mı?SSS'ye göz at ya da GitHub'da sor.