cs:navody:object_storage:cesnet_s3:start

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

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í.

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
bucket_location = cze
access_key = xxxxxxxxxxxxxxxxxxxxxx
secret_key = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
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

Alternativně lze konfigurační soubor získat použitím interaktivního průvodce:

s3cmd –configure

s3cmd –configure


$ s3cmd --configure

Enter new values or accept defaults in brackets with Enter.

Refer to user manual for detailed description of all options.

Access key and Secret key are your identifiers for Amazon S3. Leave them empty for using the env variables.

Access Key: xxxxxxxxxxxxxxxxxxxxxx
Secret Key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Default Region [US]: cze
S3 Endpoint [s3.amazonaws.com]:​ s3.cl1.du.cesnet.cz
DNS-style bucket+hostname:​port template for accessing a bucket [%(bucket)s.s3.amazonaws.com]: ​
Encryption password: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Path to GPG program [/​usr/​bin/​gpg]:​
Use HTTPS protocol [Yes]:
Test access with supplied credentials?​ [Y/n] y
Save settings? [y/N] y
Configuration saved to '​~/​.s3cfg'​


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: 21.10.2019 12:16