Wie man mit s3cmd auf EODATA zugreift auf EO-Lab
Unter EODATA verstehen wir das Erdbeobachtungsdatenarchiv, das z.B. über CREODIAS oder das Copernicus Data Space Ecosystem verfügbar ist. Über EO-Lab können Sie direkt auf dieses Archiv zugreifen.
Wenn Sie auf EODATA in der EO-Lab Cloud zugreifen möchten, können Sie das Repository als Dateisystem mounten. Das bedeutet, dass die Cloud-Daten als ein Teil des lokalen File-Systems erscheinen. Eine andere Möglichkeit, die in diesem Artikel beschrieben wird, ist der Zugriff auf das EODATA-Repository mit s3cmd von einer EO-Lab virtuellen Maschine.
Was wir behandeln werden
Konfiguration von s3cmd für den Zugriff auf das EODATA-Repository
Erkunden des EODATA-Repositorys
Herunterladen von Dateien
Voraussetzungen
Nr. 1 Konto
Sie benötigen ein EO-Lab Konto mit Zugriff auf die Horizon-Schnittstelle: https://cloud.fra1-1.cloudferro.com/auth/login/?next=/.
Nr. 2 Zugriffsschlüssel (EC2 Credentials) für EODATA
Sie müssen über Zugangsdaten für den Zugriff auf das EODATA-Repository verfügen. Diese sind nicht identisch mit den Credentials, die für den Zugriff auf vom Benutzer erstellte Objektspeicher-Container verwendet werden. Der folgende Artikel enthält weitere Informationen: Wie man Zugangsdaten für den Zugriff auf EODATA auf einer VM auf EO-Lab erhält
Nr. 3 Virtuelle Maschine
Sie benötigen eine virtuelle Maschine, die auf EO-Lab gehostet wird. Dieser Artikel enthält Anweisungen für Ubuntu 22.04. Andere Betriebssysteme und Umgebungen sind nicht Gegenstand dieses Artikels.
In den folgenden Artikeln erfahren Sie, wie man auf EO-Lab eine Linux virtuelle Maschine erstellt:
Nr. 4 Installation von s3cmd
Sie müssen s3cmd auf Ihrer virtuellen Maschine installiert haben. Der folgende Artikel enthält Informationen dazu:
Nr. 5 Die Rolle der Konfigurationsdatei in s3cmd
s3cmd speichert seine Konfiguration in Konfigurationsdateien, eine Verbindung pro Datei. Sie müssen entscheiden, wo Sie die Verbindungsdaten für das EODATA-Repository speichern möchten. Erfahren Sie hier mehr:
s3cmd für den Zugriff auf das EODATA-Repository konfigurieren
In diesem Artikel wird eine Beispielkonfiguration in der Datei eodata-connection im Verzeichnis /home/eouser gespeichert und für den Ablauf verwendet; Sie können die Befehle nach Ihren Bedürfnissen anpassen.
Hier ist der Befehl, um den Prozess der Konfiguration des s3cmd zu starten:
s3cmd -c /home/eouser/eodata-access --configure
Sie werden nun Fragen zu Ihrer Konfiguration erhalten. Beantworten Sie diese wie unten beschrieben, aber geben Sie anstelle von CLOUDFERRO Ihren Zugangsschlüssel und anstelle von PUBLIC Ihren geheimen Schlüssel ein (falls sie unterschiedlich sind). Wenn Sie diese Anmeldeinformationen nicht kennen, befolgen Sie Voraussetzung Nr. 2. Drücken Sie nach der Beantwortung jeder Frage die Eingabetaste.
Access Key [access]: CLOUDFERRO
Secret Key [access]: PUBLIC
Default Region [RegionOne]: default
Use "s3.amazonaws.com" for S3 Endpoint and not modify it to the target Amazon S3.
S3 Endpoint [eodata.cloudferro.com:] eodata.cloudferro.com
Use "%(bucket)s.s3.amazonaws.com" to the target Amazon S3. "%(bucket)s" and "%(location)s" vars can be used
if the target S3 system supports dns based buckets.
DNS-style bucket+hostname:port template for accessing a bucket [%(bucket)s.s3.amazonaws.com]:
Encryption password is used to protect your files from reading
by unauthorized persons while in transfer to S3
Encryption password:
Path to GPG program [/usr/bin/gpg]:
When using secure HTTPS protocol all communication with Amazon S3
servers is protected from 3rd party eavesdropping. This method is
slower than plain HTTP, and can only be proxied with Python 2.7 or newer
Use HTTPS protocol [No]: False
On some networks all internet access must go through a HTTP proxy.
Try setting it here if you can't connect to S3 directly
HTTP Proxy server name:
Nachdem Sie alle Fragen beantwortet haben, sollten Sie gefragt werden, ob Sie den Zugang testen möchten:
Test access with supplied credentials? [Y/n]
Antworten Sie mit Y und drücken Sie die Eingabetaste.
Testing should take no more than a couple of seconds. Once the process is completed, you should get an appropriate confirmation and a question whether to save the settings or not:
Please wait, attempting to list all buckets...
Success. Your access key and secret key worked fine :-)
Now verifying that encryption works...
Not configured. Never mind.
Save settings? [y/N]
Antworten Sie mit y und drücken Sie die Eingabetaste. Sie sollten eine Bestätigung ähnlich der folgenden erhalten:
Configuration saved to '/home/eouser/eodata-access'
Sie sind nun zurück im Eingabemodus.
Erkundung des EODATA-Repositorys
Um die verfügbaren Container aufzulisten, führen Sie diesen Befehl aus:
s3cmd -c /home/eouser/eodata-access ls
Die Ausgabe sollte Container mit den Namen DIAS und EODATA zeigen. Beide dienen redundant als Zugriffsmöglichkeit auf das EODATA-Repository, Sie können einen der beiden Container auswählen. In diesem Beispiel werden wir den Container EODATA verwenden.
2017-11-15 10:40 s3://DIAS
2017-11-15 10:40 s3://EODATA
Auch andere Container können hier sichtbar sein. Die Behandlung dieser Container liegt außerhalb des Rahmens dieses Artikels.
Listen Sie den Inhalt des Verzeichnisses s3://EODATA, indem Sie diesen Befehl ausführen:
s3cmd -c /home/eouser/eodata-access ls s3://EODATA/
Sie sollten eine ähnliche Ausgabe wie die folgende erhalten:
DIR s3://EODATA/C3S/
DIR s3://EODATA/CAMS/
DIR s3://EODATA/CEMS/
DIR s3://EODATA/CLMS/
DIR s3://EODATA/CMEMS/
DIR s3://EODATA/Envisat/
DIR s3://EODATA/Envisat-ASAR/
DIR s3://EODATA/Global-Mosaics/
DIR s3://EODATA/Jason-3/
DIR s3://EODATA/Landsat-5/
DIR s3://EODATA/Landsat-7/
DIR s3://EODATA/Landsat-8/
DIR s3://EODATA/SMOS/
DIR s3://EODATA/Sentinel-1/
DIR s3://EODATA/Sentinel-1-COG/
DIR s3://EODATA/Sentinel-1-RTC/
DIR s3://EODATA/Sentinel-2/
DIR s3://EODATA/Sentinel-3/
DIR s3://EODATA/Sentinel-5P/
DIR s3://EODATA/Sentinel-6/
DIR s3://EODATA/auxdata/
Sie können auf diese Weise verschiedene Verzeichnisse durchsuchen. Um zum Beispiel den Inhalt des Verzeichnisses Sentinel-1 aufzulisten, führen Sie folgenden Befehl aus:
s3cmd -c /home/eouser/eodata-access ls s3://EODATA/Sentinel-1/
Die Ausgabe sollte wie folgt aussehen:
DIR s3://EODATA/Sentinel-1/AUX/
DIR s3://EODATA/Sentinel-1/SAR/
Beenden Sie Pfade mit Schrägstrich bei der Verwendung von s3cmd ls
Achten Sie beim Auflisten von Verzeichnissen mit dem Befehl s3cmd ls darauf, die Pfade mit einem Schrägstrich abzuschließen. Wenn Sie diesen Befehl ausführen, um den Inhalt des Verzeichnisses CLMS aufzulisten,
s3cmd -c /home/eouser/eodata-access ls s3://EODATA/CLMS/
sollten Sie eine Ausgabe erhalten, die das enthält, wonach Sie suchen:
DIR s3://EODATA/CLMS/Global/
DIR s3://EODATA/CLMS/Imagery_and_reference_data/
DIR s3://EODATA/CLMS/Local/
DIR s3://EODATA/CLMS/Pan-European/
2021-10-08 07:42 0 s3://EODATA/CLMS/
Wenn Sie jedoch den Schrägstrich am Ende weglassen,
s3cmd -c /home/eouser/eodata-access ls s3://EODATA/CLMS
enthält Ihre Ausgabe nur Ihre ursprüngliche Anfrage mit einem Schrägstrich am Ende:
DIR s3://EODATA/CLMS/
Auflistung des Inhalts eines Produkts
Um alle Elemente des Produkts S5P_OFFL_L1B_RA_BD8_20230220T011032_20230220T025202_27746_03_020100_20230220T043635 aufzulisten, führen Sie diesen Befehl aus:
s3cmd -c /home/eouser/eodata-access ls s3://EODATA/Sentinel-5P/TROPOMI/L1B/2023/02/20/S5P_OFFL_L1B_RA_BD8_20230220T011032_20230220T025202_27746_03_020100_20230220T043635/
Die Ausgabe sollte wie folgt aussehen:
2023-02-20 07:06 0 s3://EODATA/Sentinel-5P/TROPOMI/L1B/2023/02/20/S5P_OFFL_L1B_RA_BD8_20230220T011032_20230220T025202_27746_03_020100_20230220T043635/
2023-02-20 07:06 132968 s3://EODATA/Sentinel-5P/TROPOMI/L1B/2023/02/20/S5P_OFFL_L1B_RA_BD8_20230220T011032_20230220T025202_27746_03_020100_20230220T043635/S5P_OFFL_L1B_RA_BD8_20230220T011032_20230220T025202_27746_03_020100_20230220T043635.cdl
2023-02-20 07:06 2156950172 s3://EODATA/Sentinel-5P/TROPOMI/L1B/2023/02/20/S5P_OFFL_L1B_RA_BD8_20230220T011032_20230220T025202_27746_03_020100_20230220T043635/S5P_OFFL_L1B_RA_BD8_20230220T011032_20230220T025202_27746_03_020100_20230220T043635.nc
Herunterladen von Dateien
Beispiel 1: Herunterladen einer einzelnen Datei
Um eine Datei aus einem Produktverzeichnis herunterzuladen, verwenden Sie den Befehl s3cmd get und geben das Verzeichnis (des Produktes) und den Namen der Datei an. Um beispielsweise die Datei S5P_OPER_AUX_CTMANA_20230812T000000_20230813T000000_20230820T143624.cdl aus dem Produkt S5P_OPER_AUX_CTMANA_20230812T000000_20230813T000000_20230820T143624 herunterzuladen, führen Sie diesen Befehl aus:
s3cmd -c /home/eouser/eodata-access get s3://EODATA/Sentinel-5P/AUX/AUX_CTMANA/2023/08/12/S5P_OPER_AUX_CTMANA_20230812T000000_20230813T000000_20230820T143624/S5P_OPER_AUX_CTMANA_20230812T000000_20230813T000000_20230820T143624.cdl
Der Download-Vorgang sollte beginnen. Die Datei sollte in Ihrem aktuellen Arbeitsverzeichnis gespeichert werden.
Nachdem der Prozess beendet wurde, können Sie den Befehl ls verwenden, um die heruntergeladene Datei zu sehen:

