cs:navody:object_storage:cesnet_s3:start

Toto je starší verze dokumentu!


Připojení a konfigurace CESNET s3

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]: AKIAI44QH8DHBEXAMPLE
AWS Secret Access Key [None]: je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY
Default region name [None]:
Default output format [None]: text

AWS Access Key ID - access key, který jste si vygenerovali
Secret Access Key - secret key, který jste si vygenerovali
Default region name - prefix pro servery, na které budete zasílat vaše požadavky, Zde ponecháme nevyplněné!
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.

aws configure --profile pepa_servis set s3.endpoint_url https://s3.cl1.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.cl1.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

V případě rozhodnutí se používání S3 verzování objektů je 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

Pro konfiguraci s3cmd potřebujete Access Key a Secret Key, který jste si vygenerovali. Po získání klíčů je vložte do konfiguračního souboru /home/user/.s3cfg.

[default]
host_base = https://s3.cl1.du.cesnet.cz
use_https = True
access_key = xxxxxxxxxxxxxxxxxxxxxx
secret_key = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
host_bucket = s3.cl1.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

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 

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/ 


Poslední úprava:: 23.06.2020 12:50