Zainstalowałem serwer REST w instancji Amazon EC2. Skonfigurowałem także wiadro Amazon S3 do przechowywania wszystkich danych generowanych przez użytkowników podczas interakcji z interfejsem API. Główną przechowywaną informacją są obrazy. Użytkownicy mogą przesyłać obrazy, wykonując żądanie HTTP PUT za pomocą określonego adresu URL i poświadczeń. Żądanie PUT może zostać wykonane na instancji EC2, ponieważ przesyłanie musi być autoryzowane, a użytkownicy nie mogą uzyskać dostępu bezpośrednio do instancji S3. Kiedy EC2 otrzymuje ważną petycję PUT, używam AWS PHP SDK do przesłania obiektu do wiadra S3. Metoda, której używam to putObject. W tej pierwszej części uważam, że nie ma więcej alternatyw. Jednak aby umożliwić użytkownikom pobrać wcześniejsze przesłane mam dwie różne alternatywy:Amazon EC2, S3, REST API i jak poprawnie dostarczać treści użytkownikom
Pierwszy z nich jest zapewnienie użytkownikowi link z plikiem, który wskazuje do wiadra kluczu S3, jak pliki są przesyłane w sposób publiczny sposób. Użytkownik może pobrać obraz bezpośrednio z serwerów S3 bez interakcji z EC2.
Drugi to użycie interfejsu API REST uruchomionego w instancji EC2 do , aby zapewnić zawartość obrazu podczas wykonywania żądania HTTP GET. W tym przypadku powinienem użyć pakietu SDK AWS PHP, aby "pobrać" obraz z serwerów S3 i zwrócić go użytkownikowi. Zastosowana metoda byłaby getObject.
Innym możliwym rozwiązaniem wydaje się brudny do mnie, jest zapewnienie przekierowania HTTP z instancji EC2 do S3 wiadra url, ale potem, klient użytkownik powinna osiągnąć dwa połączenia do pobierania prosty obraz (a złe jeśli użytkownik pracuje na urządzeniach mobilnych).
Zaimplementowałem drugą opcję i wydaje się działać dobrze.
Moje pytanie brzmi:: jeśli dostęp do plików z instancji EC2 poprzez API REST, która pobiera zawartość z instancji S3, by przypuszczać, duży narzut nad bezpośredniego dostępu do plików z URL do serwerów S3. Obie instancje działają w tym samym regionie (IRLANDIA). Nie wiem, jak przelicza się transfer z S3 na EC2 (lub odwrotnie) pod względem przepustowości. Czy transfer z użytkownika S3-EC2 byłby wyliczony podwójnie niż użytkownik S3? Czy transfer ten odbywa się w niektórych lokalnych sieciach?
Preferuję drugi sposób, ponieważ mogę kontrolować dostęp do zawartości, log, który uzyskuje dostęp do każdego pliku, zmiana wiadra będzie przejrzysta dla użytkownika i tak dalej.
Dzięki!