Comment puis-je vérifier une règle de configuration du cycle de vie Amazon S3 pour nettoyer les chargements partitionnés incomplets ?

Date de la dernière mise à jour : 17/10/2019

J'ai défini une règle de configuration du cycle de vie Amazon Simple Storage Service (Amazon S3) pour nettoyer les chargements partitionnés incomplets. Comment puis-je m'assurer que la règle fonctionne ?

Remarque : lorsque vous utilisez l'interface de ligne de commande AWS (CLI AWS) pour définir la règle, elle est appelée AbortIncompleteMultipartUpload.  

Brève description

Procédez de l'une des manières suivantes pour vérifier la règle de configuration du cycle de vie :

  • Interrogez les journaux d'accès au serveur.
  • Testez la règle en chargeant certaines parties d'un chargement partitionné à l'aide de l'interface de ligne de commande AWS.

Résolution

Interrogation des journaux d'accès au serveur

Pour interroger les journaux d'accès au serveur, la journalisation des accès au serveur doit être activée sur votre compartiment avant que la règle de cycle de vie ne soit configurée de manière à s'exécuter. Une fois que les journaux sont disponibles, vous pouvez les consulter pour vérifier si la règle a nettoyé un chargement partitionné incomplet. Pour plus d'informations sur les opérations consignées dans les journaux d'accès au serveur, consultez la section Cycle de vie et journalisation.

Tester la règle en chargeant certaines parties d'un chargement partitionné à l'aide de l'interface de ligne de commande AWS

Si la journalisation des accès au serveur n'est pas activée, vous pouvez tester la règle en exécutant un chargement partitionné incomplet :

Remarque : l'exemple suivant utilise l'interface de ligne de commande AWS pour effectuer un chargement partitionné. Pour effectuer un chargement partitionné à l'aide d'un kit SDK AWS, consultez la section Chargement d'objets à l'aide de l'API de chargement partitionné.

1.    Fractionnez le fichier que vous souhaitez charger en plusieurs parties. Par exemple, si vous utilisez un système d'exploitation Linux, vous pouvez exécuter la commande split comme suit :

split /path/to/filetoupload

2.    Exécutez la commande create-multipart-upload à l'aide de l'interface de ligne de commande AWS pour lancer un chargement partitionné, comme suit :

aws s3api create-multipart-upload --bucket awsexamplebucket --key large_test_file

3.    La commande renvoie une sortie qui contient l'UploadID (ID de chargement). Copiez la valeur UploadID comme référence pour les étapes ultérieures. La sortie de commande ressemble à ce qui suit :

{
    "AbortDate": "Mon, 03 Jun 2019 00:00:00 GMT",
    "AbortRuleId": "multipartcleanup",
    "Bucket": "awsexamplebucket",
    "Key": "objectname",
    "UploadId": "exampleTUVGeKAk3Ob7qMynRKqe3ROcavPRwg92eA6JPD4ybIGRxJx9R0VbgkrnOVphZFK59KCYJAO1PXlrBSW7vcH7ANHZwTTf0ovqe6XPYHwsSp7eTRnXB1qjx40Tk"
}

4.    Exécutez la commande upload-part pour charger la première partie du fichier comme suit :

Important : veillez à remplacer toutes les valeurs par les valeurs de votre compartiment, fichier et chargement partitionné.

aws s3api upload-part --bucket awsexamplebucket --key large_test_file --part-number 1 --body large_test_file.001 --upload-id exampleTUVGeKAk3Ob7qMynRKqe3ROcavPRwg92eA6JPD4ybIGRxJx9R0VbgkrnOVphZFK59KCYJAO1PXlrBSW7vcH7ANHZwTTf0ovqe6XPYHwsSp7eTRnXB1qjx40Tk

5.    La commande renvoie une sortie qui contient une valeur ETag pour la partie du fichier que vous avez chargé. Copiez la valeur ETag comme référence pour les étapes ultérieures. La sortie de commande ressemble à ce qui suit :

