4
votes

Une fonction Lambda peut-elle être déclenchée par plusieurs compartiments S3?

J'essaie de créer une fonction Lambda qui sera déclenchée par toute modification apportée à un compartiment dans la console S3. Existe-t-il un moyen de lier tous les événements de création de chaque compartiment de S3 à ma fonction Lambda?

Il semble que lors de la création d'une fonction Lambda, vous ne pouvez sélectionner qu'un seul compartiment S3. Existe-t-il un moyen de le faire par programme, sinon dans la console Lambda?


0 commentaires

3 Réponses :


0
votes

Il existe au moins un moyen: vous pouvez configurer des notifications d'événement s3, pour chaque bucket que vous souhaitez surveiller, toutes pointant vers une seule file d'attente SQS.

Cette file d'attente SQS peut alors être la source d'événement pour votre fonction lambda.


2 commentaires

Existe-t-il un moyen de le faire avec les sujets SNS? J'essaie de configurer une fonction Lambda qui enverra des notifications aux propriétaires de compartiments si leurs compartiments s'avèrent publics.


Je ne l'ai pas fait de cette façon, mais SNS fonctionnerait probablement aussi - les notifications d'événements s3 peuvent aller à SNS et SNS peut appeler lambda



0
votes

Si vous utilisez un aws-sdk pour télécharger vers s3, il existe une solution de contournement en configurant un point de terminaison de passerelle API pour déclencher lambda chaque fois que le téléchargement vers s3 réussit. en passant le nom du compartiment et la clé d'objet à lambda, vous pouvez également spécifier le compartiment dest de manière dynamique.

Cela sera également utile avec les préfixes imbriqués. par exemple. bucket / users / avatars / user1.jpg bucket / users / avatars / thumbnails / user1-thumb.jpg


0 commentaires

0
votes

Oui, vous pouvez, supposez que vous ne souhaitez déclencher Lambda que s'il y a de nouveaux objets créés dans quelques compartiments, vous pouvez le faire via AWS Console, cli, boto3 et d'autres SDK.

Si, au fil du temps, un nouveau bucket est créé et que vous souhaitez également l'ajouter en tant que source d'événement pour Lambda, vous pouvez créer une source d'événement d'API Cloudtrail pour déclencher un autre Lambda pour qu'il dd par programme ces nouveaux buckets en tant que sources d'événements pour le Lambda d'origine .


0 commentaires