cs:navody:object_storage:cesnet_s3:start

Připojení a konfigurace CESNET s3

Návody se odkazují na access_key, secret_key a URL k S3 endpointu. Všechny údaje jste měli dostat během tvorby vašeho S3 účtu. URL adresa S3 endpointu je ve tvaru s3.clX.du.cesnet.cz, kde X je přirozené číslo 1 a větší.

Linux klient AWS CLI

Klient AWS CLI je standardní nástroj podporující práci přes s3 rozhraní. Klient je napsaný v pythonu, je tedy nezbytné mít nainstalovaný python alespoň ve verzi 3.3+. Dle oficiální dokumentace je sice podporován i python 2.6.5+, nicméně můžete narazit na problémy s kompatibilitou s ohledem na námi provozovanou verzi Cephu.

Pokud provozujete CentOS 7, pravděpodobně budete řešit problém s verzí pythonu, která je ve výchozím stavu 2.7.5. V takovém případě doporučujeme buď upgrade na CentOS 8, kde je již implementovan python 3+, případně použít SCL (Software Collection environment).

Instalace AWS CLI a jeho konfigurace

Nejprve nainstalujeme AWS CLI klienta pomoci pip, kde --upgrade provede upgrade všech již nainstalovaných součástí; --user použije podadresář aktuálního uživatele, pod kterým spouštíte pip, aby nedošlo k modifikaci systémových knihoven.

$ pip3.6 install awscli --upgrade --user

Dále provedeme upgrade na nejnovější verzi AWS CLI

$ aws --version
aws-cli/1.16.239 Python/3.6.3 Linux/3.10.0-957.27.2.el7.x86_64 botocore/1.12.229
$ pip3.6 install --upgrade --user awscli
Pokud potřebujete nainstalovat AWS CLI ve virtuálním prostředí můžete využít tento návod.
Pro konfiguraci AWS CLI doporučujeme použít volbu --profile, která vám umožní definovat více uživatelských profilů, například pro vás a servisní identitu. Můžete však použít rovněž výchozí nastavení (bez volby --profile). Všechny příkazy pak budou shodné, jen nebudou obsahovat volbu --profile a použije se výchozí nastavení.

Dále provedeme konfiguraci AWS CLI. Následující přiklady využívají konfiguraci s použitím volby --profile.

$ aws configure --profile pepa_servis
AWS Access Key ID [None]: xxxxxxxxxxxxxxxxxxxxxx
AWS Secret Access Key [None]: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Default region name [None]:
Default output format [None]: text

AWS Access Key ID - access key, který jste obdrželi během tvorby vašeho S3 účtu
Secret Access Key - secret key, který jste obdrželi během tvorby vašeho S3 účtu
Default region name - prefix pro servery, na které budete zasílat vaše požadavky, Zde ponecháme nevyplněné! V případě požadavku některých SW, kupř. Veeam, zde vyplňte jako region storage
Default output format - výstupní formát dat (json, text, table)

Pro správnou funkčnost je nezbytné překonfigurovat endpoint-url na servery CESNETu. K tomu budeme potřebovat nainstalovat nástroj awscli-plugin-endpoint, viz návod níže.

Instalace awscli-plugin-endpointu

Nejdříve provedeme instalaci pomocí pip.

pip3.6 install awscli-plugin-endpoint --user

Případně můžete nainstalovat nejnovější verzi z Github repozitáře

pip3.6 install git+https://github.com/wbingli/awscli-plugin-endpoint.git --user

Pro použití nainstalovaného pluginu jej musíme nejdříve zapnout.

aws configure set plugins.endpoint awscli_plugin_endpoint

Následně pomocí pluginu přidáme adresu CESNET s3 endpointu pro úložistě, které vám bylo během tvorby S3 účtu přiděleno:

aws configure --profile pepa_servis set s3.endpoint_url https://s3.clX.du.cesnet.cz

Výše uvedené příkazy by měly provést změny ve vašem configu, viz níže.

[user@distro ~]$ cat .aws/config 

[profile pepa_servis]
output = text
s3 =
    endpoint_url = https://s3.clX.du.cesnet.cz
[plugins]
endpoint = awscli_plugin_endpoint

Nyní můžeme ověřit funkčnost připojení a zkusit si například vylistovat existující buckety.

$ aws s3 --profile pepa_servis ls
2019-09-11 17:06:53 test-win
2019-09-11 14:45:45 large-files
2019-09-11 14:48:21 small-files

Ovládání AWS CLI - high-level (s3)

Pro zobrazení plné nápovědy (dostupných příkazů) můžeme využít help

$ aws s3 help

Práce s buckety

Práce s buckety

Jméno bucketu musí být unikátní a mělo by obsahovat pouze malá a velká písmena, čísla a pomlčky a tečky. Název bucketu musí začínat pouze písmenem nebo číslem a nesmí obsahovat tečky vedle pomlček nebo více teček.

