Verwenden Sie Befehle auf hoher Ebene (s3) mit AWS CLI - AWS Command Line Interface

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Verwenden Sie Befehle auf hoher Ebene (s3) mit 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.

Voraussetzungen

Zur Ausführung von s3-Befehlen ist Folgendes erforderlich:

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 eines Timeouts fehlschlägt oder wenn Sie den Vorgang manuell abgebrochen haben AWS CLI, AWS CLI stoppt der 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.

Dateieigenschaften und Tags in mehrteiligen Kopien

Wenn Sie die AWS CLI Version 1 der Befehle im aws s3 Namespace verwenden, um eine Datei von einem Amazon S3 S3-Bucket-Speicherort an einen anderen Amazon S3 S3-Bucket-Speicherort zu kopieren, und dieser Vorgang mehrteiliges Kopieren verwendet, werden keine Dateieigenschaften vom Quellobjekt in das Zielobjekt kopiert.

Standardmäßig übertragen die Befehle der AWS CLI Version 2 im s3 Namespace, mit denen mehrteilige Kopien ausgeführt werden, alle Tags und die folgenden Eigenschaften von der Quell- zur Zielkopie:content-type,,,, content-language content-encodingcontent-disposition, cache-control und. expires metadata

Dies kann zu zusätzlichen AWS API-Aufrufen an den Amazon S3 S3-Endpunkt führen, die nicht getätigt worden wären, wenn Sie AWS CLI Version 1 verwendet hätten. Dies sind beispielsweise: HeadObject, GetObjectTagging und PutObjectTagging.

Wenn Sie dieses Standardverhalten in Befehlen der AWS CLI Version 2 ändern müssen, verwenden Sie den --copy-props Parameter, um eine der folgenden Optionen anzugeben:

  • default – Der Standardwert. Gibt an, dass die Kopie alle an das Quellobjekt angehängten Tags und die Eigenschaften enthält, die durch den --metadata-directive-Parameter für nicht mehrteilige Kopien verwendet werden: content-type, content-language, content-encoding, content-disposition, cache-control, expires und metadata.

  • metadata-directive – Gibt an, dass die Kopie nur die Eigenschaften enthält, die von dem Parameter --metadata-directive für nicht mehrteilige Kopien verwendet werden. Es werden keine Tags kopiert.

  • none – Gibt an, dass die Kopie keine der Eigenschaften des Quellobjekts enthält.

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://bucket-name erstellt.

$ aws s3 mb s3://bucket-name

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 ls 2018-12-11 17:08:50 my-bucket 2018-12-14 14:55:44 my-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 ls s3://bucket-name PRE 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 ls s3://bucket-name/example/ 2018-12-06 18:59:32 3 MyFile1.txt

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://bucket-name entfernt.

$ aws s3 rb s3://bucket-name

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 rb s3://bucket-name --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://bucket-name/example gelöscht.

$ aws s3 rm s3://bucket-name/example/filename.txt

Im folgenden Beispiel werden alle Objekte aus s3://bucket-name/example mit der Option --recursive gelöscht.

$ aws s3 rm s3://bucket-name/example --recursive

Verschieben von Objekten

Verwenden Sie den Befehl s3 mv, um Objekte aus einem Bucket oder einem lokalen Verzeichnis zu verschieben. Der s3 mv Befehl kopiert das Quellobjekt oder die Quelldatei an das angegebene Ziel und löscht dann das Quellobjekt oder die Quelldatei.

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 S3-Quell- oder Ziel-URIs irgendeine Art von Access Point-ARNs oder Access Point-Aliasnamen verwenden, müssen Sie besonders darauf achten, dass Ihre Amazon S3 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 Objekt auf sich selbst verschoben werden, was zu einem versehentlichen Löschen Ihrer Quelldatei oder Ihres Quellobjekts führen kann. Um zu überprüfen, ob Quell- und Ziel-Bucket nicht identisch sind, verwenden Sie den --validate-same-s3-paths Parameter oder setzen Sie die Umgebungsvariable AWS_CLI_S3_MV_VALIDATE_SAME_S3_PATHS auf. true

Im folgenden Beispiel werden alle Objekte von s3://bucket-name/example nach s3://my-bucket/ verschoben.

$ aws s3 mv s3://bucket-name/example s3://my-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://bucket-name

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://bucket-name/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 verwenden PowerShell, ändert die Shell möglicherweise die Kodierung einer CRLF oder fügt eine CRLF zur Eingabe oder Ausgabe über die Pipeline oder zur umgeleiteten Ausgabe oder zur umgeleiteten Ausgabe hinzu.

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://bucket-name/example nach s3://my-bucket/ kopiert.

