Ich verwende die AWS ec2-Instanz. In dieser Instanz ergeben sich einige Dateien. Diese Vorgänge werden von Benutzerdaten ausgeführt.
Jetzt möchte ich diese Dateien auf S3 speichern, indem Code in Benutzerdaten selbst geschrieben wird.
Mit der neuesten AWS-CLI ( http://aws.Amazon.com/cli/ ) können Sie die folgenden Befehle verwenden, um Dateien von Ihrer Ec2-Instanz oder sogar von Ihrem lokalen Computer in den S3-Speicher zu kopieren.
aws s3 cp myfolder s3://mybucket/myfolder --recursive
Sie erhalten dann etwas wie:
upload: myfolder/file1.txt to s3://mybucket/myfolder/file1.txt
upload: myfolder/subfolder/file1.txt to s3://mybucket/myfolder/subfolder/file1.txt
Wenn Sie das aws
CLI-Tool zum ersten Mal verwenden, müssen Sie Folgendes ausführen:
aws configure
Sie werden aufgefordert, Ihren Zugangsschlüssel und das Kennwort einzugeben und einen Standardbereich anzugeben.
Es gibt verschiedene Möglichkeiten, Dateien an S3 zu senden. Ich habe sie unten zusammen mit Installation und Dokumentation aufgeführt, sofern relevant.
S3CMD: ( http://s3tools.org/s3cmd ) Sie können dies auf debian/ubuntu einfach über apt-get install s3cmd installieren und dann über die Befehlszeile ausführen. Sie können dies in ein Bash-Skript oder in Ihr Programm integrieren.
S3FS: ( http://www.pophams.com/blog/howto-setups3fsonubuntu1104x64 und https://code.google.com/p/s3fs/wiki/InstallationNotes ) ... Damit wird ein S3-Bucket bereitgestellt, sodass er wie eine lokale Festplatte aussieht. Das Einrichten erfordert etwas mehr Aufwand, aber sobald die Festplatte gemountet ist, müssen Sie nichts Besonderes tun, um die Dateien in Ihrem Bucket zu erhalten.
Wenn Sie ein CMS verwenden (verwenden Sie Drupal als Beispiel), haben Sie möglicherweise die Möglichkeit, ein Modul zu verwenden, um den Zugriff auf Ihren Bucket durchzuführen, z. B. http://drupal.org/project/storage_api
Schließlich können Sie Programmiersprachenimplementierungen verwenden, um die gesamte Logik selbst zu behandeln. Für PHP können Sie mit diesem http://undesigned.org.za/2007/10/22/Amazon) beginnen -s3-php-class und Dokumentation finden Sie hier http://undesigned.org.za/2007/10/22/Amazon-s3-php-class/documentation
Ein Beispiel für die Implementierung von PHP:
<?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
Eine weitere erwähnenswerte Option ist die AWS-CLI http://aws.Amazon.com/cli/ .__, die allgemein verfügbar ist, z. B. bereits in AmazonLinux enthalten ist und über Python heruntergeladen werden kann auf vielen Systemen installiert, einschließlich Linux und Windows).
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 die Interaktion mit S3
Installieren Sie s3cmd Package als:
yum install s3cmd
oder
Sudo apt-get install s3cmd
abhängig von Ihrem Betriebssystem. Dann kopieren Sie Daten mit diesem:
s3cmd get s3://tecadmin/file.txt
auch ls
kann die Dateien auflisten.
Für weitere Details siehe this
Ich verwende s3cmd , um nächtliche exportierte Datenbanksicherungsdateien von meiner ec2-Instanz zu speichern. Nach der Konfiguration von s3cmd, über die Sie auf ihrer Website nachlesen können, können Sie einen Befehl wie folgt ausführen:
s3cmd put ./myfile s3://mybucket
Verwenden Sie s3cmd
dafür:
s3cmd get s3://AWS_S3_Bucket/dir/file
Sehen Sie, wie Sie s3cmd hier installieren:
Das funktioniert für mich ...
Alle Versuche, s3 als Pseudo-Dateisystem bereitzustellen, sind problematisch. Es ist ein Objektspeicher, kein Blockgerät. Wenn Sie es mounten müssen, weil Sie über älteren Code verfügen, der über lokale Dateipfade verfügen muss, versuchen Sie goofys. Es ist etwa 50x schneller als s3fs. https://github.com/kahing/goofys
s3cmd ist heutzutage etwas langweilig. Das AWS-CLI ist heutzutage eine bessere Option. Die Syntax ist etwas weniger bequem, aber es ist ein Werkzeug weniger, das Sie benötigen, um herumzuhalten.
Wenn Sie auf http Zugriff bleiben können. Es wird Ihnen auf lange Sicht das Leben erleichtern.
Auf AWS CLI habe ich den folgenden Befehl verwendet, um die Zip-Datei von der EC2-Instanz in S3 zu kopieren
aws s3 cp file-name.Zip s3://bucket-name/
Ich denke, dass die beste Antwort im Allgemeinen oben ist, den Befehl aws
zu verwenden. In den Fällen, in denen Sie nichts anderes installieren möchten, sollten Sie auch die Datei über HTTPS herunterladen, z. Öffnen Sie einen Browser und navigieren Sie zu:
https://s3.amazonaws.com/
(BucketName) /
(relativerPfad) /
(Dateiname)
Das bedeutet auch, dass Sie einfach wget
oder curl
verwenden können, um die Übertragung von Shell-Eingabeaufforderungen auszuführen.