Výroba bucketu

$ aws s3 --profile pepa_servis mb s3://test1

Vylistování bucketů

$ aws s3 --profile pepa_servis ls
2019-09-18 13:30:17 test1

Odstranění bucketu

aws s3 --profile pepa_servis rb s3://test1


Práce se soubory a adresáři

Práce se soubory a adresáři

Soubory
Upload souboru

$ aws s3 --profile pepa_servis cp file_1.tar s3://test1
upload: ./file_1.tar to s3://test1/file_1.tar

Download souboru

$ aws s3 --profile pepa_servis cp s3://test1/file_1.tar downloads/
download: s3://test1/file1.tar to downloads/file1.tar

Smazání souboru

$ aws s3 --profile pepa_servis rm s3://test1/file_1.tar 
delete: s3://test1/file1.tar

Adresáře
Upload adresáře

Pokud uvedete na konci zdrojového adresáře lomítko „/“ příkaz se vztahuje pouze k obsahu zdrojového adresáře. Bez lomítka se příkaz vztahuje i na adresář samotný.
$ aws s3 --profile pepa_servis cp my_dir s3://test1/test_dir1 --recursive

Download adresáře

$ aws s3 --profile pepa_servis cp s3://test1/test_dir1 downloads/ --recursive

Smazání adresáře

$ aws s3 --profile pepa_servis rm s3://test1/test_dir1 --recursive

Synchronizace adresářů
Synchronizace adresáře na úložiště pomocí s3

$ aws s3 --profile pepa_servis sync downloads s3://test1/my_sync/

Synchronizace adresáře z úložiště pomocí s3 na lokální PC

$ aws s3 --profile pepa_servis sync s3://test1/my_sync/ ./restored/


Ovládání AWS CLI - api-level (s3api)

$ aws s3api help

Amazon api-level S3

Rozšiřující funkce S3

- S3 verzování objektů je návod zde.

- Sdílení S3 objektu pomocí (presigned) adresy URL návod zde.



Linux klient s3cmd

S3cmd je bezplatný nástroj příkazového řádku a klient pro nahrávání, načítání a správu dat v s3 cloudových úložišťích. S3cmd je psán v Pythonu. Je to open source projekt dostupný pod GNU Public License v2 (GPLv2) a je zdarma pro komerční i soukromé použití.

Jako preferovaný nástroj doporučujeme spíše AWS CLI.
U s3cmd jsme v některých případech zaznamenali problémy. Kupříkladu jména backetů nesmí začínat číslem a velká písmena.

Instalace s3cmd

s3cmd je k dispozici ve výchozích repozitářích rpm pro systémy CentOS, RHEL a Ubuntu. Nainstalujte jej pomocí jednoduchého spuštění následujících příkazů ve vašem systému.

Na CentOS/RHEL:

$ sudo yum install s3cmd 

Na Ubuntu/Debian:

$ sudo apt install s3cmd 

Konfigurace s3cmd

Do konfiguračního souboru /home/user/.s3cfg vložte následující.

[default]
host_base = https://s3.clX.du.cesnet.cz
use_https = True
access_key = xxxxxxxxxxxxxxxxxxxxxx
secret_key = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
host_bucket = s3.clX.du.cesnet.cz
gpg_command = /​usr/​bin/​gpg
gpg_decrypt = %(gpg_command)s -d --verbose --no-use-agent --batch --yes --passphrase-fd %(passphrase_fd)s -o %(output_file)s %(input_file)s
gpg_encrypt = %(gpg_command)s -c --verbose --no-use-agent --batch --yes --passphrase-fd %(passphrase_fd)s -o %(output_file)s %(input_file)s
gpg_passphrase = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Access Key a Secret Key jste obdrželi během tvorby vašeho S3 účtu.

Použití s3cmd příkazů

s3 příkazy podporují běžné operace s buckety, například vytváření, listování a mazání.

Práce s buckety

Práce s buckety

Vylistování všech s3 bucketů

$ s3cmd ls 
Jméno bucketu musí být unikátní a mělo by obsahovat pouze malá a velká písmena, čísla a pomlčky a tečky. Název bucketu musí začínat pouze písmenem nebo číslem a nesmí obsahovat tečky vedle pomlček nebo více teček.

Výroba nového s3 bucketu

$ s3cmd mb s3://newbucket 

Odstranění s3 bucketu

$ s3cmd rb s3://newbucket 

Bucket jde odstranit pouze prázdný!


Práce se soubory a adresáři

Práce se soubory a adresáři

Vylistování obsahu s3 bucketu

$ s3cmd ls s3://newbucket/ 

Nahrávání dat do s3 bucketu

Upload souborů

$ s3cmd put file.txt s3://newbucket/ 

Upload zašifrovaných souborů

$ s3cmd put -e file.txt s3://​newbucket/​

Upload složek

