Amazon S3’te blog yayınlarımda kullanılan tüm görselleri barındırıyordum. Amazon S3 bant genişliği paraya mal olduğu için başkalarının görsellerimi kullanarak bana yüksek ücretler ödetebileceklerini biliyordum. Bu durumdan kurtulmak için ise hotlink koruması yapmamız gerekiyordu. Normal şartlar altında S3 kullanan kişi aynı zamanda Amazon CloudFront kullandığı için işi bir noktada basitleşiyor lakin gerek duymayan ve statik içerikleri tutup insanlara servis etmek isteyenler ve direk S3 bucketlerini CDN olarak kullanmak isteyenler için aşağıdaki yöntem işe oldukça fazla yarayacaktır.
Amazon AWS hesabınıza girip menüden S3 seçin hemen ardından oluşturduğunuz Bucket tıklayın ve Permission altında bulunan Bucket Policy alanına aşağıdaki json dosyasını ekleyip gereken yerlerde değişikliklerinizi yapın.
{
"Version": "2012-10-17",
"Id": "Hotlink Disable",
"Statement": [
{
"Sid": "Only Allow Own Domain",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::mertcangokgoz/*",
"Condition": {
"StringLike": {
"aws:Referer": [
"https://*.mertcangokgoz.com/*",
"https://localhost:*/*",
"http://localhost:*/*",
"https://s3-eu-central-1.amazonaws.com/*",
]
}
}
}
]
}
Şimdi burada yaptığımızı ufaktan söyleyeyim. Sadece bizim domaimizde gözükmesini istedik. S3 bucket içerisindeki tüm dosyalara aynı işlemi uygulamasını istedik. "Resource": "arn:aws:s3:::mertcangokgoz/*"
Burada S3 de oluşturmuş olduğumuz bucket adını girdik ve bu bucket için izin verilen domainleri belirledik.
Kayıt ettikten sonra buckete erişmeye çalıştığınızda Access Denied hatası almanız gerekiyor. Sadece sizin domaininizde gözükmesi lazım. Artık S3 bant genişliğinizi çalan birini düşünmeden geceleri rahatça uyuyabilirsiniz.