ECS: Durchführen grundlegender S3-Vorgänge mit dem Skript "s3curl.pl"
Resumen: Anleitung zum Durchführen grundlegender S3-Vorgänge auf ECS 3.x mit dem Skript "s3curl".
Este artículo se aplica a
Este artículo no se aplica a
Este artículo no está vinculado a ningún producto específico.
No se identifican todas las versiones del producto en este artículo.
Instrucciones
Konfigurationsschritte
Erfassen Sie die folgenden Informationen, um Folgendes zu konfigurieren:
s3curl.plaus:
- Objektnutzer des zu untersuchenden Buckets:
- Anmelden bei der -Benutzeroberfläche>Managen>von Buckets> **Namespace auswählen**> Notieren Sie sich die Spalte "Owner" für den Bucket.
- Gemeinsamer geheimer Schlüssel des Objektnutzers:
- Anmelden bei der -Benutzeroberfläche>Nutzer>verwalten> Nutzer von oben >**Bearbeiten** Notieren Sie den gemeinsamen geheimen Schlüssel für den Nutzer.
- ECS-Node-Daten-IP-Adressen oder öffentliche IP-Adressen:
- Melden Sie sich bei der ECS-CLI an und führen Sie Folgendes aus:
getrackinfo -n
- Melden Sie sich bei der ECS-CLI an und führen Sie Folgendes aus:
Wenn der Client über eine Netzwerktrennung verfügt, werden IP-Adressen für Daten und Repl aus dem obigen Befehl angezeigt. Notieren Sie sich die Daten-IPs der Nodes.
Beispiel:
Node ID Network Ip Address Netmask Gateway VLAN 5 repl 10.###.##.##4 255.255.252.0 - - 5 data 10.###.##.##2 255.255.252.0 -
Wenn keine Netzwerktrennung vorhanden ist, rufen Sie die öffentlichen IP-Adressen der Nodes aus
getrackinfoaus:
Beispiel:
provo:/usr/share/s3curl # getrackinfo Node private Node Public RMM Ip Address Id Status Mac Ip Address Mac Ip Address Node Name =============== ====== ====== ================= ================= ================= ================= ========= 192.###.###.1 1 MA 00:1e:67:f1:85:10 10.##.##.##7 00:1e:67:bc:c5:53 10.##.##.##3 provo-red 192.###.###.2 2 SA 00:1e:67:ab:e6:d8 10.##.##.##8 00:1e:67:6a:08:8c 10.##.##.##4 sandy-red
Schritte:
- Navigieren Sie zum Verzeichnis
/usr/share/s3curlauf dem ECS-Node und suchen Sie nach der folgenden Datei.
provo:/usr/share/s3curl # provo:/usr/share/s3curl # ls -lrt .s3curl -rw------- 1 root root 2095 Mar 6 16:14 .s3curl
- Wenn die Datei nicht vorhanden ist, erstellen Sie sie mit folgendem Inhalt. ["
sample_user" verwendet wird.]
@endpoints = ECS data / public ip address gotten above.
%awsSecretAccessKeys = (
sample_user => {
id => '<Object User>',
key => '<Shared Secret>',
},
@endpoints = ('<node1_ip>','<node2_ip>','<node3_ip>','<node4_ip>',)
);
- Sie können dieser Datei wie unten gezeigt mehrere Nutzer hinzufügen.
%awsSecretAccessKeys = (
<sample_user> => {
id => '<object user>',
key => '<Shared Secret>',
},
<sample_user2> => {
id => '<object user>',
key => '<Shared Secret>',
},
@endpoints = ('<node1_ip>','<node2_ip>','<node3_ip>','<node4_ip>',)
);
- Ändern der Berechtigungen für die Dateien.
# sudo chmod 755 s3curl.pl # sudo chmod 600 .s3curl
Die Verwendung von s3curl.pl nach Konfiguration
- Testen der Nutzerauthentifizierung und Auflisten von Buckets, die diesem Nutzer gehören “
bucket_1" ist der Name des Buckets.
--id= die ID, die zuvor in der.s3curlDatei "sample_user“9020= TCP-Port für die Verbindung mit S3
# provo:/usr/share/s3curl # perl s3curl.pl --id <user ID> -- http://<hostname or IP>:9020 | xmllint --format -
provo:/usr/share/s3curl # perl s3curl.pl --id sample_user -- http://10.##.##.##7:9020 | xmllint --format -
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 421 100 421 0 0 21803 0 --:--:-- --:--:-- --:--:-- 22157
<?xml version="1.0" encloding="UTF-8" standalone="yes"?>
<ListAllMyBucketsResult xmlns="http://s3.amazonaws.com/doc/2006-03-01">
<Owner>
<ID>sample_user</ID>
<DisplayName>sample_user</DisplayName>
</Owner>
<Buckets>
<Bucket>
<Name>bucket_1</Name>
<CreationDate>2017-02-21T08:32:05.651Z</CreationDate>
<ServerSideEncryptionEnabled>false</ServerSideEncryptionEnabled>
</Bucket>
</Buckets>
<IsTruncated>false</IsTruncated>
</ListAllMyBucketsResult>
- Auflisten des Inhalts eines bestimmten Buckets.
- Ein Schlüssel in S3 bezieht sich auf eine Datei.
Hinweis: S3 hat eine flache Dateistruktur, Verzeichnisse sind nicht vorhanden.
s3curl.plZeigt nur die ersten 1000 Dateien in einem Verzeichnis an.
# perl s3curl.pl --id <user id> -- http://<hostname or IP>:9020/<bucket> | xmllint --format - | grep Key
provo:/usr/share/s3curl # perl s3curl.pl --id sample_user -- http://10.##.##.##7:9020/bucket_1 | xmllint --format - | grep Key
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1128 100 1128 0 0 29386 0 --:--:-- --:--:-- --:--:-- 29684
<MaxKeys>1000</MaxKeys>
<Key>2017 - emea schedule obj storage.xlsx</Key>
<Key>_$folder$</Key>
<Key>dir1/dir2/dir3/test_new_name.txt</Key>
- Suchen nach einem bestimmten Schlüssel oder einer bestimmten Datei in einem Bucket.
- Verwenden Sie die Präfixsuchmethode, um nach bestimmten Dateien zu suchen, sobald der Anfang des Dateinamens bekannt ist.
- Fügen Sie die Methode nach dem Bucket-Namen " ein
?prefix=<search_string>“
# perl s3curl.pl --id <user id> -- http://<hostname or IP>:9020/<bucket>?prefix=dir1/dir2/ | xmllint --format - | grep Key
provo:/usr/share/s3curl # perl s3curl.pl --id smaple_user -- http://10.##.##.##7:9020/bucket_1?prefix=dir1/dir2/ | xmllint --format - | grep Key
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 599 100 599 0 0 20309 0 --:--:-- --:--:-- --:--:-- 19966
<MaxKeys>1000</MaxKeys>
<Key>dir1/dir2/dir3/test_new_name.txt</Key>
- Lesen eines bestimmten Schlüssels oder einer bestimmten Datei in einem Bucket
Hinweis: Wenn der Name eines Schlüssels oder Buckets ein Leerzeichen enthält, verwenden Sie die Zeichenfolge "
%20", während Sie dies in der URL abfragen.
provo:/usr/share/s3curl # cat test1.txt Goodbye World provo:/usr/share/s3curl # perl s3curl.pl --id smaple_user -- http://10.##.##.##7:9020/bucket_1/dir1/dir2/dir3/test_new_name.txt Goodbye World
- Schreiben eines bestimmten Schlüssels oder einer bestimmten Datei in den Bucket
provo:/usr/share/s3curl # cat test1.txt Goodbye World provo:/usr/share/s3curl # perl s3curl.pl --id smaple_user --put=test1.txt http://10.##.##.##7:9020/bucket_1/dir1/dir2/dir3/test_new_name.txt
- Lesen Sie die Metadaten eines bestimmten Schlüssels oder einer bestimmten Datei im Bucket.
HTTP/1.1 200 OK--> Spezifische HTTP-Antwort für die Anforderungx-amz-request-id-->request_iddie in den ECS-Protokollen nachverfolgt werden könnenETag--> MD5SUM der DateiContent-Length--> Größe oder Anzahl der Bytes des Objekts
# perl s3curl.pl --id <user ID> --head http://<hostname or IP>:9020/<bucket>/<path1>/<path2>/<object>
provo:/usr/share/s3curl # perl s3curl.pl --id sample_user --head http://10.##.##.##7:9020/bucket_1/dir1/dir2/dir3/test_new_name.txt HTTP/1.1 200 OK Date: Wed, 08 Mar 2017 16:25:52 GMT Server: ViPR/1.0 x-amz-request-id: 0a3c23ed:15aa813368d:10e1:1 x-amz-id-2: 83769c2fcf5f8907b60b588a251bcc492d86d5829dfc2c8bee2504f0c527f256 ETag: "54aea9f06281a5df11d06f105c6fb039" Last-Modified: Wed, 08 Mar 2017 16:08:02 GMT x-emc-mtime: 1488989282859 Content-Encoding: identity Content-Type: application/octet-stream Content-Length: 14
- So erstellen Sie einen neuen Bucket für den Nutzer:
# perl s3curl.pl --id <user ID> --createBucket -- http://<hostname or IP>:9020/<new bucket name>
provo:/usr/share/s3curl # perl s3curl.pl --id sample_user --createBucket -- http://10.##.##.##7:9020/new_bucket_name New Bucket can be seen below. # provo:/usr/share/s3curl # perl s3curl.pl --id <user> -- http:/<hostname or IP>:9020 | xmllint --format - | grep -A1 '<Bucket>'
provo:/usr/share/s3curl # perl s3curl.pl --id sample_user -- http://10.##.##.##7:9020 | xmllint --format - | grep -A1 '<Bucket>'
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 583 100 583 0 0 31712 0 --:--:-- --:--:-- --:--:-- 32388
<Bucket>
<Name>new_bucket_name</Name>
--
<Bucket>
<Name>some_old_bucket</Name>
- Herunterladen eines bestimmten Schlüssels oder einer bestimmten Datei in einem Bucket auf einen ECS-Node.
# perl s3curl.pl --id <user ID> -- http://<hostname or IP>:9020/<bucket>/<path1>/<object> -o download2.txt
provo:/usr/share/s3curl # perl s3curl.pl --id sample_user -- http://10.##.##.##7:9020/bucket_1/dir1/dir2/dir3/test_new_name.txt -o download2.txt
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 14 100 14 0 0 1360 0 --:--:-- --:--:-- --:--:-- 1400
provo:/usr/share/s3curl #
provo:/usr/share/s3curl # cat download2.txt
Goodbye World
- Löschen eines bestimmten Schlüssels oder einer bestimmten Datei im Bucket, der dem Nutzer gehört.
provo:/usr/share/s3curl # perl s3curl.pl --id <user ID> --delete -- http://<hostname or IP>:9020/<bucket>/<path1>/<path2>/<object>
Hinweis: Wenn der Objektname ein Leerzeichen dazwischen hat, müssen Sie den gesamten Pfad in Anführungszeichen setzen und "
Beispiel für einen Objektnamen:
+ " im Raum.
Beispiel für einen Objektnamen:
test_new_name test - test.txt
perl s3curl.pl --id sample_user --delete -- "http://10.##.##.##7:9020/bucket/dir1/dir2/test_new_name+test+-+test.txt"
- Löschen eines Buckets, der dem Nutzer gehört.
provo:/usr/share/s3curl # perl s3curl.pl --id smaple_user --delete -- http://10.##.##.##7:9020/new_bucket_name
Der Bucket ist nach dem Auflisten der Buckets, die zum Nutzer gehören, nicht vorhanden:
provo:/usr/share/s3curl # perl s3curl.pl --id smaple_user -- http://10.##.##.##7:9020 | xmllint --format - | grep -A1 '<Bucket>'
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 421 100 421 0 0 19928 0 --:--:-- --:--:-- --:--:-- 21050
<Bucket>
<Name>bucket_1</Name>
- Partielles Lesen einer Datei mithilfe des "byte: range"-Headers (darunter werden die ersten sieben Zeichen gelesen)
- Bereich: Bytewerte umfassen:
Die ersten 500 Bytes: "bytes 0-499/1234" Die zweiten 500 Bytes: "bytes 500-999/1234" Alle außer den ersten 500 Bytes: "bytes 500-1233/1234" Die letzten 500 Bytes: "bytes 734-1233/1234"
provo:/usr/share/s3curl # cat test1.txt Goodbye World provo:/usr/share/s3curl # perl s3curl.pl --id sample_user -- http://10.##.##.##7:9020/bucket_1/dir1/dir2/dir3/test_new_name.txt -H "Range: bytes=0-6" Goodbye Using the "--debug" option for more detailed responses.
Hinweis: Die Debug-Option kann für jede der
s3curl.pl verwendet werden.
# perl s3curl.pl --debug --id <user ID> -- http://<hostname>:9020/<bucket>/<object> -H "Range: bytes=0-6"
provo:/usr/share/s3curl # perl s3curl.pl --debug --id sample_user -- http://10.##.##.##7:9020/bucket_1/dir1/dir2/dir3/test_new_name.txt -H "Range: bytes=0-6" s3curl: Found the url: host=10.##.##.237; port=9020; uri=/thomas/dir1/dir2/dir3/test_new_name.txt; query=; s3curl: ordinary endpoint signing case s3curl: StringToSign='GET\n\n\nWed, 08 Mar 2017 17:10:59 +0000\n/bucket_1/dir1/dir2/dir3/test_new_name.txt' s3curl: exec curl -v -H 'Date: Wed, 08 Mar 2017 17:10:59 +0000' -H 'Authorization: AWS hegars5:+YrMhohkQ2HqRNkYURJMbddIwrA=' -L -H 'content-type: ' http://10.##.##.##7:9020/bucket_1/dir1/dir2/dir3/test_new_name.txt -H 'Range: bytes=0-6' * Hostname was NOT found in DNS cache * Trying 10.##.##.##7... * Connected to 10.##.##.##7 (10.##.##.##7) port 9020 (#0) > GET /bucket_1/dir1/dir2/dir3/test_new_name.txt HTTP/1.1 > User-Agent: curl/7.37.0 > Host: 10.##.##.##7:9020 > Accept: */* > Date: Wed, 08 Mar 2017 17:10:59 +0000 > Authorization: AWS hegars5:+YrMhohkQ2HqRNkYURJMbddIwrA= > Range: bytes=0-6 > < HTTP/1.1 206 Partial Content < Date: Wed, 08 Mar 2017 17:10:59 GMT < Content-Range: bytes 0-6/14 < Accept-Ranges: bytes * Server ViPR/1.0 is not blacklisted < Server: ViPR/1.0 < x-amz-request-id: 0a3c23ed:15aa813368d:10fc:1 < x-amz-id-2: 83769c2fcf5f8907b60b588a251bcc492d86d5829dfc2c8bee2504f0c527f256 < ETag: "54aea9f06281a5df11d06f105c6fb039" < Last-Modified: Wed, 08 Mar 2017 17:02:13 GMT < x-emc-mtime: 1488992533141 < Content-Encoding: identity < Content-Type: application/octet-stream < Content-Length: 7 < * Connection #0 to host 10.##.##.##7 left intact Goodbye
- Hochladen eines Stapels von Dateien oder Schlüsseln in einen bestimmten Bucket.
- Erstellen Sie eine Beispieldatei.
# vi /usr/share/s3curl/test # cat /usr/share/s3curl/test
Diese Datei wird 1.000 Mal in ECS hochgeladen.
- Erstellen Sie das folgende Skript.
# vi /usr/share/s3curl/script.sh
#!/bin/bash
# script.sh
for i in {1..1000}
do
./s3curl.pl --id=sample_user --put="test" -- "http://10.##.##.##7:9020/bucket_1/File$(printf "%04d" "$i").txt"
echo "File$(printf "%04d" "$i").txt"
done
- Ändern Sie die Berechtigungen des Skripts.
# cd /usr/share/s3curl # sudo chmod +755
- Führen Sie das Skript aus.
# sh script.s
- Schreiben einer Datei mit einem Leerzeichen oder einem Sonderzeichen
- Schreiben einer Datei mit einem Leerzeichen namens "
test file.txt" (erfordert ASCII-Wert %20)
provo:/usr/share/s3curl # perl s3curl.pl --id upload_test --put="test file.txt" -- http://10.##.##.##:9020/bucket_name/test%20file.txt
- Schreiben einer Datei mit einer Klammer mit Sonderzeichen namens "
testfile (1).txt" (erfordert einen Schrägstrich "\", um Sonderzeichen zu ignorieren)
provo:/usr/share/s3curl # perl s3curl.pl --id upload_test --put="testfile (1).txt" -- http://10.##.##.##:9020/bucket_name/testfile%20\(1\).txt
Productos afectados
Elastic Cloud StorageProductos
Elastic Cloud StoragePropiedades del artículo
Número del artículo: 000014704
Tipo de artículo: How To
Última modificación: 20 oct. 2025
Versión: 5
Encuentre respuestas a sus preguntas de otros usuarios de Dell
Servicios de soporte
Compruebe si el dispositivo está cubierto por los servicios de soporte.