2013-04-09 18 views
41

Ich verwende AWS ec2 instance. Bei dieser Instanz erhalte ich einige Dateien. Diese Operationen werden von Benutzerdaten ausgeführt.So übertragen Sie Dateien zwischen AWS s3 und AWS ec2

Jetzt möchte ich diese Dateien auf s3 speichern, indem ich Code in Benutzerdaten selbst schreibe.

  • Wie kann ich diese Dateien auf s3 speichern?
  • Haben Sie Tutorials?
+0

Hattest du Glück dabei? –

Antwort

8

Ich verwende s3cmd, um nächtlich exportierte Datenbanksicherungsdateien von meiner ec2-Instanz zu speichern. Nach der Konfiguration von s3cmd, die Sie auf ihrer Seite lesen können, können Sie dann einen Befehl wie ausführen:

s3cmd put ./myfile s3://mybucket

+0

Es funktioniert, aber ich kann nicht s3cmd in meinem PHP-Code verwenden. – Asghar

+0

Haben Sie meine Antwort gesehen? –

31

Es gibt eine Reihe von Möglichkeiten, um Dateien auf S3 zu senden. Ich habe sie unten zusammen mit Installation und Dokumentation aufgeführt, wo relevant.

Ein Beispiel für die PHP im setzung:

<?php 

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

?> 

Ein Beispiel für s3cmd:

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

bearbeiten

Eine weitere Option erwähnenswert ist die AWS CLI http://aws.amazon.com/cli/ Diese weithin verfügbar ist, zum Beispiel bereits auf AmazonLinux enthalten ist und kann heruntergeladen werden über Python (das auf vielen Systemen einschließlich Linux und Windows installiert ist).

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

Verfügbare Befehle, cp ls mb mv rb rm Sync-Website

http://docs.aws.amazon.com/cli/latest/reference/s3api/index.html für mit S3 in Wechselwirkung

+0

Great ans Freund .. war nur auf der Suche nach diesem :) –

4

Verwenden s3cmd dafür:

s3cmd get s3://AWS_S3_Bucket/dir/file 

See ho w s3cmd here zu installieren:

für mich Dies funktioniert ...

9

installieren s3cmd Paket als:

yum install s3cmd 

oder

sudo apt-get install s3cmd 

auf Ihrem Betriebssystem ab. Dann kopieren Sie Daten mit diesem:

s3cmd get s3://tecadmin/file.txt 

auch ls die Dateien auflisten können.

Weitere detils siehe this

50

Mit der jüngsten AWS CLI (http://aws.amazon.com/cli/) können Sie die folgenden Befehle verwenden, können Dateien von Ihrer EC2-Instanz kopieren oder sogar Sie lokale Rechnern S3 Speicher.

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

Sie dann etwas bekommen wie:

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

Wenn dies Ihre erste Benutzung des Werkzeugs aws CLI ist dann müssen Sie laufen:

aws configure

Sie werden aufgefordert, Ihren Zugriffsschlüssel & secret einzugeben und eine Standardregion anzugeben.

+1

aws cli ist viel besser als s3cmd. –

+0

@ajtrichards Gibt es eine Möglichkeit, Zugriffsschlüssel und Geheimnis mit Befehlszeilenargument bereitzustellen? – EmptyData

+0

@EmptyData können Sie das Flag '--profile PROFILE_NAME' verwenden, um anzugeben, welche Anmeldeinformationen verwendet werden sollen? Wenn Sie in Ihrer Befehlszeile mehrere AWS-Profile eingerichtet haben. – ajtrichards

3

Alle Versuche, s3 als Pseudo-Dateisystem zu mounten, sind problematisch. Es ist ein Objektspeicher, kein Blockgerät. Wenn Sie es mounten müssen, weil Sie Legacy-Code mit lokalen Dateipfaden haben, versuchen Sie Goofys. Es ist etwa 50x schneller als s3fs. https://github.com/kahing/goofys

s3cmd ist heutzutage ein bisschen lang im Zahn. Der AWS CLI ist heutzutage eine bessere Option. Die Syntax ist ein wenig weniger bequem, aber es ist ein Tool weniger, das Sie brauchen, um herumzuhalten.

Wenn Sie bei HTTP-Zugriff bleiben können. Es wird dir das Leben auf lange Sicht erleichtern.