Beispiel 2: Herunterladen eines vollständigen Produkts
Um alle Dateien eines Produkts aus dem zugehörigen Verzeichnis herunterzuladen, verwenden Sie den Befehl s3cmd get mit dem Parameter -r, mit dem Sie rekursive Downloads durchführen können. Um beispielsweise alle Dateien des Produkts S5P_OFFL_L1B_RA_BD8_20230220T011032_20230220T025202_27746_03_020100_20230220T043635 herunterzuladen, führen Sie diesen Befehl aus:
s3cmd -c /home/eouser/eodata-access get -r s3://EODATA/Sentinel-5P/TROPOMI/L1B/2023/02/20/S5P_OFFL_L1B_RA_BD8_20230220T011032_20230220T025202_27746_03_020100_20230220T043635
Der Download-Vorgang sollte beginnen. Das Verzeichnis und die darin enthaltenen Dateien sollten in Ihrem aktuellen Arbeitsverzeichnis gespeichert werden.
Bemerkung
Wenn Sie das Verzeichnis im obigen Befehl mit einem Schrägstrich abschließen, wird nur der Inhalt dieses Verzeichnisses in Ihrem aktuellen Arbeitsverzeichnis gespeichert. Das Verzeichnis selbst wird nicht heruntergeladen. Wenn Sie also das Verzeichnis und seinen Inhalt herunterladen möchten, dürfen Sie den Pfad nicht mit einem Schrägstrich abschließen.
Nachdem der Vorgang abgeschlossen wurde, können Sie den Befehl ls verwenden, um die heruntergeladenen Dateien zu sehen:

