AWS S3 Bucket połączone z cloudflare. Czyli jak zaoszczędzić miejsca na swoim hostingu…

Nie raz zapewne spodobała wam się oferta pewnego hostingu, gdyby nie jedna rzecz… Miejsce na dysku, które jest bardzo drogie… Dzisiaj odpowiemy na pytanie, jak tanio (wręcz przez pewien czas za darmo) dodać sobie pojemność miejsca na dysku.

Do tego celu potrzebujemy konta console.aws.amazon.com, aby go utworzyć potrzebna jest karta płatnicza, na szczęście mam już tam kilka lat konto i nigdy nie pobrali mi nieoczekiwanie żadnej kwoty. Jak utworzyć konta nie będę pisał, bo z tym powinien każdy sobie poradzić ( w razie problemów piszcie w komentarzu ).

Po zalogowaniu przechodzimy do zakładki Services -> S3:

Następnie klikamy Create Bucket.
W polu Bucket Name wpisujemy: cokolwiek.nazwanaszejdomeny.com czyli w moim przypadku jest to np. bucket2.linuxsystems.ovh .

Region wybieramy jakikolwiek, aczkolwiek warto wybrać najbliższy swoim klientom (np. jeżeli planujemy pisać artykuły po Polsku, to polecam wybrać EU, jeżeli widzimy, że mamy dużo klientów z Ameryki, to najlepiej wybrać jakiś z Ameryki niż z Europy, chyba że przepisy Unii Europejskiej stanowią inaczej (np. te o ochronie danych osobowych) ).

i klikamy (ładnie pisząc) next, next, next i na końcu „Create bucket”.

Następnie w niego wchodzimy klikamy proporties -> Static website hosting:

Spisujemy z tego Endpoint.

Następnie wybieramy Permission -> bucket policy:

Wpisujemy to poniżej:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicReadGetObject",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::www.mojadomena.com/*",
            "Condition": {
                "IpAddress": {
                    "aws:SourceIp": [
                        "2400:cb00::/32",
                        "2405:8100::/32",
                        "2405:b500::/32",
                        "2606:4700::/32",
                        "2803:f800::/32",
                        "2c0f:f248::/32",
                        "2a06:98c0::/29",
                        "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"
                    ]
                }
            }
        }
    ]
}

z tymże uwaga! zamiast www.mojadomena.com wpisujemy nazwę naszego bucketu, czyli np. bucket2.linuxsystems.ovh .

I tyle od strony AWS.

Teraz przechodzimy do panelu cloudflare przechodzimy do zakładki DNS, dajemy Add record, dodajemy record o nazwie naszego bucketu (w moim przypadku wpisuję tylko bucket2 w polu Name), a w polu Target wpisuję Endpoint z AWS.

Teraz dodając obrazki, nie dodajemy ich od razu na hosting, tylko wrzucam je do tego bucketu na S3, a na stronę wrzucamy link do tego obrazka, czyli np. https://bucket2.linuxsystems.ovh/nazwa_zdjecia.jpg , co powoduje, że jak ktoś chociaż raz otworzy te zdjęcie to cloudflare zrobi sobie cache tego zdjęcia, więc za np. 2 połączeniem, nie będzie już pobierał danych z AWS, co spowoduje, że AWS nie będzie naliczał aż takich (o ile wgl.) opłat za trzymanie/pobieranie danych, ani nie będziemy zużywali cennego miejsca na naszym hostingu strony.