Wie man mit s3cmd auf EODATA zugreift auf CODE-DE

Unter EODATA verstehen wir das Erdbeobachtungsdatenarchiv, das z.B. über CREODIAS oder das Copernicus Data Space Ecosystem verfügbar ist. Über CODE-DE können Sie direkt auf dieses Archiv zugreifen.

Wenn Sie auf EODATA in der CODE-DE 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 CODE-DE 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 CODE-DE 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 CODE-DE erhält

Nr. 3 Virtuelle Maschine

Sie benötigen eine virtuelle Maschine, die auf CODE-DE 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 CODE-DE 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:

../_images/access-eodata-s3cmd-02_creodias.png

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:

../_images/access-eodata-s3cmd-01_creodias.png

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:

../_images/access-eodata-s3cmd-03_creodias.png

Navigate to the directory:

cd S5P_RPRO_L1B_RA_BD1_20180430T001950_20180430T020120_02818_93_020100_20220417T162224/

List its contents using ls:

../_images/access-eodata-s3cmd-04_creodias.png

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 CODE-DE.

Learn more here: Wie man auf Objektspeicher auf der CODE-DE Cloud mit s3cmd zugreift