2014-10-12 21 views
29

Myślę o przeniesieniu mojej statycznej strony do Amazon S3. Muszę zautomatyzować wdrożenie, więc szukałem API dla takich zadań. Jestem nieco zdezorientowany z powodu różnych opcji.Różnica między s3cmd, boto i AWS CLI

Pytanie: Jaka jest różnica między s3cmd, biblioteką Pythona i AWS CLI?

Odpowiedz

34

s3cmd i AWS CLI są narzędziami linii poleceń. Są dobrze dopasowane, jeśli chcesz skryptować wdrożenie za pomocą skryptów powłoki (np. Bash).

AWS CLI daje proste możliwości kopiowania plików za pomocą polecenia "s3", co powinno wystarczyć do zainstalowania statycznej witryny internetowej w zasobniku S3. Ma także pewne niewielkie zalety, takie jak preinstalacja na Amazon Linux, jeśli to tam pracujesz (jest to również easily installable through pip).

Jeden AWS CLI polecenia, które mogą być odpowiednie do synchronizacji katalogu lokalnego do wiadra S3:

$ aws s3 sync . s3://mybucket 

pełną dokumentację na polecenie: http://docs.aws.amazon.com/cli/latest/reference/s3/sync.html

Edit: Jak wspomniano przez @ simon- buchan w komentarzu, komenda aws s3api daje ci dostęp do kompletnego API S3, ale jego interfejs jest bardziej "surowy".

s3cmd obsługuje wszystko, co robi AWS CLI, i dodaje na wierzch jeszcze większą funkcjonalność, chociaż nie jestem pewien, czy wymagałbyś tego do swoich celów. Możesz zobaczyć wszystkie jego polecenia tutaj: http://s3tools.org/usage

Instalacja s3cmd może być nieco bardziej zaangażowana, ponieważ nie wydaje się być pakietem dla niego w żadnych dystrybucjach głównych repo.

boto to biblioteka Pythona, a właściwie oficjalny SDK Pythona AWS. Interfejs AWS CLI, również napisany w języku Python, używa części biblioteki boto (botocore). Byłoby dobrze, gdybyś pisywał swoje skrypty wdrażania w Pythonie. Istnieją oficjalne pakiety SDK dla innych popularnych języków (Java, PHP itp.), Jeśli wolisz: http://aws.amazon.com/tools/

Najprostszą formą dostępu do S3 jest interfejs API REST AWS. Wszystko inne jest na nim zbudowane w pewnym momencie. Jeśli masz ochotę na przygodę, oto dokumentacja interfejsu S3 REST API: http://docs.aws.amazon.com/AmazonS3/latest/API/APIRest.html

+1

Czy są jakieś benchmarki porównujące szybkość transferu danych przy użyciu s3cmd do awscli? – sandeepkunkunuru

+0

Istnieją oficjalne pakiety 's3cmd' dla Ubuntu: http://packages.ubuntu.com/trusty/s3cmd – Daniel

+0

Sprawdź również s4cmd. Chociaż nie ma wszystkich funkcji s3cmd, jego wydajność jest zdecydowanie lepsza w porównaniu do połączeń o dużej przepustowości (na przykład w EC2), ponieważ wielowątkowe są połączenia. https://github.com/bloomreach/s4cmd – jlevy