$ s3cmd put -r directory s3://newbucket/ 

Ujistěte se, že nepřidáváte koncové lomítko v adresáři (např .: directory/), jinak nahraje pouze obsah adresáře.

Stahování souboru z s3 bucketu

$ s3cmd get s3://newbucket/file.txt 

Odstranění dat z s3 bucketu

$ s3cmd del s3://newbucket/file.txt 
$ s3cmd del s3://newbucket/directory 

Synchronizování dat do s3 bucketu

$ s3cmd sync /local/path/ s3://newbucket/backup/ 

Synchronizování dat z s3 bucketu

$ s3cmd sync s3://newbucket/backup/ ~/restore/ 


rclone - synchronizace dat

Nástroj rclone je vhodný pro synchronizaci dat, migrování souborů mezi více S3 endpointy, a to i různých poskytovatelů atd. Zachovává časová razítka a kontroluje kontrolní součty. Je napsán v programovacím jazyku Go a je dostupný pro GNU/Linux, Windows, macOS, BSD a Solaris. V tomto návodu budeme diskutovat použití primárně pro GNU/Linux systémy.

Po nainstalování je třeba do cesty „~/.config/rclone/rclone.conf“ umístit následující konfigurační soubor. V něm je potřeba nahradit clX za správně označení clusteru, který u nás používáte a dále vyplnit access_key_id a secret_access_key, což jsou přístupové údaje, jež vám byly poslány šifrovaným kanálem během vytváření účtu.

[s3clXcesnet]
type = s3
provider = Ceph
env_auth = false
access_key_id = xxxxxxxxxxxxxxxxxxxxxx
secret_access_key = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
region =
endpoint = https://s3.clX.du.cesnet.cz
location_constraint =
acl =
server_side_encryption =
storage_class =

V konfiguraci můžete mít více endpointu (název uzavřený v hranatých závorkách, v ukázce [s3clXcesnet]), na které se budete následně odkazovat.

Pro prosté vypsání přístupných bucketů na daném endpointu použijeme následující příkaz.

rclone lsd s3clXcesnet:

Pokud již známe hledaný bucket můžeme jít přímo.

rclone lsd s3clXcesnet:/BUCKET

Pokud chceme nahrát soubor můžeme použít copy.

rclone copy soubor s3clXcesnet:/BUCKET

Pro určité případy užití se hodí více sync než copy. Copy dělá prosté kopírování, kdežto sync provádí synchronizaci, takže přemaže cíl soubory ze zdrojevé cesty! Na to pozor, chová se to tedy podobně jako rsync s přepínačem –delete.

Pokud si nejste jisti výsledným stavem je dobré zavolat nejdříve příkaz s volbou –dry-run, a až pak ho zavolat bez –dry-run.

Níže je ukázka použití sync, kde je vidět přepsání souborů na cíly soubory ze zdroje.

rclone lsd s3clXcesnet:/BUCKET
    452 soubor1

root@karotka.du ~ # ls -l adresar/
total 8
-rw-r--r-- 1 root root  6 May 25 14:30 soubor123
-rw-r--r-- 1 root root 13 May 25 14:31 soubor1234

rclone sync ./adresar s3clXcesnet:/BUCKET

rclone lsd s3clXcesnet:/BUCKET
    6 soubor123
   13 soubor1234 

s5cmd pro velmi rychlé přenosy

Pokud disponujete připojením rychlejším než 1-2Gbps a chcete přenos optimalizovat pro dosažení maximální rychlosti, použijte nástroj s5cmd. Nástroj je dostupný ve formě předkompilovaných binárek pro Linux a macOS. Dále je dostupný ve formě kódu nebo docker image. Výběr záleží na vašem systému a požadovaném použiti. Kompletní přehled najdete na githubu projektu.

Do .aws/credentials přidejte následující řádky.

[default]
aws_access_key_id = xxxxxxxxxxxxxxxxxxxxxx
aws_secret_access_key = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
max_concurrent_requests = 2000
max_queue_size = 20000
multipart_threshold = 128MB
multipart_chunksize = 32MB

Access Key a Secret Key jste obdrželi během tvorby vašeho S3 účtu.

Pro vypsání všech dostupných bucketu použijeme:

s5cmd --endpoint-url=https://s3.clX.du.cesnet.cz ls

Jednoduché nahrání souboru:

s5cmd --endpoint-url=https://s3.clX.du.cesnet.cz cp myfile s3://bucket

Pro dosažení výšších rychlostí u větších datových objemů souborů je třeba upravit parametry, konkrétně zapojit více CPU jader a workerů, například:

s5cmd  --endpoint-url=https://s3.clX.du.cesnet.cz cp -c=8 -p=5000 /adresar/velky_soubor s3://bucket

VEEAM 10

Návod na připojení S3 úložiště přes sw VEEAM.

Poslední úprava: 26.05.2021 21:27