amazon-s3 Samouczek
Rozpoczęcie pracy z amazon-s3
Szukaj…
Uwagi
Podsumowanie z dokumentacji
Od http://docs.aws.amazon.com/AmazonS3/latest/dev/Welcome.html
Usługa Amazon Simple Storage to pamięć internetowa. Został zaprojektowany, aby ułatwić programistom przetwarzanie w sieci.
Amazon S3 ma prosty interfejs usług internetowych, za pomocą którego można przechowywać i pobierać dowolną ilość danych w dowolnym czasie i z dowolnego miejsca w sieci. Daje to każdemu deweloperowi dostęp do tej samej wysoce skalowalnej, niezawodnej, szybkiej i niedrogiej infrastruktury do przechowywania danych, której Amazon używa do prowadzenia własnej globalnej sieci stron internetowych. Usługa ma na celu maksymalizację korzyści skali i przekazanie tych korzyści programistom.
Obsługa języka i skryptów
S3 nie jest językiem programowania jako takim, ale platformą chmurową obsługującą żądania usług sieciowych. Istnieje asortyment narzędzi i zestawów SDK, które są publikowane przez Amazon. Językowe zestawy SDK zapewniają przejrzysty dostęp do S3, obsługując zadania takie jak żądania usług internetowych, uwierzytelnianie, zarządzanie sesjami, odnawianie tokenów itp. Istnieją również interfejsy wiersza poleceń dla bash / windows / ios i PowerShell .
Interfejs API S3
Interfejs API usług sieciowych S3 jest obsługiwany przez konkurujących dostawców . Ten temat nie obejmuje obecnie bezpośrednio interfejsu API, więc podane tutaj przykłady nie byłyby przydatne do budowania aplikacji łączących się z konkurencyjnymi systemami wykorzystującymi interfejs API S3.
Wersje
Na dzień 28 marca 2017 r. Interfejs AWS CLI ma 174 wersje, które są dokładnie udokumentowane w Informacjach o wersji CLI . Amazon S3 ma 66 wersji, z których niektóre mają ogłosić dodanie nowego regionu, a inne mają dodać funkcjonalność. Są one udokumentowane w Uwagach do wydania S3 .
Przykłady
W odniesieniu do przykładów pokazanych do tej pory w tej sekcji „Pierwsze kroki” Amazon S3 jest przydatny dla programistów w następujących przypadkach użycia:
- Przechowuj lub twórz kopie zapasowe plików w wysokowydajnym, trwałym systemie, odciążając to zadanie od architektur niebędących chmurą: systemów plików Linux i Windows. Odtworzenie poziomów trwałości i wydajności S3 przy użyciu serwerów lokalnych lub instancji EC2 jest kosztowne.
- Gdy przepustowość sieci stanowi problem, na przykład w przypadkach, gdy wielu jednoczesnych użytkowników musi pobierać duże pliki, przenoszenie danych do S3 może być wykorzystane jako sposób na złagodzenie niedoborów przepustowości przez aplikację do centrum danych lub serwera lokalnego . Jest to sposób dystrybucji dużego repozytorium kodu, obrazów maszyn wirtualnych, wideo lub instalatorów oprogramowania. Czas przesyłania użytkownika i czas pobierania użytkownika można poprawić. [Aby zwiększyć wydajność w bardzo dużych scenariuszach bazowych dla użytkowników, system dostarczania treści, taki jak Cloudfront, może być używany do buforowania plików bliżej użytkowników.]
- Twoja aplikacja musi utworzyć lub zużyć duży plik i potrzebujesz sposobu, aby umożliwić użytkownikom dostęp do niego lub zdeponowanie go.
- Twoja dystrybucja aplikacji jest bardzo duża i musisz ją udostępnić użytkownikom.
- Przygotowujesz ciągły plan dostaw i na przykład hostujesz części swojej witryny na Amazon S3.
W tym momencie przykłady nie pokazują, jak wykonać następujące czynności:
- Przykłady, chociaż szybsze i bardziej zrozumiałe niż pisanie
aws s3 help, do not mention some of the commands covered in help, such as
aws s3`. - Jak udostępnić lub ograniczyć dostęp użytkownika. Bez wyraźnego ograniczenia przykłady będą działać tylko dla użytkowników korzystających z tego samego konta AWS.
- Jak zabezpieczyć dane za pomocą szyfrowania. Należy zauważyć, że AWS pozycjonuje S3 jako posiadające wyższy poziom bezpieczeństwa niż dane przechowywane w EC2. AWS Security Best Practices, sierpień 2016, s. 1 27
Bezpieczeństwo
AWS zaleca postrzeganie S3 jako bezpiecznej platformy:
O ile nie masz bardziej rygorystycznych wymagań biznesowych lub dotyczących zgodności, nie musisz wprowadzać dodatkowych warstw ochrony poza tymi zapewnianymi przez bezpieczną globalną infrastrukturę AWS. Tamże. p.2
W swoim przewodniku bezpieczeństwa AWS zaleca stosowanie uwierzytelniania AWS jako odpowiedniego dla S3. Tamże. p. 27
Ponadto S3 zapewnia szyfrowanie po stronie serwera lub szyfrowanie po stronie klienta. Szyfrowanie po stronie klienta jest zapewniane w przejrzysty sposób przez AWS Java SDK; klucze nie muszą być przechowywane w AWS. Tamże. p. 28
Wersje
nazwa wersji | opis | notatki | Data wydania |
---|---|---|---|
Amazon S3 13.12.2016 | Dodaje region londyński | notatki | 13.12.2016 |
Instalacja interfejsu AWS CLI w celu uzyskania dostępu do S3
Instalowanie aws cli w Instancji Ubuntu / Debian
sudo apt-get install -y python-dev python-pip
sudo pip install awscli
aws --version
aws configure
Instalowanie aws cli przy użyciu Pythona
Za pomocą pip możesz zainstalować aws cli w Windows, OS X i Linux
sudo pip install awscli
Konfigurowanie interfejsu wiersza polecenia AWS
W tej sekcji wyjaśniono, jak skonfigurować ustawienia używane przez interfejs wiersza polecenia AWS podczas interakcji z AWS, takie jak poświadczenia bezpieczeństwa i region domyślny.
$ aws configure
AWS Access Key ID [None]: <Your access key >
AWS Secret Access Key [None]: <Your secret key>
Default region name [None]: us-west-2
Default output format [None]: json
Uzyskaj klucz dostępu i klucz tajny ze strony konta w AWS
Tworzenie wiader
Użyj polecenia aws s3 mb, aby utworzyć nowy segment. Nazwy segmentów muszą być unikalne i powinny być zgodne z systemem DNS. Nazwy segmentów mogą zawierać małe litery, cyfry, łączniki i kropki
aws s3 mb s3://bucket-name
Usuwanie wiader
Aby usunąć segment, użyj komendy aws s3 rb. Domyślnie segment powinien być pusty.
aws s3 rb s3://bucket-name
Aby usunąć niepuste wiadro, musisz dołączyć opcję --force.
aws s3 rb s3://bucket-name --force
Wiadra aukcyjne
Aby wyświetlić listę wszystkich segmentów lub ich zawartości, użyj polecenia aws s3 ls
aws s3 ls
aws s3 ls s3://bucket-name
Następujące polecenie wyświetla listę obiektów w wiadro-nazwa / ścieżka
aws s3 ls s3://bucket-name/path
Synchronizuj pliki między lokalnym systemem plików a S3
aws s3 sync . s3://my-bucket/path
Prześle wszystkie pliki z bieżącego katalogu do S3. Aby pobrać pliki z S3 do bieżącego katalogu, uruchom
aws s3 sync s3://my-bucket/path .
Lista poleceń AWS CLI S3
Lista często używanych poleceń S3 AWS CLI
Utwórz wiadro
aws s3 mb s3://bucket-name
Usuń wiadro
aws s3 rb s3://bucket-name
Lista wiader
aws s3 ls
Wyświetl zawartość w wiadrze
aws s3 ls s3://bucket-name
Lista Wiadro ze ścieżką
aws s3 ls s3://bucket-name/path
Skopiować plik
aws s3 cp file.txt s3://my-bucket/
Synchronizuj pliki
aws s3 sync . s3://my-bucket/path
Usuń plik lokalny
rm ./MyFile1.txt
Próba synchronizacji bez opcji --delete - nic się nie dzieje
aws s3 sync . s3://my-bucket/path
Synchronizuj z usuwaniem - obiekt jest usuwany z wiadra
aws s3 sync . s3://my-bucket/path --delete
Usuń obiekt z wiadra
aws s3 rm s3://my-bucket/path/MySubdirectory/MyFile3.txt
Synchronizuj z usuwaniem - plik lokalny jest usuwany
aws s3 sync s3://my-bucket/path . --delete
Synchronizuj z klasą pamięci o rzadkim dostępie
aws s3 sync . s3://my-bucket/path --storage-class STANDARD_IA
Skopiuj MyFile.txt z bieżącego katalogu do s3: // my-bucket / path
aws s3 cp MyFile.txt s3://my-bucket/path/
Przenieś wszystkie pliki .jpg z s3: // my-bucket / path do ./MyDirectory
aws s3 mv s3://my-bucket/path ./MyDirectory --exclude '*' --include '*.jpg' --recursive
Wyświetl zawartość mojego wiadra
aws s3 ls s3://my-bucket
Wyświetl zawartość ścieżki w moim wiadrze
aws s3 ls s3://my-bucket/path
Usuń s3: //my-bucket/path/MyFile.txt
aws s3 rm s3://my-bucket/path/MyFile.txt
Usuń s3: // my-bucket / path i całą jego zawartość
aws s3 rm s3://my-bucket/path --recursive
Przykład Hello World przy użyciu Java
W tym przykładzie podjęto próbę utworzenia segmentu o nazwie „hello-world”, a ponieważ element hello-world został już utworzony przez kogoś innego w globalnej przestrzeni nazw S3, zgłasza następujący wyjątek. Zmień „hello-world” na coś innego, aby uniknąć wyjątku, tworząc unikatowy wiadro. Tak utworzony nowy segment można usunąć za pomocą konsoli AWS
Wyjątek w wątku „main” com.amazonaws.services.s3.model.AmazonS3 Wyjątek: Żądana nazwa segmentu nie jest dostępna. Przestrzeń nazw segmentu jest wspólna dla wszystkich użytkowników systemu. Wybierz inną nazwę i spróbuj ponownie. (Usługa: Amazon S3; Kod statusu: 409; Kod błędu: BucketAlreadyExists; Identyfikator żądania: ...
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.CreateBucketRequest;
import com.amazonaws.services.s3.model.Bucket;
/** S3 "hello world" example. */
public class S3Hello {
/** Name of hello-world bucket -- must be globally unique. The
* bucket namespace is shared by all users of the system.
*/
static final String BUCKET_NAME = "hello-world";
/** Creates bucket
* @param args Command line arguments
*/
public static void main(final String[] args) {
AmazonS3 s3 = AmazonS3ClientBuilder.defaultClient();
CreateBucketRequest request
= new CreateBucketRequest(BUCKET_NAME);
Bucket bucket = s3.createBucket(request);
System.out.println("S3 Hello World completed.");
}
}
Ten przykład wymaga następujących zależności:
- Java zainstalowana z działającą konsolą.
- Zainstalowano AWS Java SDK. https://aws.amazon.com/sdk-for-java/
- Poświadczenia pliku
credentials
skonfigurowane w .aws w katalogu domowym. https://aws.amazon.com/developers/getting-started/java/ - Poświadczenie posiadania uprawnień administratora lub „tworzenia segmentu” w S3. http://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-buckets
Witaj świecie za pomocą programu PowerShell
Ten przykład oczekuje błędu, ponieważ wiadro hello-world już istnieje, a S3 używa globalnej przestrzeni nazw.
New-S3Bucket -BucketName "hello-world"
New-S3Bucket: Żądana nazwa segmentu jest niedostępna. Przestrzeń nazw segmentu jest wspólna dla wszystkich użytkowników systemu. Wybierz inną nazwę i spróbuj ponownie.
Jeśli zastąpisz hello-world czymś innym, co jest unikalne, segment zostanie utworzony bez błędów i uzyskasz następujący wynik:
CreationDate BucketName ------------ ---------- 3/30/2017 11:43:03 PM hello-world-832jklsdJF
Ten przykład wymaga następujących zależności:
PowerShell. Zobacz http://docs.aws.amazon.com/powershell/latest/userguide/pstools-getting-set-up.html
Kwalifikacje. Można je utworzyć za pomocą konsoli AWS. Istnieje kilka opcji zarządzania nimi za pomocą PowerShell. Poniżej znajduje się prosty przykład konfiguracji. Zobacz http://docs.aws.amazon.com/powershell/latest/userguide/specifying-your-aws-credentials.html
PS C:\> Set-AWSCredentials -AccessKey AKIAIOSFODNN7LAJD8A -SecretKey "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEjw9JFKS3" -StoreAs default