2016-09-27 32 views
5

Cloudflare'ın S3 üzerinde barındırılan dosyalar için CDN olarak hareket etmesini sağlamaya çalışıyorum;S3 doğrudan erişime izin vermiyor

S3 kova: cdn.mydomain.com.s3.amazonaws.com

CDN (Cloudflare): Örneğin cdn.mydomain.com

İstediğim cdn.mydomain.com/file.jpg (Cloudflare) fakat cdn.mydomain.com.s3.amazonaws.com/file.jpg (S3) erişmek mümkün olmaktır.

<?xml version="1.0" encoding="UTF-8"?> 
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> 
    <CORSRule> 
     <AllowedOrigin>*</AllowedOrigin> 
     <AllowedMethod>GET</AllowedMethod> 
     <MaxAgeSeconds>3000</MaxAgeSeconds> 
     <AllowedHeader>Authorization</AllowedHeader> 
    </CORSRule> 
</CORSConfiguration> 

Ben herhangi bir dosyaya erişmek çalışırsanız

, S3 veya CDN yoluyla, ben izin reddedildi olsun:

Şu anda benim kova işaret Cloudflare yapılandırılmış bir CNAME ve aşağıdaki CORS'yi var. Bir dosyayı herkese açık yaparsam (herkese hibe eder), o dosyaya S3 ve CDN aracılığıyla erişebilirim.

AllowedOrigin'u *.mydomain.com ile değiştirmeyi denedim, ancak şans yok.

+0

Hope https://www.maxcdn.com/one/tutorial/s3-access/ – rocketspacer

cevap

7

Çözümü buldum. article at CloudFlare's support center bundan bahsetmiyor.

CORS'i değil, bucket policy düzenlemelisiniz. Alanınızın izin vermesine izin vermek yerine, söz konusu makalede olduğu gibi, pakete erişiminizin olması için CloudFlare IP’lerine izin vermeniz gerekir.

{ 
     "Sid": "SOME_STRING_ID_HERE", 
     "Effect": "Allow", // or deny 
     "Principal": {"AWS": "*"}, // or whatever principal you want 
     "Action": "s3:GetObject", // or whatever action you want 
     "Resource": "arn:aws:s3:::cdn.mydomain.com/*", // or whatever resource you want 
     "Condition": { 
      "IpAddress": { 
       "aws:SourceIp": [ 
        "103.21.244.0/22", 
        "103.22.200.0/22", 
        "103.31.4.0/22", 
        "104.16.0.0/12", 
        "108.162.192.0/18", 
        "131.0.72.0/22", 
        "141.101.64.0/18", 
        "162.158.0.0/15", 
        "172.64.0.0/13", 
        "173.245.48.0/20", 
        "188.114.96.0/20", 
        "190.93.240.0/20", 
        "197.234.240.0/22", 
        "198.41.128.0/17", 
        "199.27.128.0/21" 
       ] 
      } 
     } 
    } 
0

O s3'e yerine giriş bekçi olarak alan adınızı kullanmak daha iyidir: İşte

https://www.cloudflare.com/ips CloudFlare ile çalışmak için kova politikası örnektir: Referans olarak aşağıda IP'leri listesidir IP listesi.
izni altında Özellikler Paneli
seçin Git sitenizin S3 Konsolu


senin alan adları için CORSRules ekle CORS Konfigürasyonu
ekle seç

S3-CORS-Config example

Daha CORS yapılandırma Kinda bir hata


here bulunabilir, ancak bu yanıtın sadece ... değil S3 sizin için oluşturduğu orijinal uç noktadan, size öğelere başvuruda gelen diğer siteleri korusun

0

Kabul edilen çözüm tam olarak çalışmıyor. Sadece CloudFlare'ye erişim sağlar. Bu çözümün işe yaraması için, politikanın başka yerlerinde bulunan her şeyi açıkça reddetmelisiniz. Bu paket ilkesi, Cloudflare'nin en son IP adresleri (IPv6 dahil) için güncelleştirilir ve ayrıca Cloudflare IP adresinden gelen tüm erişimi kutudan çıkarmaz.

{ 
"Id": "Policy1517260196123", 
"Version": "2012-10-17", 
"Statement": [ 
    { 
     "Sid": "A string ID here", 
     "Action": "s3:*", 
     "Effect": "Deny", 
     "Resource": "arn:aws:s3:::yourbucket.example.com/*", 
     "Condition": { 
      "NotIpAddress": { 
       "aws:SourceIp": [ 
        "103.21.244.0/22", 
        "103.22.200.0/22", 
        "103.31.4.0/22", 
        "104.16.0.0/12", 
        "108.162.192.0/18", 
        "131.0.72.0/22", 
        "141.101.64.0/18", 
        "162.158.0.0/15", 
        "172.64.0.0/13", 
        "173.245.48.0/20", 
        "188.114.96.0/20", 
        "190.93.240.0/20", 
        "197.234.240.0/22", 
        "198.41.128.0/17", 
        "2400:cb00::/32", 
        "2405:8100::/32", 
        "2405:b500::/32", 
        "2606:4700::/32", 
        "2803:f800::/32", 
        "2c0f:f248::/32", 
        "2a06:98c0::/29" 
       ] 
      } 
     }, 
     "Principal": { 
      "AWS": "*" 
     } 
    } 
] 

}

+0

Eh, kova kamu olmadığını söylemeyi unutmuşum bu makale yardımcı olur. Yani hiç kimse buna erişemezdi. Yaklaşımınız da işe yarıyor. Yalnızca, kümenin kamuya açık olduğunu varsayar, ardından politikalarınız "NotIpAddress" ise ona erişimi engeller. Aynı fikir;) – rlcabral

İlgili konular