Skip to main content
  • »
  • EODATA »
  • Jak uzyskać dostęp do EODATA za pomocą s3cmd na NSIS

Jak uzyskać dostęp do EODATA za pomocą s3cmd na NSIS

Jeśli chcesz uzyskać dostęp do repozytorium EODATA w chmurze NSIS, jedną z dostępnych opcji jest zamontowanie go jako systemu plików, co oznacza, że dane w repozytorium będą wyglądały, jakby były częścią lokalnego systemu. Inną możliwością, którą opiszemy w tym artykule, jest uzyskanie dostępu do repozytorium EODATA za pomocą s3cmd na maszynie wirtualnej hostowanej w chmurze NSIS.

Co obejmuje ten artykuł?

  • Konfigurowanie s3cmd do dostępu do repozytorium EODATA

  • Eksplorowanie repozytorium EODATA

  • Pobieranie plików

Wymagania wstępne

Nr 1 Konto

Potrzebujesz konta hostingowego NSIS z dostępem do dashboardu Horizon: https://horizon.cloudferro.com.

Nr 2 Uzyskane poświadczenia EC2

Musisz uzyskać poświadczenia używane do uzyskania dostępu do repozytorium EODATA. Nie są to te same poświadczenia, które są używane do uzyskania dostępu do kontenerów pamięci obiektowej (ang. object storage containers) tworzonych przez użytkowników. Następujący artykuł zawiera więcej informacji: Jak uzyskać poświadczenia używane do uzyskiwania dostępu do EODATA na maszynie wirtualnej w chmurze NSIS?

Nr 3 Maszyna wirtualna

Potrzebujesz maszyny wirtualnej hostowanej w chmurze NSIS. Ten artykuł zawiera instrukcje dla Ubuntu 22.04. Inne systemy operacyjne i środowiska są poza zakresem tego artykułu.

Aby dowiedzieć się, jak utworzyć maszynę wirtualną hostowaną w chmurze NSIS, możesz sięgnąć po jeden z tych artykułów:

Nr 4 Zainstalowane s3cmd

Musisz mieć zainstalowane s3cmd na swojej maszynie wirtualnej. Następujący artykuł zawiera informacje, jak to zrobić:

Nr 5 Zrozumienie działania pliku konfiguracyjnego s3cmd

s3cmd przechowuje swoją konfigurację w plikach konfiguracyjnych, jedno połączenie na plik. Musisz zdecydować, gdzie chcesz przechowywać dane połączenia dla repozytorium EODATA. Dowiedz się więcej tutaj:

Konfigurowanie s3cmd do dostępu do repozytorium EODATA

Przez cały artykuł będziemy używać pliku eodata-connection w katalogu /home/eouser jako przykładowego pliku konfiguracyjnego; dostosuj polecenia do swoich potrzeb.

Oto polecenie rozpoczynające proces konfiguracji s3cmd przy tych założeniach:

s3cmd -c /home/eouser/eodata-access --configure

Teraz zostaniesz poproszony o podanie informacji dotyczących połączenia z EODATA. Odpowiadaj zgodnie z poniższymi wskazówkami, ale zamiast ACCESS wpisz swój klucz access, a zamiast SECRET wpisz swój klucz secret (jeśli są inne). Jeśli nie znasz tych poświadczeń, postępuj zgodnie z Wymaganiem wstępnym nr 2. Po udzieleniu każdej z odpowiedzi naciśnij Enter.

Access Key: ACCESS
Secret Key: SECRET
Default Region [US]:
Use "s3.amazonaws.com" for S3 Endpoint and not modify it to the target Amazon S3.
S3 Endpoint [s3.amazonaws.com]: eodata.nsiscloud.polsa.gov.pl
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]: eodata.nsiscloud.polsa.gov.pl
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 [Yes]:
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:

Jak przejdziesz przez powyższe pytania, powinieneś zostać zapytany, czy chcesz przetestować dostęp:

Test access with supplied credentials? [Y/n]

Odpowiedz Y i naciśnij Enter.

