Comment définir une politique d’expiration sur les compartiments DigitalOcean Spaces – CloudSavvy IT


Logo DigitalOcean

L’interface Web DigitalOcean Spaces ne permet pas de définir des politiques de cycle de vie des buckets. Voici comment appliquer les paramètres d’expiration qui suppriment automatiquement les fichiers après une période définie. Cela fait de Spaces un emplacement plus approprié pour les sauvegardes et les fichiers journaux en rotation.

Bien que cette fonctionnalité ne soit pas dans l’interface utilisateur de DigitalOcean, elle est prise en charge par le backend Spaces. Spaces est compatible avec les API Amazon S3 afin que les clients de ligne de commande puissent définir des politiques de cycle de vie basées sur S3. Les étapes détaillées ci-dessous doivent également fonctionner avec d’autres fournisseurs de stockage d’objets qui implémentent des API S3.

Commencer

Vous aurez besoin de l’AWS CLI installée pour suivre ce didacticiel. Une fois installé, la première tâche consiste à fournir des informations d’identification afin que la CLI puisse accéder à votre compte DigitalOcean.

Dirigez-vous vers le Panneau de configuration DigitalOcean dans votre navigateur. Cliquez sur le lien « API » en bas de la barre latérale bleue à gauche de votre écran. Cliquez ensuite sur le bouton « Générer une nouvelle clé » à droite de la rubrique « Clés d’accès aux espaces ».

Donnez un nom à votre nouvelle clé, puis cliquez sur la coche pour terminer le processus. Votre clé et son secret correspondant s’afficheront. Prenez note de ces valeurs car il est impossible de récupérer la partie secrète après avoir quitté l’écran.

Retournez à votre terminal et exécutez aws configure. On vous demandera votre clé d’accès et votre secret. Suivez les invites interactives pour fournir les valeurs que vous avez générées dans l’interface Web de DigitalOcean.

Malheureusement, ce n’est toujours pas la fin de la configuration de la CLI. Une limitation importante du client S3 officiel est son incapacité à enregistrer des URL de point de terminaison personnalisées avec vos informations d’identification. Cela signifie que vous devez spécifier explicitement l’URL de l’API DigitalOcean avec chaque commande que vous exécutez :

aws s3 ls --endpoint=https://nyc3.digitaloceanspaces.com --bucket my-bucket

La commande ci-dessus affichera les objets dans le my-bucket compartiment de votre compte Spaces. Si vous avez omis le --endpoint flag, la CLI S3 supposerait que vous essayez de vous connecter à un compte AWS. L’URL du point de terminaison doit correspondre à la région du centre de données DigitalOcean dans laquelle vous avez créé votre espace – remplacez le nyc3 sous-domaine pour la région que vous utilisez.

Création de votre politique

Les stratégies de cycle de vie des compartiments sont définies sous forme de fichiers JSON qui décrivent les règles que vous souhaitez appliquer. Créez un nouveau fichier à l’aide de votre éditeur de texte préféré et ajoutez le contenu suivant :


    "Rules": [
        
            "ID": "Prune old files",
            "Status": "Enabled",
            "Prefix": "",
            "Expiration": 
                "Days": 30
            
        
    ]

Le JSON est un déclaratif représentation de la politique à appliquer. Les attributs de la stratégie et son état actuel sont tous deux spécifiés dans le fichier.

Cet exemple supprimera les fichiers 30 jours après leur téléchargement. Réglage Status à Enabled active la stratégie, tandis qu’un vide Prefix l’applique à chaque élément du seau. Vous pouvez utiliser le Prefix pour supprimer de manière sélective uniquement certains objets, tels que ceux du temp/ sous-répertoire.

Application de la politique

Ensuite, vous devez utiliser l’AWS CLI pour appliquer votre stratégie à votre compartiment :

aws s3api put-bucket-lifecycle-configuration 
    --bucket my-bucket
    --endpoint https://nyc3.digitaloceanspaces.com
    --lifecycle-configuration file://my-policy.json

Remplacer my-bucket avec le nom du bucket avec lequel vous souhaitez utiliser vos règles d’expiration.

La CLI lira votre fichier JSON de stratégie et le joindra au compartiment. Tant que le Status est Enabled, les règles du cycle de vie s’appliqueront immédiatement. Vous commencerez à voir les objets nouvellement importés quitter votre compartiment lorsqu’ils dépassent le seuil d’expiration.

Vous pouvez vérifier que votre stratégie a été appliquée en la relisant à partir de la CLI :

aws s3api get-bucket-lifecycle-configuration 
    --bucket my-bucket
    --endpoint https://nyc3.digitaloceanspaces.com

Cela devrait vous montrer le JSON que vous avez soumis.

Utilisation de plusieurs règles

Vous pouvez inclure plusieurs éléments dans votre Rules Tableau JSON. Cela vous permet d’appliquer des politiques d’expiration uniques à différents groupes d’objets, à l’aide de la Prefix champ:


    "Rules": [
        
            "ID": "Prune Invoices",
            "Status": "invoice",
            "Prefix": "I",
            "Expiration": 
                "Days": 90
            
        ,
        
            "ID": "Prune Quotations",
            "Status": "Enabled",
            "Prefix": "Q",
            "Expiration": 
                "Days": 30
            
        
    ]

Cette politique supprimerait les devis après 30 jours tout en laissant les factures en vigueur pendant 90 jours. Chaque compartiment prend en charge jusqu’à 100 règles de cycle de vie individuelles.

Abandon des échecs de téléchargement

Un autre rôle des politiques de cycle de vie est le nettoyage après l’échec des téléchargements en plusieurs parties. Lorsque vous ajoutez des fichiers volumineux via les API S3, ils sont divisés en sections diffusables pour améliorer les performances et la résilience aux interruptions de réseau.

Vous pouvez vous retrouver avec des morceaux partiels dans votre compartiment si une partie de téléchargement échoue. Ajouter le AbortIncompleteMultipartUpload à une politique de cycle de vie pour supprimer ces fragments redondants.


    "Rules": [
        
            "ID": "AbortIncompleteMultipartUpload",
            "Prefix": "",
            "Status": "Enabled",
            "AbortIncompleteMultipartUpload": 
                "DaysAfterInitiation": 1
            
        
    ]

Cette stratégie nettoie les morceaux de téléchargement incomplets un jour après leur démarrage, libérant potentiellement de l’espace de stockage. Lorsque des morceaux sont supprimés, vous ne pourrez plus reprendre le téléchargement d’origine – les clients devront le redémarrer depuis le début.

Sommaire

DigitalOcean Spaces prend en charge les politiques de cycle de vie S3, mais vous devez les appliquer à l’aide de l’API. Une fois configurés, vos téléchargements seront supprimés automatiquement après une période de temps définie, vous donnant l’assurance que les anciens fichiers ne gaspillent pas d’espace de stockage et n’augmentent pas votre facture.

Bien que Spaces implémente des politiques d’expiration de la même manière que S3, d’autres formes de politique de cycle de vie ne sont pas disponibles sur la plate-forme de DigitalOcean. Un autre élément clé de l’ensemble de fonctionnalités de S3 est la possibilité de transférer des objets entre les classes de stockage, comme une migration automatique vers le stockage d’archivage après 30 jours. La facturation des espaces est beaucoup plus simple avec un seul plan disponible, de sorte que ces politiques n’auront pas d’effet sur les compartiments DigitalOcean.



Vous pouvez lire l’article original (en Angais) sur le blogwww.cloudsavvyit.com