114 votes

Ajouter des données à un objet S3

Disons que j'ai une machine sur laquelle je veux pouvoir écrire dans un certain fichier journal stocké sur un seau S3.

La machine doit donc avoir la capacité d'écrire dans ce bac, mais je ne veux pas qu'elle ait la capacité d'écraser ou de supprimer les fichiers de ce bac (y compris celui dans lequel je veux qu'elle écrive).

En gros, je veux que ma machine puisse seulement ajouter des données à ce fichier journal, sans le remplacer ou le télécharger.

Existe-t-il un moyen de configurer mon S3 pour qu'il fonctionne de cette manière ? Peut-être y a-t-il une politique IAM que je peux y attacher pour qu'il fonctionne comme je le souhaite ?

0 votes

Vous ne pouvez pas modifier les objets dans S3. Pourriez-vous simplement ajouter un nouveau fichier journal ? Ce serait un meilleur modèle et cela prendrait en charge plusieurs clients simultanés.

0 votes

@jarmod Oui, j'y ai pensé, mais le problème est que si un attaquant réussit à accéder à mon serveur, il aura la possibilité de supprimer le fichier local stocké sur celui-ci, avant qu'il ne soit envoyé vers le seau S3 (ce qui, disons, se produit à la fin de la journée).

0 votes

Vous pouvez également jeter un coup d'œil aux journaux de CloudWatch. Laissez-le gérer la complexité de la collecte et du stockage de vos journaux, fournir des facilités de recherche, des politiques de conservation et vous permettre de générer des alertes basées sur des métriques que vous pouvez personnaliser pour vos journaux.

1voto

Leo Glowacki Points 33

Comme d'autres l'ont déjà dit, les objets S3 ne peuvent pas être annexés.
Cependant, une autre solution serait d'écrire dans les journaux de CloudWatch et ensuite exporter les journaux que vous voulez S3 . Cela empêcherait également les attaquants qui accèdent à votre serveur de supprimer des données de votre seau S3, puisque Lambda n'aurait pas besoin d'autorisations S3.

1voto

Upnishad Deo Points 11

Le seau S3 ne vous permet pas d'ajouter des objets existants, la méthode qui peut être utilisée pour le faire est d'abord d'utiliser la méthode get pour obtenir les données du seau S3, puis d'ajouter les nouvelles données que vous voulez ajouter localement et enfin de les repousser vers le seau S3.

En effet, il n'est pas possible d'ajouter un objet S3 à un objet existant. Vous devrez le remplacer par un nouvel objet auquel seront ajoutées les données. Cela signifie que vous devrez télécharger l'objet entier (fichier journal) chaque fois qu'une nouvelle entrée y sera ajoutée. Ce n'est pas très efficace.

Les entrées de journal pourraient être envoyées dans une file d'attente SQS et, lorsque la taille de la file d'attente atteint un nombre déterminé, les messages de journal pourraient être regroupés et ajoutés en tant qu'objet dans votre seau S3. Cela ne répondra toujours pas à votre exigence d'ajout à un objet unique.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X