$ aws s3 cp s3://bucket-name/example s3://my-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://bucket-name

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://bucket-name/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://bucket-name/filename.txt

Im folgenden Beispiel wird die s3://bucket-name/filename.txt-Datei nach stdout gestreamt und der Inhalt an die Konsole ausgegeben.

$ aws s3 cp s3://bucket-name/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://bucket-name/pre - | bzip2 --best | aws s3 cp - s3://bucket-name/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.

Das folgende Beispiel synchronisiert den Inhalt eines Amazon-S3-Präfixes namens path im Bucket namens my-bucket mit dem aktuellen Arbeitsverzeichnis.

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://my-bucket/path/MySubdirectory synchronisiert.

$ aws s3 sync . s3://my-bucket/path upload: MySubdirectory\MyFile3.txt to s3://my-bucket/path/MySubdirectory/MyFile3.txt upload: MyFile2.txt to s3://my-bucket/path/MyFile2.txt upload: MyFile1.txt to s3://my-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://my-bucket/path // Sync with deletion - object is deleted from bucket $ aws s3 sync . s3://my-bucket/path --delete delete: s3://my-bucket/path/MyFile1.txt // Delete object from bucket $ aws s3 rm s3://my-bucket/path/MySubdirectory/MyFile3.txt delete: s3://my-bucket/path/MySubdirectory/MyFile3.txt // Sync with deletion - local file is deleted $ aws s3 sync s3://my-bucket/path . --delete delete: MySubdirectory\MyFile3.txt // Sync with Infrequent Access storage class $ aws s3 sync . s3://my-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://my-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://my-bucket/path --delete --exclude "path/MyFile?.txt" delete: s3://my-bucket/path/MyFile88.txt ''' // Sync with delete, excluding MyFile2.rtf - local file is NOT deleted $ aws s3 sync s3://my-bucket/path . --delete --exclude "./MyFile2.rtf" download: s3://my-bucket/path/MyFile1.txt to MyFile1.txt ''' // Sync with delete, local copy of MyFile2.rtf is deleted $ aws s3 sync s3://my-bucket/path . --delete delete: 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 im Referenzhandbuch, AWS CLI Version 2, im den jeweiligen Befehl.

acl

s3 sync und s3 cp können die Option --acl verwenden. Auf diese Weise können Sie die Zugriffsberechtigungen für Dateien festlegen, die nach Amazon S3 kopiert werden. Die Option --acl akzeptiert die Werte private, public-read und public-read-write. Weitere Informationen finden Sie unter Canned-ACL im Benutzerhandbuch zu Amazon Simple Storage Service.

$ aws s3 sync . s3://my-bucket/path --acl public-read
exclude

Wenn Sie die Befehle s3 cp, s3 mv, s3 sync oder s3 rm verwenden, können Sie die Ergebnisse mit der Option --exclude oder --include filtern. Die Option --exclude legt 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://my-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://my-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://my-bucket/path --exclude "*.txt" --include "MyFile*.txt" --exclude "MyFile?.txt"
include

Wenn Sie die Befehle s3 cp, s3 mv, s3 sync oder s3 rm verwenden, können Sie die Ergebnisse mit der Option --exclude oder --include filtern. Die Option --include legt 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://my-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://my-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://my-bucket/path --include "*.txt" --exclude "MyFile*.txt" --include "MyFile?.txt"
grant

Die Befehle s3 cp, s3 mv und s3 sync enthalten 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 --grants eine Liste von Berechtigungen fest. Ersetzen Sie Permission, Grantee_Type und Grantee_ID durch Ihre eigenen Werte.

Syntax

--grants Permission=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 sind read, readacl, writeacl oder full.

  • Grantee_Type – Gibt an, wie der Empfänger identifiziert wird. Mögliche Einstellungen sind uri, emailaddress oder id.

  • Grantee_ID – Gibt die Berechtigungsempfänger basierend auf Grantee_Type an.

    • 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 zu full gehört, erhält read-Berechtigungen (readacl, writeacl und user@example.com).

$ aws s3 cp file.txt s3://my-bucket/ --grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers full=emailaddress=user@example.com

Sie können auch eine nicht standardmäßige Speicherklasse (REDUCED_REDUNDANCY oder STANDARD_IA) für Objekte angeben, die Sie in Amazon S3 hochladen. Verwenden Sie dazu die Option --storage-class.

$ aws s3 cp file.txt s3://my-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://my-bucket/path und seinen gesamten Inhalt.

$ aws s3 rm s3://my-bucket/path --recursive

Ressourcen

AWS CLI Referenz:

Service-Referenz: