amazon-s3 Tutorial
Erste Schritte mit amazon-s3
Suche…
Bemerkungen
Zusammenfassung aus der Dokumentation
Von http://docs.aws.amazon.com/AmazonS3/latest/dev/Welcome.html
Der Amazon Simple Storage Service ist ein Speicher für das Internet. Es soll den Web-Scale Computing für Entwickler einfacher machen.
Amazon S3 verfügt über eine einfache Webservice-Benutzeroberfläche, mit der Sie jederzeit und von überall im Internet beliebige Datenmengen speichern und abrufen können. Jeder Entwickler hat Zugriff auf dieselbe hoch skalierbare, zuverlässige, schnelle und kostengünstige Datenspeicherinfrastruktur, die Amazon für das eigene globale Netzwerk von Websites nutzt. Der Service zielt darauf ab, die Skaleneffekte zu maximieren und diese an die Entwickler weiterzugeben.
Sprach- und Skriptunterstützung
S3 ist keine Entwicklungssprache als solche, sondern eine Cloud-Plattform, die Web-Service-Anfragen unterstützt. Es gibt eine Auswahl an Tools und SDKs , die von Amazon veröffentlicht werden. Die Sprach-SDKs bieten einen transparenten Zugriff auf S3, indem Aufgaben wie Webdienstanforderungen, Authentifizierung, Sitzungsverwaltung, Tokenerneuerung usw. bearbeitet werden . Außerdem gibt es Befehlszeilenschnittstellen für bash / windows / ios und Powershell .
Die S3-API
Die S3-Webservice-API wurde von konkurrierenden Anbietern unterstützt . In diesem Thema wird die API derzeit nicht direkt behandelt. Daher sind die hier aufgeführten Beispiele nicht hilfreich für die Erstellung von Anwendungen, die eine Verbindung zu konkurrierenden Systemen herstellen, die die S3-API nutzen.
Versionen
Zum 28. März 2017 hat die AWS-CLI 174 Versionen, die in den CLI- Versionshinweisen sauber dokumentiert sind. Amazon S3 hat 66 Versionen, von denen einige die Hinzufügung einer neuen Region ankündigen und andere Funktionen hinzufügen sollen. Diese sind in den S3-Versionshinweisen dokumentiert.
Die Beispiele
In Bezug auf die bisher in diesem Abschnitt "Erste Schritte" gezeigten Beispiele ist Amazon S3 für Entwickler in den folgenden Anwendungsfällen hilfreich:
- Speichern oder sichern Sie Dateien in einem leistungsstarken, dauerhaften System, und entlasten Sie diese Aufgabe von Nicht-Cloud-Architekturen: Linux- und Windows-Dateisystemen. Es ist teuer, die Haltbarkeits- und Leistungsniveaus von S3 mithilfe von Premise-Servern oder EC2-Instanzen neu zu erstellen.
- Wenn die Netzwerkbandbreite ein Problem ist, zum Beispiel in Fällen, in denen mehrere Benutzer gleichzeitig große Dateien herunterladen müssen, kann das Verschieben von Daten nach S3 als Möglichkeit für eine Anwendung zum Reduzieren von Bandbreitenmangel in ein Datencenter oder einen lokalen Server verwendet werden . Auf diese Weise können Sie ein großes Code-Repository, Images für virtuelle Maschinen, Videos oder Software-Installer verteilen. Benutzer-Upload-Zeiten und Benutzer-Download-Zeiten können verbessert werden. [Für zusätzliche Leistung in sehr umfangreichen Szenarien für Benutzer kann ein Content Delivery-System wie Cloudfront verwendet werden, um Dateien näher an den Benutzer zu cachen.]
- Ihre Anwendung muss eine große Datei erstellen oder verwenden, und Sie benötigen eine Möglichkeit, den Benutzern den Zugriff auf sie zu ermöglichen oder sie zu hinterlegen.
- Ihre Anwendungsverteilung ist sehr umfangreich und Sie müssen sie mit Benutzern teilen.
- Sie stellen eine Continuous Delivery-Pipeline zusammen und hosten beispielsweise Teile Ihrer Website bei Amazon S3.
An diesem Punkt zeigen die Beispiele nicht, wie Sie Folgendes tun:
- Die Beispiele sind zwar schneller und übersichtlicher als das Eingeben von
aws s3 help, do not mention some of the commands covered in help, such as
aws s3 website`. - Wie kann ich den Benutzerzugriff freigeben oder einschränken? Ohne explizite Einschränkung funktionieren die Beispiele nur für Benutzer, die dasselbe AWS-Konto verwenden.
- So sichern Sie Daten durch Verschlüsselung. Beachten Sie, dass AWS in S3 eine höhere Sicherheitsstufe als in EC2 gespeicherte Daten aufweist. AWS Security Best Practices, August 2016, S. 27. 27
Sicherheit
AWS empfiehlt, S3 als sichere Plattform anzusehen:
Wenn Sie keine strengeren Geschäfts- oder Compliance-Anforderungen haben, müssen Sie keine zusätzlichen Schutzschichten über die sichere, globale AWS-Infrastruktur hinaus einführen. ebenda S.2
AWS empfiehlt im Sicherheitshandbuch die Verwendung der AWS-Authentifizierung als für S3 geeignet. ebenda p. 27
Zusätzlich bietet S3 serverseitige Verschlüsselung oder clientseitige Verschlüsselung. Die clientseitige Verschlüsselung wird transparent vom AWS Java SDK bereitgestellt. Schlüssel müssen nicht in AWS gespeichert werden. ebenda p. 28
Versionen
Versionsname | Beschreibung | Anmerkungen | Veröffentlichungsdatum |
---|---|---|---|
Amazon S3 am 2016-12-13 | Fügt die Region London hinzu | Anmerkungen | 2016-12-13 |
Installation von AWS CLI für den Zugriff auf S3
Installieren von aws cli in der Ubuntu / Debian-Instanz
sudo apt-get install -y python-dev python-pip
sudo pip install awscli
aws --version
aws configure
Installieren von aws cli mit Python
Mit pip können Sie aws cli in Windows, OS X und Linux installieren
sudo pip install awscli
Konfigurieren der AWS-Befehlszeilenschnittstelle
In diesem Abschnitt wird erläutert, wie Sie Einstellungen konfigurieren, die von der AWS Command Line Interface bei der Interaktion mit AWS verwendet werden, z.
$ 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
Rufen Sie den Zugriffsschlüssel und den geheimen Schlüssel von der Kontoseite in AWS ab
Eimer erstellen
Verwenden Sie den Befehl aws s3 mb, um einen neuen Bucket zu erstellen. Bucket-Namen müssen eindeutig sein und sollten DNS-kompatibel sein. Bucket-Namen können Kleinbuchstaben, Zahlen, Bindestriche und Punkte enthalten
aws s3 mb s3://bucket-name
Eimer entfernen
Verwenden Sie zum Entfernen eines Buckets den Befehl aws s3 rb. Standardmäßig sollte der Bucket leer sein.
aws s3 rb s3://bucket-name
Um einen nicht leeren Bucket zu entfernen, müssen Sie die Option --force angeben.
aws s3 rb s3://bucket-name --force
Buckets auflisten
Verwenden Sie zum Auflisten aller Buckets oder ihres Inhalts den Befehl aws s3 ls
aws s3 ls
aws s3 ls s3://bucket-name
Der folgende Befehl listet die Objekte in Bucket-Name / Pfad auf
aws s3 ls s3://bucket-name/path
Dateien zwischen dem lokalen Dateisystem und S3 synchronisieren
aws s3 sync . s3://my-bucket/path
Alle Dateien im aktuellen Verzeichnis werden in S3 hochgeladen. Um die Dateien von S3 in das aktuelle Verzeichnis herunterzuladen, führen Sie sie aus
aws s3 sync s3://my-bucket/path .
AWS CLI S3-Befehlsliste
Liste der häufig verwendeten S3 AWS CLI-Befehle
Eimer erstellen
aws s3 mb s3://bucket-name
Eimer entfernen
aws s3 rb s3://bucket-name
Eimer auflisten
aws s3 ls
Den Inhalt im Eimer auflisten
aws s3 ls s3://bucket-name
Listeneimer mit einem Pfad
aws s3 ls s3://bucket-name/path
Datei kopieren
aws s3 cp file.txt s3://my-bucket/
Dateien synchronisieren
aws s3 sync . s3://my-bucket/path
Lokale Datei löschen
rm ./MyFile1.txt
Versuchen Sie die Synchronisierung ohne die Option --delete - nichts passiert
aws s3 sync . s3://my-bucket/path
Mit Löschen synchronisieren - Objekt wird aus dem Bucket gelöscht
aws s3 sync . s3://my-bucket/path --delete
Objekt aus dem Bucket löschen
aws s3 rm s3://my-bucket/path/MySubdirectory/MyFile3.txt
Mit Löschen synchronisieren - Lokale Datei wird gelöscht
aws s3 sync s3://my-bucket/path . --delete
Synchronisierung mit der Speicherklasse für seltenen Zugriff
aws s3 sync . s3://my-bucket/path --storage-class STANDARD_IA
Kopieren Sie MyFile.txt im aktuellen Verzeichnis nach s3: // my-bucket / path
aws s3 cp MyFile.txt s3://my-bucket/path/
Verschieben Sie alle JPG-Dateien in s3: // Mein Bucket / Pfad nach ./MyDirectory
aws s3 mv s3://my-bucket/path ./MyDirectory --exclude '*' --include '*.jpg' --recursive
Listen Sie den Inhalt von my-bucket auf
aws s3 ls s3://my-bucket
Listen Sie den Inhalt des Pfads in my-bucket auf
aws s3 ls s3://my-bucket/path
Löschen Sie s3: //my-bucket/path/MyFile.txt
aws s3 rm s3://my-bucket/path/MyFile.txt
Löschen Sie s3: // mein Bucket / Pfad und seinen gesamten Inhalt
aws s3 rm s3://my-bucket/path --recursive
Hello World Beispiel mit Java
In diesem Beispiel wird versucht, einen Bucket namens "Hallo-Welt" zu erstellen. Da die Hallo-Welt des Buckets bereits von einer anderen Person im globalen Namespace von S3 erstellt wurde, wird die folgende Ausnahme ausgelöst. Ändern Sie "Hallo-Welt" in etwas anderes, um die Ausnahme zu vermeiden, indem Sie einen eindeutig benannten Bucket erstellen. Der so erstellte neue Bucket kann mit der AWS-Konsole gelöscht werden
Ausnahme im Thread "main" com.amazonaws.services.s3.model.AmazonS3Exception: Der angeforderte Bucket-Name ist nicht verfügbar. Der Bucket-Namespace wird von allen Benutzern des Systems gemeinsam genutzt. Bitte wählen Sie einen anderen Namen und versuchen Sie es erneut. (Dienst: Amazon S3; Statuscode: 409; Fehlercode: BucketAlreadyExists; Anforderungs-ID: ...
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.");
}
}
Dieses Beispiel erfordert die folgenden Abhängigkeiten:
- Java installiert, wenn die Konsole funktioniert.
- AWS Java SDK installiert. https://aws.amazon.com/sdk-for-java/
- Anmeldedaten für
credentials
, die in .aws unter Ihrem Basisverzeichnis eingerichtet werden. https://aws.amazon.com/developers/getting-started/java/ - Berechtigungsnachweis für Administratorrechte oder "Bucket-Rechte" in S3. http://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions- related-to-buckets
Hallo Welt mit PowerShell
In diesem Beispiel wird ein Fehler erwartet, da der Bucket Hallo-Welt bereits vorhanden ist und S3 einen globalen Namespace verwendet.
New-S3Bucket -BucketName "hello-world"
New-S3Bucket: Der angeforderte Bucket-Name ist nicht verfügbar. Der Bucket-Namespace wird von allen Benutzern des Systems gemeinsam genutzt. Bitte wählen Sie einen anderen Namen und versuchen Sie es erneut.
Wenn Sie hallo-world durch etwas anderes ersetzen, das einzigartig ist, wird der Bucket fehlerfrei erstellt, und Sie erhalten folgendes Ergebnis:
CreationDate BucketName ------------ ---------- 3/30/2017 11:43:03 PM hello-world-832jklsdJF
Dieses Beispiel erfordert die folgenden Abhängigkeiten:
Power Shell. Siehe http://docs.aws.amazon.com/powershell/latest/userguide/pstools-getting-set-up.html
Referenzen. Diese können mit der AWS-Konsole erstellt werden. Es gibt mehrere Möglichkeiten, diese mit PowerShell zu verwalten. Nachfolgend finden Sie ein einfaches Beispiel für das Setup. Siehe 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