1
votes

aws sns publiant une charge utile compressée

La taille maximale du message pouvant être publiée sur AWS-SNS est limitée à 256 Ko. Pouvons-nous compresser un message à l'aide de GZIP et envoyer publier le message compressé pour dépasser la limite de taille?


0 commentaires

3 Réponses :


4
votes

Vous y regardez déjà? https: // docs. aws.amazon.com/sns/latest/dg/sns-large-payload-raw-message-delivery.html

Si vous pensez que le fichier peut augmenter avec le temps, je suggère une autre approche.

Placez le fichier sur le compartiment S3 et attachez la notification d'événement S3 à SNSTopic afin que tous les consommateurs soient avertis lorsqu'un nouveau fichier est prêt à être traité. En d'autres termes, le message du SNS sera l'emplacement du fichier et non le fichier lui-même. Pensez-y.


2 commentaires

Cela semble être une excellente solution pour surmonter la limitation de 256 Ko. Je n'ai pas suivi la nécessité de joindre une notification d'événement S3. Une fois le fichier S3 créé, quel est le besoin d'une notification? Ai-je mal compris la déclaration?


@AndyDufresne, la notification S3 est le moyen le plus simple de notifier lorsqu'un nouvel objet est téléchargé dans le compartiment. De toute évidence, ce n'est pas la seule façon de le faire. Nous pouvons placer l'objet et notifier que l'objet est téléchargé.



6
votes

Vous pouvez gzip le corps du message - cependant - Les corps de message SNS ne prennent en charge que les données de caractère UTF-8. Les données gzippées sont binaires, ce qui n'est pas directement compatible avec SNS car toutes les séquences d'octets possibles ne sont pas également une séquence valide de caractères UTF-8.

Ainsi, après avoir gzipé votre charge utile, vous devez encoder ces données binaires en utilisant un schéma tel que base-64. La base 64 encode des données binaires arbitraires (8 bits par octet) en utilisant seulement 64 symboles (qui est 2 ^ 6, donnant effectivement 6 bits par octet) et ainsi le nombre d'octets gonfle de 8/6 (133%) en conséquence codage. Cela signifie que 192 Ko de données binaires encodent à 256 Ko de données encodées en base 64, donc la taille maximale autorisée de votre message après gzip devient 192 Ko (puisque la limite SNS est de 256 Ko). Mais tous les symboles de base 64 sont des caractères UTF-8 à un octet valides, ce qui est une raison importante pour laquelle ce codage est si couramment utilisé, malgré son augmentation de taille. Cela, et le fait que gzip a généralement un taux de compression bien supérieur à 1,33: 1 (qui est le seuil de rentabilité pour gzip + base-64).

Mais si vos messages gzip à 192 Ko ou moins, cela fonctionne certainement avec SNS (ainsi qu'avec SQS, qui a le même jeu de caractères et les mêmes limites de taille).


0 commentaires

0
votes

Vous pouvez également utiliser la bibliothèque client étendue SNS / SQS pour les charges utiles de messages volumineux.

https://aws.amazon.com/about-aws/whats-new/2020/08/amazon-sns-launches -client-library-support-messages-payloads-de-jusqu'à-2-Go


0 commentaires