Testowanie powinno zająć nie więcej niż kilka sekund. Po zakończeniu procesu powinno pojawić się potwierdzenie że połączenie działa i pytanie, czy zapisać ustawienia:

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]

Odpowiedz y i naciśnij Enter. Powinieneś otrzymać potwierdzenie podobne do tego:

Configuration saved to '/home/eouser/eodata-access'

Po wyświetleniu tego komunikatu powinieneś ponownie zobaczyć standardowy linuxowy wiersz polecenia.

Eksplorowanie repozytorium EODATA

Aby wyświetlić dostępne kontenery, wykonaj to polecenie:

s3cmd -c /home/eouser/eodata-access ls

Powinieneś zobaczyć kontenery o nazwach DIAS i EODATA. Oba służą do uzyskania dostępu do repozytorium EODATA, możesz wybrać dowolny z nich. W tym przykładzie użyjemy kontenera o nazwie EODATA.

2017-11-15 10:40  s3://DIAS
2017-11-15 10:40  s3://EODATA

Być może zobaczysz tu również inne kontery. Ten artykuł ich nie obejmuje.

Aby wyświetlić zawartość katalogu s3://EODATA, wykonaj to polecenie:

s3cmd -c /home/eouser/eodata-access ls s3://EODATA/

Powinieneś zobaczyć wynik podobny do tego:

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/

Możesz w ten sposób eksplorować różne ścieżki. Na przykład, aby wyświetlić zawartość ścieżki Sentinel-1, wykonaj to polecenie:

s3cmd -c /home/eouser/eodata-access ls s3://EODATA/Sentinel-1/

Wynik powinien wyglądać jak poniżej:

DIR  s3://EODATA/Sentinel-1/AUX/
DIR  s3://EODATA/Sentinel-1/SAR/

Kończenie ścieżek slashem / podczas używania s3cmd ls

Podczas listowania katalogów za pomocą poleceń s3cmd ls upewnij się, że zakończysz ścieżki slashem (/). Jeśli wykonasz to polecenie, aby wyświetlić zawartość katalogu CLMS:

s3cmd -c /home/eouser/eodata-access ls s3://EODATA/CLMS/

powinieneś uzyskać wynik zawierający to, czego szukasz:

                          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/

Jeśli jednak pominiesz slash na końcu:

s3cmd -c /home/eouser/eodata-access ls s3://EODATA/CLMS

twój wynik będzie zawierał tylko twoje zapytanie z dodanym slashem na końcu:

DIR  s3://EODATA/CLMS/

Listowanie zawartości produktu

Aby wylistować całą zawartość produktu S5P_OFFL_L1B_RA_BD8_20230220T011032_20230220T025202_27746_03_020100_20230220T043635, wykonaj to polecenie:

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/

Wynik powinien wyglądać jak poniżej:

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

Pobieranie plików

Przykład 1: Pobieranie pojedynczego pliku

Aby pobrać plik, użyj polecenia s3cmd get i podaj ścieżkę pliku. Na przykład, aby pobrać plik nazwany S5P_OPER_AUX_CTMANA_20230812T000000_20230813T000000_20230820T143624.cdl z produktu o nazwie S5P_OPER_AUX_CTMANA_20230812T000000_20230813T000000_20230820T143624, wykonaj to polecenie:

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

Proces pobierania powinien się rozpocząć. Plik powinien być zapisany w twoim bieżącym katalogu roboczym (ang. current working directory).

Po zakończeniu procesu możesz użyć polecenia ls, aby zobaczyć pobrany plik:

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

Przykład 2: Pobieranie pełnego produktu

Aby pobrać wszystkie pliki z produktu, użyj polecenia s3cmd get z parametrem -r, co pozwala na rekursywne pobieranie. Na przykład, aby pobrać wszystkie pliki z produktu S5P_OFFL_L1B_RA_BD8_20230220T011032_20230220T025202_27746_03_020100_20230220T043635, wykonaj to polecenie:

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