Verwendung des Sync-Befehls
s3cmd kann auch sicherstellen, dass ein Verzeichnis auf Ihrer virtuellen Maschine genau den gleichen Inhalt hat wie ein Verzeichnis im EODATA-Repository. Wenn das lokale Verzeichnis einige oder alle Dateien aus dem entfernten Speicherort nicht enthält, werden sie heruntergeladen.
Herunterladen eines Produkts mit dem Sync-Befehl
Nehmen wir an, Sie wollen das Produkt mit dem Namen S5P_RPRO_L1B_RA_BD1_20180430T001950_20180430T020120_02818_93_020100_20220417T162224 aus dem EODATA-Repository auf die lokale Festplatte herunterladen und sicherstellen, dass es nicht durch lokale Modifikationen verändert wird.
Erstellen Sie zunächst ein Verzeichnis für dieses Produkt - in diesem Beispiel wird es product-path genannt
mkdir product-path
Um das Produkt dort mit dem Befehl sync herunterzuladen, führen Sie folgendes aus:
s3cmd -c /home/eouser/eodata-access sync s3://EODATA/Sentinel-5P/TROPOMI/L1B_RA_BD1/2018/04/30/S5P_RPRO_L1B_RA_BD1_20180430T001950_20180430T020120_02818_93_020100_20220417T162224 ./product-path
Erläuterung zu diesem Befehl:
s3cmd ist der Name des Programms, das wir verwenden
-c /home/eouser/eodata-access übergibt die Konfigurationsdatei
sync ist der Name des Befehls, den wir ausführen
s3://EODATA/Sentinel-5P/TROPOMI/L1B_RA_BD1/2018/04/30/S5P_RPRO_L1B_RA_BD1_20180430T001950_20180430T020120_02818_93_020100_20220417T162224 ist das Remote-Verzeichnis, von dem wir Dateien abrufen, in diesem Fall ist es eines der Produkte
./product-path ist der lokale Pfad und das Verzeichnis, in das die Dateien heruntergeladen werden sollen
Die Ausgabe sollte Informationen über den Fortschritt des Downloads enthalten, etwa so:
download: 's3://EODATA/Sentinel-5P/TROPOMI/L1B_RA_BD1/2018/04/30/S5P_RPRO_L1B_RA_BD1_20180430T001950_20180430T020120_02818_93_020100_20220417T162224/S5P_RPRO_L1B_RA_BD1_20180430T001950_20180430T020120_02818_93_020100_20220417T162224.cdl' -> './product-path/S5P_RPRO_L1B_RA_BD1_20180430T001950_20180430T020120_02818_93_020100_20220417T162224/S5P_RPRO_L1B_RA_BD1_20180430T001950_20180430T020120_02818_93_020100_20220417T162224.cdl' [1 of 2]
138436 of 138436 100% in 0s 3.09 MB/s done
download: 's3://EODATA/Sentinel-5P/TROPOMI/L1B_RA_BD1/2018/04/30/S5P_RPRO_L1B_RA_BD1_20180430T001950_20180430T020120_02818_93_020100_20220417T162224/S5P_RPRO_L1B_RA_BD1_20180430T001950_20180430T020120_02818_93_020100_20220417T162224.nc' -> './product-path/S5P_RPRO_L1B_RA_BD1_20180430T001950_20180430T020120_02818_93_020100_20220417T162224/S5P_RPRO_L1B_RA_BD1_20180430T001950_20180430T020120_02818_93_020100_20220417T162224.nc' [2 of 2]
468728375 of 468728375 100% in 3s 145.92 MB/s done
Done. Downloaded 468866811 bytes in 3.1 seconds, 143.71 MB/s.
Sobald der Vorgang abgeschlossen ist, können Sie zu dem Verzeichnis mit dem Namen product-path navigieren:
cd product-path
List its contents using the ls command to see the downloaded directory containing the product:

Navigate to the directory:
cd S5P_RPRO_L1B_RA_BD1_20180430T001950_20180430T020120_02818_93_020100_20220417T162224/
List its contents using ls:

Syncing missing files
To further test the sync command, you can remove one of the downloaded files. Let that be file S5P_RPRO_L1B_RA_BD1_20180430T001950_20180430T020120_02818_93_020100_20220417T162224.cdl
rm -i ./S5P_RPRO_L1B_RA_BD1_20180430T001950_20180430T020120_02818_93_020100_20220417T162224.cdl
Using -i parameter is not mandatory as it will only ask you for confirmation whether you want to remove the file.
To approve, answer the prompt for deletion with y and press Enter.
Return to the directory from which you originally executed the sync command:
cd ../..
Execute the sync command the same way you did previously. The missing file should be downloaded.
If the user has modified downloaded files, the sync command without parameters should restore the files that have their counterparts in the EODATA repository. And vice versa: the files that are added locally and do not originate from the cloud, will be left intact.
What To Do Next
s3cmd can also be used to access object storage from EO-Lab.
Learn more here: Wie man auf Objektspeicher auf der EO-Lab Cloud mit s3cmd zugreift