2013-04-09 24 views
41

Używam instancji AWS ec2. Na tej instancji powstają niektóre pliki. Te operacje są wykonywane przez dane użytkownika.Jak przesyłać pliki między AWS s3 i AWS ec2

Teraz chcę przechowywać te pliki na s3, pisząc kod w samych danych użytkownika.

  • Jak mogę zapisać te pliki na s3?
  • Czy masz jakieś tutoriale?
+0

Czy masz na to szczęście? –

Odpowiedz

8

Używam s3cmd do przechowywania nocnych eksportowanych plików kopii zapasowych bazy danych z mojej instancji ec2. Po konfiguracji s3cmd, które można przeczytać o na ich stronie, można wtedy uruchomić poleceniem:

s3cmd put ./myfile s3://mybucket

+0

Działa, ale nie mogę używać s3cmd w moim kodzie PHP. – Asghar

+0

Widziałeś moją odpowiedź? –

31

Istnieje wiele sposobów na wysyłanie plików do S3. Poniżej wymienię je wraz z instalacją i dokumentacją tam, gdzie jest to istotne.

przykładem PHP im żania:

<?php 

    // Simple PUT: 
    if (S3::putObject(S3::inputFile($file), $bucket, $uri, S3::ACL_PRIVATE)) { 
     echo "File uploaded."; 
    } else { 
     echo "Failed to upload file."; 
    } 

?> 

Przykładem s3cmd:

s3cmd put my.file s3://bucket-url/my.file 

Edytuj

Inną opcją warto wspomnieć to AWS CLI http://aws.amazon.com/cli/ ten jest powszechnie dostępny, na przykład jest to już uwzględnione na AmazonLinux i może pobrać za pośrednictwem Pythona (który jest instalowany na wielu systemach, w tym na Linuksie i Windows).

http://docs.aws.amazon.com/cli/latest/reference/s3/index.html

Dostępne polecenia cp ls mb mv rb rm sync www

http://docs.aws.amazon.com/cli/latest/reference/s3api/index.html do interakcji z S3

+0

Świetna przyjaciółka .. właśnie tego szukała :) –

4

Zastosowanie s3cmd za to:

s3cmd get s3://AWS_S3_Bucket/dir/file 

See ho W celu zainstalowania s3cmd here:

Działa to dla mnie ...

9

Install s3cmd pakiet jako:

yum install s3cmd 

lub

sudo apt-get install s3cmd 

zależności od systemu operacyjnego. Następnie skopiuj dane za pomocą:

s3cmd get s3://tecadmin/file.txt 

również może wyświetlić listę plików.

Aby uzyskać więcej detils zobaczyć this

50

Korzystanie z najnowszej AWS CLI (http://aws.amazon.com/cli/), można użyć następujących poleceń, aby skopiować pliki z EC2 instancji lub nawet ty lokalny maszyna do przechowywania S3.

aws s3 cp myfolder s3://mybucket/myfolder --recursive 

Będziesz wtedy coś takiego:

upload: myfolder/file1.txt to s3://mybucket/myfolder/file1.txt 
upload: myfolder/subfolder/file1.txt to s3://mybucket/myfolder/subfolder/file1.txt 

Jeśli jest to Twoja pierwsza korzystanie z CLI narzędzia aws Pokochasz więc trzeba uruchomić:

aws configure

Spowoduje to wprowadzenie klucza dostępu & secret wraz z określeniem domyślnego regionu.

+1

aws cli jest znacznie lepszy niż s3cmd. –

+0

@ajtrichards Czy istnieje sposób na zapewnienie klucza dostępu i tajnego klucza za pomocą argumentu wiersza poleceń? – EmptyData

+0

@EmptyData można użyć flagi '--profile PROFILE_NAME' do wskazania, który zestaw poświadczeń użyć? Jeśli masz skonfigurowane wiele profili AWS w swojej linii poleceń. – ajtrichards

3

Wszystkie próby zamontowania s3 jako pseudo systemu plików są problematyczne. To magazyn obiektów, a nie urządzenie blokowe. Jeśli musisz go zamontować, ponieważ masz starszy kod, który musi mieć lokalne ścieżki do plików, spróbuj goofys. Jest około 50 razy szybszy niż s3fs. https://github.com/kahing/goofys

s3cmd jest w tej chwili trochę długi w zębach. AWS cli jest obecnie lepszym rozwiązaniem. Składnia jest nieco mniej wygodna, ale jest to o jeden mniej narzędzie, które musisz zachować.

Jeśli możesz przyłączyć się do dostępu http. Ułatwi ci życie na dłuższą metę.

Powiązane problemy