Arbutus : Clients pour le stockage objet
Pour l'information sur le stockage objet sur Arbutus, voir cette page wiki. Nous décrivons ici comment coinfigurer et utiliser les trois clients de stockage objet les mieux connus :
- s3cmd
- WinSCP
- awscli
Il faut noter que la solution de stockage objet sur Arbutus n'utilise pas l’approche S3 Virtual Hosting d’Amazon avec des buckets DNS, contrairement à s3cmd et WinSCP qui l’offrent par défaut.
s3cmd
Installation
Dépendant de votre distribution Linux, la commande s3cmd
peut être installée avec les commandes yum
(RHEL, CentOS) ou apt
(Debian, Ubuntu) suivantes :
$ sudo yum install s3cmd
$ sudo apt install s3cmd
Configuration
Pour configurer l’outil s3cmd
, lancez la commande
Effectuez les configurations suivantes avec les clés qui vous ont été fournies ou qui ont été créées avec la commande openstack ec2 credentials create
:
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 []: 20_DIGIT_ACCESS_KEY Secret Key []: 40_DIGIT_SECRET_KEY Default Region [US]: Use "s3.amazonaws.com" for S3 Endpoint and not modify it to the target Amazon S3. S3 Endpoint []: object-arbutus.cloud.computecanada.ca 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 []: object-arbutus.cloud.computecanada.ca Encryption password is used to protect your files from reading by unauthorized persons while in transfer to S3 Encryption password []: 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:
Creation de buckets
La prochaine étape est celle de la création des buckets. Les buckets contiennent des fichiers. Les noms des buckets doivent être uniques à travers la solution complète de stockage objet; il faut alors donner à chaque bucket un nom unique qui est différent de tous ceux créés par les autres utilisateurs; il est fort probable par exemple que les buckets s3://test/ et s3://data/ existent déjà. Vous pourriez choisir des noms significatifs comme s3://def-test-bucket1 ou s3://atlas_project_bucket. Les noms valides contiennent seulement des caractères majuscules ou minuscules, des chiffres, le point, le tiret et le trait de soulignement (soit A-Z, a-z, 0-9, ., -, et_ ).
Pour créer un bucket, lancez la commande mb
(pour make bucket)
$ s3cmd mb s3://BUCKET_NAME/
Pour connaître l'état d'un bucket, lancez
$ s3cmd info s3://BUCKET_NAME/
Le résultat sera semblable à ceci :
s3://BUCKET_NAME/ (bucket): Location: default Payer: BucketOwner Expiration Rule: none Policy: none CORS: none ACL: *anon*: READ ACL: USER: FULL_CONTROL URL: http://object-arbutus.cloud.computecanada.ca/BUCKET_NAME/
Téléversement de fichiers
Pour téléverser un fichier dans un bucket, lancez
$ s3cmd put --guess-mime-type FILE_NAME.dat s3://BUCKET_NAME/FILE_NAME.dat
Le mécanisme MIME (Multipurpose Internet Mail Extensions) peut gérer les fichiers selon leur type. Le paramètre --guess-mime-type
détermine le type de MIME par l’extension du nom du fichier. Le type MIME par défaut est binary/octet-stream
.
Supprimer un fichier
Pour supprimer un fichier dans un bucket, lancez
$ s3cmd rm s3://BUCKET_NAME/FILE_NAME.dat
Listes de contrôle d’accès et politiques
Il est possible d’associer des listes de contrôle d’accès (ACL) et des politiques à un bucket pour indiquer qui peut avoir accès à une ressource particulière de l'espace de stockage objet. Ces fonctionnalités sont très avancées. Voici deux exemples simples d’utilisation de ACL avec la commande setacl
.
$ s3cmd setacl --acl-public -r s3://BUCKET_NAME/
Par cette commande, le public peut avoir accès au bucket et, de manière récursive (-r), à chaque fichier dans le bucket. L’accès aux fichiers peut se faire avec des URL comme
https://object-arbutus.cloud.computecanada.ca/BUCKET_NAME/FILE_NAME.dat
Avec la prochaine commande, le bucket est accessible uniquement par le propriétaire.
$ s3cmd setacl --acl-private s3://BUCKET_NAME/
Pour d’autres exemples plus avancés, voir le site d’aide de s3cmd ou la page man de s3cmd(1).
WinSCP
Installation
Installez WinSCP à partir de https://winscp.net/.
Configuration
Sous New Session, faites les configurations suivantes%nbsp:
- File protocol: Amazon S3
- Host name: object-arbutus.cloud.computecanada.ca
- Port number: 443
- Access key ID: 20_DIGIT_ACCESS_KEY provided by the Arbutus team
Cliquez sur le bouton Save.
Cliquez ensuite sur le bouton Edit puis sur le bouton Advanced… Suivez Environment → S3 → Protocol options et dans le champ URL style, changez Virtual Host pour Path comme dans l’image ci-dessous.
Il est important d’entrer Path dans le champ URL style, autrement WinSCP ne fonctionnera pas et vous obtiendrez des messages d'erreur de nom d'hôte comme celui-ci
Utilisation
Cliquez sur le bouton Login et utilisez l’interface de WinSCP pour créer des buckets et y transférer des fichiers.
Listes de contrôle d'accès et politiques
Faites un clic croit sur un fichier pour faire afficher la fenêtre de configuration.
AWS CLI
Le client awscli
fonctionne aussi avec le service de stockage objet; il offre un meilleur support pour les grands fichiers (>5Go) en plus de la commande utile sync
command. Notez cependant que nous n'avons pas testé toutes les fonctionnalités
Installation
pip install awscli awscli-plugin-endpoint
Configuration de awscli
Générez l'ID de la clé d'accès et la clé secrète.
openstack ec2 credentials create
Modifiez ou créez ~/.aws/credentials
et ajoutez les renseignements qui viennent d'être générés.
[default] aws_access_key_id = <access_key> aws_secret_access_key = <secret_key>
Modifiez ~/.aws/config
et ajoutez la configuration suivante :
[plugins] endpoint = awscli_plugin_endpoint [profile default] s3 = endpoint_url = https://object-arbutus.cloud.computecanada.ca signature_version = s3v4 s3api = endpoint_url = https://object-arbutus.cloud.computecanada.ca
Utilisation de awscli
export AWS_PROFILE=default aws s3 ls <container-name> aws s3 sync local_directory s3://container-name/prefix
Pour plus d'exemples, voir https://docs.ovh.com/us/en/storage/getting_started_with_the_swift_S3_API/.