Object Storage Swift - Premiers pas avec l'API Swift S3

Base de connaissances

Object Storage Swift - Premiers pas avec l'API Swift S3


Icons/System/eye-open Created with Sketch. 351 vues 11.02.2025 Cloud / Object Storage S3

Objectif

Le middleware Swift s3api qui assure la compatibilité de l'API S3 a été activé sur toutes les régions du Public Cloud.

Ce guide vous aidera à accéder aux objets de Swift à l'aide d'un logiciel conçu pour interagir avec des points de terminaison compatibles S3.

Prérequis

En pratique

Définir les variables d'environnement OpenStack

user@host:~$ source <user_name>-openrc.sh
Please enter your OpenStack Password for project <project_name> as user <user_name>:

user@host:~$

Installer le client OpenStack si nécessaire

user@host:~$ pip install python-openstackclient

user@host:~$

Retrouvez la référence des commandes Openstack client ici.

Créer des informations d'identification EC2

Les jetons S3 sont différents, vous avez besoin de 2 paramètres (access et secret) pour générer un jeton S3. Ces informations d'identification seront stockées en toute sécurité dans Keystone. Pour la générer :

Générer le jeton S3 avec le client python-openstack

user@host:~$ openstack ec2 credentials create
+------------+----------------------------------------------------------------------------------------------------------------------------+
| Field      | Value                                                                                                                      |
+------------+----------------------------------------------------------------------------------------------------------------------------+
| access     | 5a4d8b8d88104123a862c527ede5a3d3                                                                                           |
| links      | {u'self': u'https://auth.cloud.ovh.net/v3/users/d74d05ff121b44bea9216495e7f0df61/credentials/OS-                     |
|            | EC2/5a4d8b8d88104123a862c527ede5a3d3'}                                                                                     |
| project_id | 20e124b71be141299e111ec26b1892fa                                                                                           |
| secret     | 925d5fcfcd9f436d8ffcb20548cc53a2                                                                                           |
| trust_id   | None                                                                                                                       |
| user_id    | d74d05ff121b44bea9216495e7f0df61                                                                                           |
+------------+----------------------------------------------------------------------------------------------------------------------------+

Générer le jeton S3 avec curl

. openrc.sh
TMP_FILE=$(mktemp)
OS_USER_ID=$(curl -s -D $TMP_FILE -X POST "${OS_AUTH_URL}auth/tokens" -H "Content-Type: application/json" -d '{"auth":{"identity":{"methods":["password"],"password":{"user":{"name":"'$OS_USERNAME'","domain":{"id":"default"},"password":"'$OS_PASSWORD'"}}},"scope":{"project":{ "id":"'$OS_TENANT_ID'","domain":{"id":"default"}}}}}' | jq -r '.["token"]["user"]["id"]')
OS_TOKEN=$(awk 'BEGIN{IGNORECASE=1} /^X-Subject-Token/ {print $2}' $TMP_FILE |  tr -d "\r")
curl -s -X POST -H "Content-Type: application/json" -H "X-Auth-Token: $OS_TOKEN" -d '{"tenant_id": "'$OS_TENANT_ID'"}' "${OS_AUTH_URL}users/${OS_USER_ID}/credentials/OS-EC2" | jq .
{
  "credential": {
    "user_id": "d74d05ff121b44bea9216495e7f0df61",
    "links": {
      "self": "https://auth.cloud.ovh.net/v3/users/d74d05ff121b44bea9216495e7f0df61/credentials/OS-EC2/660c89cfc4764271ba169941c7b2f310"
    },
    "tenant_id": "20e124b71be141299e111ec26b1892fa",
    "access": "660c89cfc4764271ba169941c7b2f310",
    "secret": "fc9e8eb545724accadcfabbd99207df1",
    "trust_id": null
  }
}

Configurer le client AWS

Vous pouvez soit utiliser la méthode CLI, soit créer manuellement les fichiers de configuration AWS. Installez le client AWS et configurez-le comme suit :

user@host:~$ pip install awscli
user@host:~$ sudo apt install awscli
user@host:~$ sudo yum install awscli
user@host:~$ aws configure

Suivez alors les étapes et saisissez vos informations d'identification AWS générées par les commandes ci-dessus.

user@host:~$ cat ~/.aws/credentials
[default]
aws_access_key_id = <access_key>
aws_secret_access_key = <secret_key>
user@host:~$ cat ~/.aws/config
[plugins]
endpoint = awscli_plugin_endpoint
[default]
region = <region>
s3 =
  endpoint_url = https://s3.<region>.cloud.ovh.net
  signature_version = s3v4
s3api =
 endpoint_url = https://s3.<region>.cloud.ovh.net

L'accès de type hébergé virtuel et l'accès de type chemin d'accès sont pris en charge dans toutes les régions, mais nous vous recommandons d'utiliser le style hébergé virtuel car l'accès de type chemin d'accès sera déprécié après le 30 septembre 2020.

Utiliser le client AWS

Utilisez la commande suivante pour obtenir la liste des Buckets (conteneurs) :

Si vous avez créé plusieurs profils, ajoutez --profile <profile> à la ligne de commande.

user@host:~$ aws s3 ls

Utilisez la commande suivante pour créer un nouveau bucket :

user@host:~$ aws s3 mb s3://bucket

Les buckets S3 ne peuvent être créés que sur la stratégie PCS (Stockage d'objets).

Le nom du conteneur doit respecter les règles suivantes

  • Le nom du conteneur peut comporter entre 3 et 63 caractères, et ne peut contenir que des caractères minuscules, des chiffres, des points et des tirets.
  • Chaque nom du conteneur doit commencer par une lettre minuscule ou un chiffre.
  • Le nom du conteneur ne peut pas contenir de traits de soulignement, se terminer par un tiret, avoir des points consécutifs ou utiliser des tirets adjacents à des points.
  • Le nom du conteneur ne peut pas être formaté comme une adresse IP (198.51.100.24).

Utilisez la commande suivante pour téléverser un fichier local sur Swift :

user@host:~$ aws s3 cp file.txt s3://bucket/file.txt

Utilisez la commande suivante pour télécharger un objet à partir de Swift :

user@host:~$ aws s3 cp s3://bucket/file.txt file.txt

Utilisez la commande suivante pour supprimer un objet Swift :

user@host:~$ aws s3 rm s3://bucket/file.txt

Utilisez la commande suivante pour supprimer un bucket:

user@host:~$ aws s3 rb s3://bucket

Aller plus loin

Échangez avec notre communauté d'utilisateurs.

Articles associés