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. Je souhaite confirmer que la règle fonctionne.
Résolution
Remarque : Lorsque vous utilisez l'interface de la ligne de commande AWS (AWS CLI) pour définir la règle, la règle s'appelle AbortIncompleteMultipartUpload.
Vous pouvez vérifier la règle de configuration du cycle de vie de l'une des manières suivantes.
Interroger les 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 définie pour être exécutée. Une fois les journaux disponibles, vous pouvez les consulter pour vérifier si la règle a corrigé un chargement partitionné incomplet. Pour plus d'informations sur les opérations dont font état 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'AWS CLI
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'AWS CLI pour effectuer un chargement partitionné. Pour utiliser un kit AWS SDK afin d'effectuer un chargement partitionné, consultez la section Chargement et copie d'objets à l'aide du chargement partitionné.
-
Divisez en plusieurs parties le fichier que vous souhaitez charger. Par exemple, si vous utilisez un système d'exploitation Linux, vous pouvez exécuter la commande split, comme suit :
split /path/to/filetoupload
-
Exécutez la commande create-multipart-upload à l'aide de l'AWS CLI pour lancer un chargement partitionné, comme suit :
aws s3api create-multipart-upload --bucket awsexamplebucket --key large_test_file
-
La commande renvoie une sortie contenant le paramètre UploadID. Copiez la valeur UploadID comme référence pour les étapes ultérieures. La sortie de la commande se présente comme suit :
{
"AbortDate": "Mon, 03 Jun 2019 00:00:00 GMT",
"AbortRuleId": "multipartcleanup",
"Bucket": "awsexamplebucket",
"Key": "objectname",
"UploadId": "exampleTUVGeKAk3Ob7qMynRKqe3ROcavPRwg92eA6JPD4ybIGRxJx9R0VbgkrnOVphZFK59KCYJAO1PXlrBSW7vcH7ANHZwTTf0ovqe6XPYHwsSp7eTRnXB1qjx40Tk"
}
-
Exécutez la commande upload-part pour charger la première partie du fichier, comme suit. Remplacez toutes les valeurs par celles de votre compartiment, de votre fichier et de votre chargement partitionné :
aws s3api upload-part --bucket awsexamplebucket --key large_test_file --part-number 1 --body large_test_file.001 --upload-id exampleTUVGeKAk3Ob7qMynRKqe3ROcavPRwg92eA6JPD4ybIGRxJx9R0VbgkrnOVphZFK59KCYJAO1PXlrBSW7vcH7ANHZwTTf0ovqe6XPYHwsSp7eTRnXB1qjx40Tk
-
La commande renvoie une sortie contenant une valeur ETag pour la partie du fichier que vous avez chargée. Copiez la valeur ETag comme référence pour les étapes ultérieures. La sortie de la commande se présente comme suit :
-
Répétez les étapes 3 et 4 pour certaines parties du fichier. Pour ce test, ne chargez pas toutes les parties pour compléter le fichier.
{
"ETag": "\"example8be9a0268ebfb8b115d4c1fd3\""
}
Remarque : Assurez-vous d'augmenter le numéro de partie pour chaque nouvelle partie que vous chargez.
7. Pour ce test, ne terminez pas ou n'annulez pas l'opération de chargement partitionné. Notez plutôt 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
-
La commande renvoie une liste des parties, comme 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"
}
-
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
La commande renvoie une liste des chargements partitionnés en cours, comme 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"
}
}
]
}
-
Lorsque vous définissez la règle de configuration du cycle de vie, vous avez indiqué pendant combien de jours après le début d'un chargement partitionné le nettoyage doit avoir lieu. Attendez le nombre de jours que vous avez défini pour la règle.
-
Exécutez à nouveau la commande list-parts pour confirmer que les parties du chargement partitionné incomplet ont été supprimées. Une fois les parties supprimées par la règle, la commande renvoie la réponse suivante : "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."
-
Exécutez à nouveau la commande list-multipart-uploads pour confirmer que l'opération de chargement partitionné a été arrêtée. Une fois l'opération partitionnée arrêtée par la règle, la commande ne renvoie aucune sortie.
Informations connexes
Comment utiliser l'AWS CLI pour charger un fichier volumineux en plusieurs parties sur Amazon S3 ?