Diese Dokumentation bezieht sich ausschließlich auf Version 1 der AWS CLI. Eine Dokumentation zu Version 2 der AWS CLI finden Sie im Benutzerhandbuch für Version 2.
Verwenden von (s3-) High-Level-Befehlen in der AWS CLI
In diesem Thema wird beschrieben, wie Sie Amazon-S3-Buckets und -Objekte mit den aws
s3-Befehlen in der AWS CLI verwalten. Befehle, die in diesem Thema nicht behandelt werden, und weitere Befehlsbeispiele finden Sie unter aws
s3-Befehle in der AWS CLI-Referenz.
Die aws s3-High-Level-Befehle vereinfachen die Verwaltung von Amazon-S3-Objekten. Mit diesen Befehlen können Sie den Inhalt von Amazon S3 intern und mit lokalen Verzeichnissen verwalten.
Themen
Voraussetzungen
Zur Ausführung von s3-Befehlen ist Folgendes erforderlich:
Installieren und Konfigurieren der AWS CLI. Weitere Informationen finden Sie unter Installation, Aktualisierung und Deinstallation der AWS CLI und Authentifizierung und Anmeldeinformationen für die AWS CLI.
-
Das von Ihnen verwendete Profil muss über Berechtigungen verfügen, die die von den Beispielen ausgeführten AWS-Vorgänge zulassen.
-
Sie müssen diese Amazon-S3-Begriffe verstehen:
-
Bucket – Ein Amazon-S3-Ordner der obersten Ebene.
-
Präfix – Ein Amazon-S3-Ordner in einem Bucket.
-
Objekt – Jedes Element, das in einem Amazon-S3-Bucket gehostet wird.
-
Bevor Sie beginnen
In diesem Abschnitt finden Sie einige Hinweise zur Verwendung von aws s3-Befehlen.
Uploads großer Objekte
Wenn Sie aws s3-Befehle zum Hochladen großer Objekte in einen Amazon-S3-Bucket verwenden, führt die AWS CLI automatisch einen mehrteiligen Upload durch. Sie können einen fehlgeschlagenen Upload nicht fortsetzen, wenn Sie diese aws s3-Befehle verwenden.
Wenn der mehrteilige Upload aufgrund einer Zeitüberschreitung fehlschlägt oder Sie den Vorgang in der AWS CLI manuell abgebrochen haben, stoppt die AWS CLI den Upload und bereinigt alle erstellten Dateien. Dieser Vorgang kann einige Minuten dauern.
Wenn der mehrteilige Upload oder Bereinigungsprozess durch einen Kill-Befehl oder einen Systemfehler abgebrochen wird, verbleiben die erstellten Dateien im Amazon-S3-Bucket. Verwenden Sie zum Bereinigen des mehrteiligen Uploads den Befehl s3api abort-multipart-upload.
Dateieigenschaften und Tags in mehrteiligen Kopien
Wenn Sie die AWS CLI Version 1 von Befehlen im aws s3-Namespace verwenden, um eine Datei von einem Amazon-S3-Bucket-Speicherort an einen anderen Amazon-S3-Bucket-Speicherort zu kopieren, und wenn dieser Vorgang eine mehrteilige Kopie verwendet, werden keine Dateieigenschaften aus dem Quellobjekt in das Zielobjekt kopiert.
Erstellen eines Buckets
Verwenden Sie den Befehl s3
mb, um einen Bucket zu erstellen. Bucket-Namen müssen global eindeutig (eindeutig in ganz Amazon S3) und DNS-kompatibel sein.
Bucket-Namen können Kleinbuchstaben, Zahlen, Bindestriche und Punkte enthalten. Bucket-Namen können nur mit einem Buchstaben oder einer Zahl beginnen und enden. Ein Punkt neben einem Bindestrich oder einem weiteren Punkt ist unzulässig.
Syntax
$aws s3 mb <target> [--options]
Im folgenden Beispiel wird der Bucket s3://amzn-s3-demo-bucket erstellt.
$aws s3 mb s3://amzn-s3-demo-bucket
Auflisten von Buckets und Objekten
Um Ihre Buckets, Ordner oder Objekte aufzulisten, verwenden Sie den Befehl s3
ls. Wenn Sie den Befehl ohne Ziel oder Optionen verwenden, werden alle Buckets aufgelistet.
Syntax
$aws s3 ls <target> [--options]
Ein paar gängige Optionen für diesen Befehl und Beispiele finden Sie unter Häufig verwendete Optionen für s3-Befehle. Eine vollständige Liste der verfügbaren Optionen finden Sie unter s3
ls in der AWS CLI-Befehlsreferenz.
Das folgende Beispiel listet alle Amazon-S3-Buckets auf.
$aws s3 ls2018-12-11 17:08:50 amzn-s3-demo-bucket1 2018-12-14 14:55:44 amzn-s3-demo-bucket2
Mit dem Befehl unten werden alle Objekte und Präfixe in einem Bucket aufgeführt. In dieser Beispielausgabe enthält das Präfix example/ eine Datei namens MyFile1.txt.
$aws s3 lss3://amzn-s3-demo-bucketPRE example/ 2018-12-04 19:05:48 3 MyFile1.txt
Sie können die Ausgabe nach einem bestimmten Präfix filtern, indem Sie das Präfix in den Befehl einschließen. Der folgende Befehl listet die Objekte in Bucket-Name/Beispiel/ auf (d. h. Objekte in Bucket-Name, gefiltert nach dem Präfix example/).
$aws s3 lss3://amzn-s3-demo-bucket/example/2018-12-06 18:59:32 3 MyFile1.txt
Um nur die Buckets und Objekte in einer bestimmten Region anzuzeigen, verwenden Sie die --region-Optionen.
$aws s3 ls--region us-east-22018-12-06 18:59:32 3 MyFile1.txt
Wenn Sie über eine umfangreiche Liste von Buckets und Objekten verfügen, können Sie die Ergebnisse mithilfe der Option --max-items oder --page-size paginieren. Die Option --max-items begrenzt, wie viele Buckets und Objekte insgesamt in einem Aufruf zurückgegeben werden, während die Option --page-size begrenzt, wie viele davon auf einer Seite aufgeführt werden.
$aws s3 ls--max-items 100 --page-size 10
Weitere Informationen zur Paginierung finden Sie unter So verwenden Sie den –page-size-Parameter und So verwenden Sie den –max-items-Parameter.
Buckets löschen
Verwenden Sie zum Löschen eines Buckets den Befehl s3
rb.
Syntax
$aws s3 rb <target> [--options]
Im folgenden Beispiel wird der Bucket s3://amzn-s3-demo-bucket entfernt.
$aws s3 rbs3://amzn-s3-demo-bucket
Standardmäßig muss der Bucket leer sein, damit der Vorgang erfolgreich ist. Zum Entfernen eines Buckets, der nicht leer ist, müssen Sie die Option --force hinzufügen. Wenn Sie einen versionsgesteuerten Bucket verwenden, der bereits gelöschte–aber aufbewahrte–Objekte enthält, lässt dieser Befehl nicht zu, dass Sie den Bucket entfernen. Sie müssen zunächst alle Inhalte entfernen.
Im folgenden Beispiel werden alle Objekte und Präfixe im Bucket gelöscht und anschließend der Bucket gelöscht.
$aws s3 rbs3://amzn-s3-demo-bucket--force
Objekte löschen
Um Objekte in einem Bucket oder in Ihrem lokalen Verzeichnis zu löschen, verwenden Sie den Befehl s3
rm.
Syntax
$aws s3 rm <target> [--options]
Ein paar gängige Optionen für diesen Befehl und Beispiele finden Sie unter Häufig verwendete Optionen für s3-Befehle. Eine vollständige Liste der Optionen finden Sie unter s3
rm in der AWS CLI-Befehlsreferenz.
Im folgenden Beispiel wird filename.txt aus s3://amzn-s3-demo-bucket/example gelöscht.
$aws s3 rm s3://amzn-s3-demo-bucket/example/filename.txt
Im folgenden Beispiel werden alle Objekte aus s3://amzn-s3-demo-bucket/example mit der Option --recursive gelöscht.
$aws s3 rm s3://amzn-s3-demo-bucket/example --recursive
Verschieben von Objekten
Verwenden Sie den Befehl s3
mv, um Objekte aus einem Bucket oder einem lokalen Verzeichnis zu verschieben. Mit dem Befehl s3 mv wird das Quellobjekt oder die Quelldatei an den angegebenen Speicherort kopiert. Anschließend wird das Quellobjekt oder die Quelldatei gelöscht.
Syntax
$aws s3 mv <source> <target> [--options]
Ein paar gängige Optionen für diesen Befehl und Beispiele finden Sie unter Häufig verwendete Optionen für s3-Befehle. Eine vollständige Liste der verfügbaren Optionen finden Sie unter s3
mv in der AWS CLI-Befehlsreferenz.
Warnung
Wenn Sie in Ihren Amazon-S3-Quell- oder -Ziel-URIs irgendeine Art von Zugangspunkt-ARNs oder Zugangspunkt-Aliassen verwenden, müssen Sie besonders darauf achten, dass Ihre Amazon-S3-Quell- und -Ziel-URIs in verschiedene zugrunde liegende Buckets aufgelöst werden. Wenn die Quell- und Ziel-Buckets identisch sind, kann die Quelldatei oder das Quellobjekt auf sich selbst verschoben werden, was zu einem versehentlichen Löschen Ihrer Quelldatei oder Ihres Quellobjekts führen kann. Um zu überprüfen, dass Quell- und Ziel-Buckets nicht identisch sind, verwenden Sie den Parameter --validate-same-s3-paths oder setzen Sie die Umgebungsvariable AWS_CLI_S3_MV_VALIDATE_SAME_S3_PATHS auf true.
Im folgenden Beispiel werden alle Objekte von s3://amzn-s3-demo-bucket/example nach s3://amzn-s3-demo-bucket/ verschoben.
$aws s3 mv s3://amzn-s3-demo-bucket/example s3://amzn-s3-demo-bucket/
Im folgenden Beispiel wird eine lokale Datei mit dem s3 mv-Befehl aus Ihrem aktuellen Arbeitsverzeichnis in den Amazon-S3-Bucket verschoben.
$aws s3 mv filename.txt s3://amzn-s3-demo-bucket
Im folgenden Beispiel wird eine Datei aus Ihrem Amazon-S3-Bucket in Ihr aktuelles Arbeitsverzeichnis verschoben, wobei ./ Ihr aktuelles Arbeitsverzeichnis angibt.
$aws s3 mv s3://amzn-s3-demo-bucket/filename.txt ./
Kopieren von Objekten
Verwenden Sie den Befehl s3
cp, um Objekte aus einem Bucket oder einem lokalen Verzeichnis zu verschieben.
Syntax
$aws s3 cp <source> <target> [--options]
Sie können den Bindestrich-Parameter für das Dateistreaming an die Standardeingabe (stdin) oder die Standardausgabe (stdout) verwenden.
Warnung
Wenn Sie PowerShell verwenden, kann die Shell die Codierung eines CRLF ändern oder ein CRLF zu einer über Pipe geleiteten Eingabe oder Ausgabe oder einer umgeleiteten Ausgabe hinzufügen.
Der Befehl s3 cp verwendet die folgende Syntax, um einen Dateistream von stdin in einen angegebenen Bucket hochzuladen.
Syntax
$aws s3 cp - <target> [--options]
Der s3 cp-Befehl verwendet die folgende Syntax, um einen Amazon-S3-Dateistream für stdout herunterzuladen.
Syntax
$aws s3 cp <target> [--options] -
Ein paar gängige Optionen für diesen Befehl und Beispiele finden Sie unter Häufig verwendete Optionen für s3-Befehle. Eine vollständige Liste der Optionen finden Sie unter s3
cp in der AWS CLI-Befehlsreferenz.
Im folgenden Beispiel werden alle Objekte von s3://amzn-s3-demo-bucket/example nach s3://amzn-s3-demo-bucket/ kopiert.
$aws s3 cp s3://amzn-s3-demo-bucket/example s3://amzn-s3-demo-bucket/
Im folgenden Beispiel wird eine lokale Datei mit dem s3 cp-Befehl aus Ihrem aktuellen Arbeitsverzeichnis in den Amazon-S3-Bucket kopiert.
$aws s3 cp filename.txt s3://amzn-s3-demo-bucket
Im folgenden Beispiel wird eine Datei aus Ihrem Amazon-S3-Bucket in Ihr aktuelles Arbeitsverzeichnis kopiert, wobei ./ Ihr aktuelles Arbeitsverzeichnis angibt.
$aws s3 cp s3://amzn-s3-demo-bucket/filename.txt ./
Im folgenden Beispiel wird echo verwendet, um den Text „hello world“ in die Datei s3://bucket-name/filename.txt zu streamen.
$echo "hello world" | aws s3 cp - s3://amzn-s3-demo-bucket/filename.txt
Im folgenden Beispiel wird die s3://amzn-s3-demo-bucket/filename.txt-Datei nach stdout gestreamt und der Inhalt an die Konsole ausgegeben.
$aws s3 cp s3://amzn-s3-demo-bucket/filename.txt -hello world
Das folgende Beispiel streamt den Inhalt von s3://bucket-name/pre nach stdout, verwendet den Befehl bzip2 zum Komprimieren der Dateien und lädt die neue komprimierte Datei namens key.bz2 nach s3://bucket-name hoch.
$aws s3 cp s3://amzn-s3-demo-bucket/pre - | bzip2 --best | aws s3 cp - s3://amzn-s3-demo-bucket/key.bz2
Synchronisieren von Objekten
Der Befehl s3
sync synchronisiert die Inhalte von einem Bucket und einem Verzeichnis oder die Inhalte von zwei Buckets. Normalerweise werden mit s3 sync fehlende oder veraltete Dateien bzw. Objekte zwischen Quelle und Ziel kopiert. Sie können aber auch die Option --delete hinzufügen, um Dateien oder Objekte, die nicht in der Quelldatei vorhanden sind, aus dem Ziel zu entfernen.
Syntax
$aws s3 sync <source> <target> [--options]
Ein paar gängige Optionen für diesen Befehl und Beispiele finden Sie unter Häufig verwendete Optionen für s3-Befehle. Eine vollständige Liste der Optionen finden Sie unter s3
sync in der AWS CLI-Befehlsreferenz.
Im folgenden Beispiel wird der Inhalt eines Amazon-S3-Präfixes namens path im Bucket mit dem Namen amzn-s3-demo-bucket mit dem aktuellen Arbeitsverzeichnis synchronisiert.
s3 sync aktualisiert alle Dateien mit einer anderen Größe oder geänderten Zeit als Dateien mit demselben Namen am Ziel. Die Ausgabe enthält bestimmte Vorgänge, die während der Synchronisierung ausgeführt wurden. Beachten Sie, dass die Operation rekursiv das Unterverzeichnis MySubdirectory und seinen Inhalt mit s3://amzn-s3-demo-bucket/path/MySubdirectory synchronisiert.
$aws s3 sync . s3://amzn-s3-demo-bucket/pathupload: MySubdirectory\MyFile3.txt to s3://amzn-s3-demo-bucket/path/MySubdirectory/MyFile3.txt upload: MyFile2.txt to s3://amzn-s3-demo-bucket/path/MyFile2.txt upload: MyFile1.txt to s3://amzn-s3-demo-bucket/path/MyFile1.txt
Das folgende Beispiel, das das vorherige erweitert, zeigt die Verwendung der Option --delete.
// Delete local file$rm ./MyFile1.txt// Attempt sync without --delete option - nothing happens$aws s3 sync . s3://amzn-s3-demo-bucket/path// Sync with deletion - object is deleted from bucket$aws s3 sync . s3://amzn-s3-demo-bucket/path --deletedelete: s3://amzn-s3-demo-bucket/path/MyFile1.txt // Delete object from bucket$aws s3 rm s3://amzn-s3-demo-bucket/path/MySubdirectory/MyFile3.txtdelete: s3://amzn-s3-demo-bucket/path/MySubdirectory/MyFile3.txt // Sync with deletion - local file is deleted$aws s3 sync s3://amzn-s3-demo-bucket/path . --deletedelete: MySubdirectory\MyFile3.txt // Sync with Infrequent Access storage class$aws s3 sync . s3://amzn-s3-demo-bucket/path --storage-class STANDARD_IA
Bei Verwendung der Option --delete können mit den Optionen --exclude und --include die Dateien oder Objekte gefiltert werden, die während einer s3
sync-Operation gelöscht werden sollen. In diesem Fall muss die Parameterzeichenfolge Dateien angeben, die für das Zielverzeichnis oder den Bucket vom Löschen ausgenommen oder zum Löschen hinzugefügt werden. Es folgt ein Beispiel.
Assume local directory and s3://amzn-s3-demo-bucket/path currently in sync and each contains 3 files: MyFile1.txt MyFile2.rtf MyFile88.txt '''// Sync with delete, excluding files that match a pattern. MyFile88.txt is deleted, while remote MyFile1.txt is not.$aws s3 sync . s3://amzn-s3-demo-bucket/path --delete --exclude "path/MyFile?.txt"delete: s3://amzn-s3-demo-bucket/path/MyFile88.txt '''// Sync with delete, excluding MyFile2.rtf - local file is NOT deleted$aws s3 sync s3://amzn-s3-demo-bucket/path . --delete --exclude "./MyFile2.rtf"download: s3://amzn-s3-demo-bucket/path/MyFile1.txt to MyFile1.txt ''' // Sync with delete, local copy of MyFile2.rtf is deleted$aws s3 sync s3://amzn-s3-demo-bucket/path . --deletedelete: MyFile2.rtf
Häufig verwendete Optionen für s3-Befehle
Die folgenden Optionen werden häufig für die in diesem Thema beschriebenen Befehle verwendet. Eine vollständige Liste der Optionen, die Sie für einen Befehl verwenden können, finden Sie beim jeweiligen Befehl im AWS CLI-Referenzleitfaden.
- acl
-
s3 syncunds3 cpkönnen die Option--aclverwenden. Auf diese Weise können Sie die Zugriffsberechtigungen für Dateien festlegen, die nach Amazon S3 kopiert werden. Die Option--aclakzeptiert die Werteprivate,public-readundpublic-read-write. Weitere Informationen finden Sie unter Vordefinierte ACL im Amazon-S3-Benutzerhandbuch.$aws s3 sync . s3://amzn-s3-demo-bucket/path --acl public-read - exclude
-
Wenn Sie die Befehle
s3 cp,s3 mv,s3 syncoders3 rmverwenden, können Sie die Ergebnisse mit der Option--excludeoder--includefiltern. Die Option--excludelegt Regeln fest, um nur Objekte vom Befehl auszuschließen, und die Optionen gelten in der angegebenen Reihenfolge. Dies wird im folgenden Beispiel veranschaulicht.Local directory contains 3 files: MyFile1.txt MyFile2.rtf MyFile88.txt// Exclude all .txt files, resulting in only MyFile2.rtf being copied$aws s3 cp . s3://amzn-s3-demo-bucket/path --exclude "*.txt"// Exclude all .txt files but include all files with the "MyFile*.txt" format, resulting in, MyFile1.txt, MyFile2.rtf, MyFile88.txt being copied$aws s3 cp . s3://amzn-s3-demo-bucket/path --exclude "*.txt" --include "MyFile*.txt"// Exclude all .txt files, but include all files with the "MyFile*.txt" format, but exclude all files with the "MyFile?.txt" format resulting in, MyFile2.rtf and MyFile88.txt being copied$aws s3 cp . s3://amzn-s3-demo-bucket/path --exclude "*.txt" --include "MyFile*.txt" --exclude "MyFile?.txt" - include
-
Wenn Sie die Befehle
s3 cp,s3 mv,s3 syncoders3 rmverwenden, können Sie die Ergebnisse mit der Option--excludeoder--includefiltern. Die Option--includelegt Regeln fest, um nur die für den Befehl angegebenen Objekte einzuschließen, und die Optionen gelten in der angegebenen Reihenfolge. Dies wird im folgenden Beispiel veranschaulicht.Local directory contains 3 files: MyFile1.txt MyFile2.rtf MyFile88.txt// Include all .txt files, resulting in MyFile1.txt and MyFile88.txt being copied$aws s3 cp . s3://amzn-s3-demo-bucket/path --include "*.txt"// Include all .txt files but exclude all files with the "MyFile*.txt" format, resulting in no files being copied$aws s3 cp . s3://amzn-s3-demo-bucket/path --include "*.txt" --exclude "MyFile*.txt"// Include all .txt files, but exclude all files with the "MyFile*.txt" format, but include all files with the "MyFile?.txt" format resulting in MyFile1.txt being copied$aws s3 cp . s3://amzn-s3-demo-bucket/path --include "*.txt" --exclude "MyFile*.txt" --include "MyFile?.txt" - grant
-
Die Befehle
s3 cp,s3 mvunds3 syncenthalten die Option--grants. Diese kann genutzt werden, um Berechtigungen für das Objekt an bestimmte Benutzer oder Gruppen zu erteilen. Mithilfe der folgenden Syntax legen Sie für die Option--grantseine Liste von Berechtigungen fest. Ersetzen SiePermission,Grantee_TypeundGrantee_IDdurch Ihre eigenen Werte.Syntax
--grantsPermission=Grantee_Type=Grantee_ID[Permission=Grantee_Type=Grantee_ID...]Jeder Wert enthält die folgenden Elemente:
-
Permission– Gibt die erteilten Berechtigungen an. Mögliche Einstellungen sindread,readacl,writeacloderfull. -
Grantee_Type– Gibt an, wie der Empfänger identifiziert wird. Mögliche Einstellungen sinduri,emailaddressoderid. -
Grantee_ID– Gibt die Berechtigungsempfänger basierend aufGrantee_Typean.-
uri– Der URI der Gruppe. Weitere Informationen finden Sie unter Wer ist ein Berechtigungsempfänger? -
emailaddress– Die E-Mail-Adresse des Kontos. -
id– Die kanonische ID des Kontos.
-
Weitere Informationen zur Amazon-S3-Zugriffssteuerung finden Sie unter Zugriffssteuerung.
Im folgenden Beispiel wird ein Objekt in einen Bucket kopiert. Es werden
read-Berechtigungen für das Objekt für alle erteilt. Das Konto, das zufullgehört, erhältread-Berechtigungen (readacl,writeaclunduser@example.com).$aws s3 cp file.txt s3://amzn-s3-demo-bucket/ --grantsread=uri=http://acs.amazonaws.com/groups/global/AllUsers full=emailaddress=user@example.comSie können auch eine nicht standardmäßige Speicherklasse (
REDUCED_REDUNDANCYoderSTANDARD_IA) für Objekte angeben, die Sie in Amazon S3 hochladen. Verwenden Sie dazu die Option--storage-class.$aws s3 cp file.txt s3://amzn-s3-demo-bucket/--storage-class REDUCED_REDUNDANCY -
- recursive
-
Wenn Sie diese Option verwenden, wird der Befehl für alle Dateien oder Objekte unter dem angegebenen Verzeichnis oder Präfix ausgeführt. Das folgende Beispiel löscht
s3://amzn-s3-demo-bucket/pathund seinen gesamten Inhalt.$aws s3 rm s3://amzn-s3-demo-bucket/path --recursive
Ressourcen
AWS CLI-Referenz:
Service-Referenz:
-
Arbeiten mit Amazon-S3-Buckets im Amazon-S3-Benutzerhandbuch
-
Arbeiten mit Amazon-S3-Objekten im Amazon-S3-Benutzerhandbuch
-
Hierarchisches Auflisten von Schlüsseln mithilfe von Präfix und Trennzeichen im Amazon-S3-Benutzerhandbuch
-
Abbrechen eines mehrteiligen Uploads in einen S3-Bucket mithilfe von AWS SDK für .NET-(Low-Level) im Amazon-S3-Benutzerhandbuch