Stockage de Configuration

Le stockage de configuration (Storage) est un système de stockage clé-valeur intégré à FIRERPA, qui est persistant. Même si FIRERPA ou l'appareil redémarre, vous pouvez toujours lire ces variables au prochain démarrage. Ce Stockage vous permet de stocker des informations de manière persistante sur l'appareil pour qu'elles soient lues par différents processus clients, afin de partager la configuration de l'appareil comme les comptes de connexion ou d'autres informations indépendantes. Vous pouvez même stocker des configurations chiffrées sur la machine.

Attention

La capacité totale du Stockage intégré est de 128 Mo. Veuillez ne pas l'utiliser pour stocker de grandes quantités de données. Il ne prend pas en charge le listage des noms de conteneurs ou de clés existants dans le stockage. Vous devez connaître le nom complet du conteneur et de la clé pour pouvoir lire une valeur, sinon elle sera inaccessible à jamais.

Obtenir le Stockage

Vous pouvez obtenir un objet de stockage (Storage) avec le code suivant, ce qui vous permettra d'effectuer les opérations ultérieures.

storage = d.stub("Storage")

Vider le Stockage

Vous pouvez utiliser le code suivant pour effacer toutes les informations du Stockage, y compris les conteneurs. Vous pouvez considérer cela comme un formatage du Stockage.

storage.clear()

Obtenir un Conteneur

Avec le code suivant, vous pouvez obtenir un objet conteneur de stockage clé-valeur. Le stockage est le système global, et un conteneur est un "bucket" à l'intérieur de ce stockage. Toutes vos opérations de lecture et d'écriture ultérieures s'effectueront sur ce conteneur.

container = storage.use("container_name")

Obtenir un Conteneur Chiffré

Si vous avez besoin de stocker des valeurs de manière sécurisée, par exemple, lorsque l'appareil peut être utilisé par d'autres personnes et que vous ne voulez pas que vos configurations stockées soient lues, vous pouvez utiliser un conteneur chiffré. Contrairement à un conteneur simple, un conteneur chiffré stockera vos paires clé-valeur de manière chiffrée. D'autres personnes auront besoin d'un mot de passe ou d'une autre forme de vérification pour les lire correctement.

Notre bibliothèque est fournie avec un chiffreur/déchiffreur, FernetCryptor. Vous pouvez également implémenter votre propre algorithme de chiffrement en suivant l'exemple de FernetCryptor. Il vous suffit d'implémenter les méthodes encrypt et decrypt.

from lamda.client import FernetCryptor
container = storage.use("container_name", cryptor=FernetCryptor,
                                          key="this_is_password")

Supprimer un Conteneur

Vous pouvez utiliser le code suivant pour supprimer toutes les paires clé-valeur stockées dans le conteneur nommé container_name. Cette opération équivaut à supprimer le conteneur.

storage.remove("container_name")

Écrire une paire clé-valeur dans un conteneur

Vous pouvez utiliser l'appel d'exemple suivant pour définir la valeur de key_name à "value". La valeur peut être n'importe quelle variable sérialisable par msgpack.

container.set("key_name", [1, 2, 3])
container.set("key_name", {"john": "due"})
container.set("key_name", b"value")
container.set("key_name", "value")

Lire une paire clé-valeur d'un conteneur

Vous pouvez utiliser la méthode suivante pour obtenir la valeur de key_name. Si elle n'existe pas, la méthode retourne None.

container.get("key_name")

Obtenir la durée de vie

Avec l'appel suivant, vous pouvez obtenir la durée de vie de key_name. -2 signifie que la clé n'existe pas, -1 signifie qu'elle n'expire jamais, et tout autre entier positif représente le nombre de secondes de vie restantes pour cette clé.

container.ttl("key_name")

Définir la durée de vie

Vous pouvez utiliser l'appel suivant pour définir la durée de vie d'une clé-valeur. Par exemple, l'appel ci-dessous définira la clé-valeur et la fera supprimer automatiquement après 10 secondes.

container.setex("key_name", "value", 10)

Ou, si vous avez déjà défini cette clé et que vous souhaitez maintenant lui attribuer une durée de vie, vous pouvez procéder comme suit. Après 60 secondes, key_name sera automatiquement supprimé.

container.expire("key_name", 60)

Écriture Conditionnelle

Vous pouvez utiliser l'appel suivant pour définir la clé-valeur uniquement si key_name n'existe pas. Si la clé existe déjà, aucune opération ne sera effectuée.

container.setnx("key_name", "value")

Vérifier l'existence

Vous pouvez utiliser l'appel suivant pour vérifier si key_name existe dans le conteneur.

container.exists("key_name")

Supprimer une paire clé-valeur d'un conteneur

Vous pouvez utiliser l'appel suivant pour supprimer key_name et sa valeur du conteneur.

container.delete("key_name")