Proces pobierania powinien się rozpocząć. Pliki powinny być zapisane w twoim bieżącym katalogu roboczym.

Jeśli zakończysz katalog w powyższym poleceniu slashem, zawartość tego katalogu zostanie umieszczona w twoim bieżącym katalogu roboczym. Sam katalog nie zostanie pobrany. Dlatego, jeśli chcesz pobrać zarówno sam katalog, jak i jego zawartość, nie kończ ścieżki slashem.

Po zakończeniu procesu możesz użyć polecenia ls, aby zobaczyć pobrane pliki:

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

Użycie polecenia sync

s3cmd może również upewnić się, że katalog na twojej maszynie wirtualnej zawiera dokładnie tę samą zawartość co katalog w repozytorium EODATA. Jeśli lokalny katalog nie zawiera części lub całości plików z lokalizacji zdalnej, zostaną one pobrane.

Pobieranie produktu

Załóżmy, że chcesz pobrać produkt o nazwie S5P_RPRO_L1B_RA_BD1_20180430T001950_20180430T020120_02818_93_020100_20220417T162224 z repozytorium EODATA na lokalny dysk twardy i upewnić się, że nawet po naszych modyfikacjach pozostanie on taki sam.

Najpierw utwórz katalog dla tego produktu - w tym przykładzie zostanie on nazwany product-path

mkdir product-path

Aby pobrać do niego produkt za pomocą polecenia sync, wykonaj to polecenie:

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

Wyjaśnienie tego polecenia:

  • s3cmd to nazwa programu, którego używamy

  • -c /home/eouser/eodata-access to sposób przekazania pliku konfiguracyjnego

  • sync to nazwa polecenia, które wykonujemy

  • s3://EODATA/Sentinel-5P/TROPOMI/L1B_RA_BD1/2018/04/30/S5P_RPRO_L1B_RA_BD1_20180430T001950_20180430T020120_02818_93_020100_20220417T162224 to lokalizacja zdalna, z której pobieramy pliki, w tym przypadku jest to jeden z produktów

  • ./product-path to lokalna ścieżka, do której pobieramy plik

Wynik powinien zawierać informacje o postępie pobierania, np.:

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.

Po zakończeniu operacji można nawigować do katalogu o nazwie product-path za pomocą

cd product-path

Wylistuj jego zawartość za pomocą polecenia ls, aby zobaczyć pobrany katalog zawierający produkt:

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

Nawiguj do katalogu:

cd S5P_RPRO_L1B_RA_BD1_20180430T001950_20180430T020120_02818_93_020100_20220417T162224/

Wylistuj jego zawartość za pomocą ls:

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

Synchronizowanie brakujących plików

Aby dokładniej przetestować polecenie sync, możesz usunąć jeden z pobranych plików, a następnie go pobrać ponownie za pomocą tego polecenia.

Niech będzie to plik 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

Użycie parametru -i nie jest obowiązkowe. Sprawi ono, że zostaniesz zapytany, czy aby na pewno chcesz dany plik usunąć. Może to być użyteczne przy próbie uniknięcia błędu polegającego na przypadkowym usunięciu plików, których się nie chce usunąć.

Aby zatwierdzić, odpowiedz na pytanie o usunięcie przy użyciu y i naciśnij Enter.

Wróć do katalogu, z którego pierwotnie wykonano polecenie sync:

cd ../..

Wykonaj polecenie sync w taki sam sposób, jak poprzednio. Brakujący plik powinien zostać pobrany.

Jeśli użytkownik zmodyfikuje pobrane pliki, polecenie sync bez parametrów powinno przywrócić pliki, które mają swoje odpowiedniki w repozytorium EODATA. I odwrotnie: pliki dodane lokalnie, które nie pochodzą z chmury, pozostaną nietknięte.

Co można zrobić dalej?

s3cmd może być również używane do uzyskania dostępu do pamięci obiektowej z NSIS.

Dowiedz się więcej tutaj: Jak uzyskać dostęp do object storage z NSIS za pomocą s3cmd