{
    "ETag": "\"example8be9a0268ebfb8b115d4c1fd3\""
}

6.    Répétez les étapes 3 et 4 pour certaines parties du fichier. Pour ce test, ne chargez pas toutes les parties du fichier avant de terminer.

Remarque : assurez-vous d'augmenter le nombre de parties chaque fois que vous chargez une nouvelle partie.

7.    Pour ce test, ne terminez pas et n'abandonnez pas l'opération de chargement partitionné. Notez cette fois-ci les parties qui ont été chargées en exécutant la commande list-parts comme suit :

aws s3api list-parts --bucket awsexamplebucket --key large_test_file --upload-id exampleTUVGeKAk3Ob7qMynRKqe3ROcavPRwg92eA6JPD4ybIGRxJx9R0VbgkrnOVphZFK59KCYJAO1PXlrBSW7vcH7ANHZwTTf0ovqe6XPYHwsSp7eTRnXB1qjx40Tk

8.    La commande renvoie une liste des parties, similaire à ce qui suit :

{
    "Parts": [
        {
            "PartNumber": 1,
            "LastModified": "2019-06-01T18:17:39.000Z",
            "ETag": "\"example8be9a0268ebfb8b115d4c1fd3\"",
            "Size": 162641
        },
        {
            "PartNumber": 2,
            "LastModified": "2019-06-01T18:18:19.000Z",
            "ETag": "\"example246e31ab807da6f62802c1ae8\"",
            "Size": 3961
        }
    ],
    "Initiator": {
        "ID": "arn:aws:iam::111122223333:user/jane",
        "DisplayName": "jane"
    },
    "Owner": {
        "DisplayName": "bucketowner",
        "ID": "examplea2395fe1985ffabfe0c17d3522e5bc7fa1a2d048f8fc764d7709da80d"
    },
    "StorageClass": "STANDARD"
}

9.    Ensuite, notez les chargements partitionnés en cours pour votre compartiment en exécutant la commande list-multipart-uploads comme suit :

aws s3api list-multipart-uploads --bucket awsexamplebucket

10.    La commande renvoie une liste des chargements partitionnés en cours, similaire à ce qui suit :

{
    "Uploads": [
        {
            "UploadId": "exampleTUVGeKAk3Ob7qMynRKqe3ROcavPRwg92eA6JPD4ybIGRxJx9R0VbgkrnOVphZFK59KCYJAO1PXlrBSW7vcH7ANHZwTTf0ovqe6XPYHwsSp7eTRnXB1qjx40Tk",
            "Key": "large_test_file",
            "Initiated": "2019-06-01T17:08:33.000Z",
            "StorageClass": "STANDARD",
            "Owner": {
                "DisplayName": "bucketowner",
                "ID": "examplea2395fe1985ffabfe0c17d3522e5bc7fa1a2d048f8fc764d7709da80d"
            },
            "Initiator": {
                "ID": "arn:aws:iam::111122223333:user/jane",
                "DisplayName": "jane"
            }
        }
    ]
}

11.    Lorsque vous avez défini votre règle de configuration du cycle de vie, vous avez spécifié le nombre de jours après le début d'un chargement partitionné un nettoyage doit avoir lieu. Attendez donc le nombre de jours définis.

12.    Exécutez à nouveau la commande list-parts pour voir si les parties du chargement partitionné incomplet ont été supprimées. Une fois que les parties ont été supprimées par la règle, la commande renvoie cette réponse :

« An error occurred (NoSuchUpload) when calling the ListParts operation: The specified upload does not exist. The upload ID may be invalid, or the upload may have been aborted or completed. » (Une erreur s'est produite (NoSuchUpload) lors de l'appel de l'opération ListParts : le chargement spécifié n'existe pas. L'ID de chargement peut être non valide ou le chargement peut avoir été interrompu ou terminé.)

13.    Exécutez à nouveau la commande list-multipart-uploads pour voir si l'opération partitionnée a été interrompue. Une fois l'opération en plusieurs parties interrompue par la règle, la commande ne renvoie aucune sortie.