2014-04-20 5 views
4

Je travaille sur une application iOS qui va télécharger de petites vidéos sur amazon s3. Les vidéos seront ensuite publiques et l'utilisateur aura la possibilité de partager une URL pour chaque vidéo. Je suis préoccupé par les coûts de diffusion (si une vidéo devait devenir virale, par exemple). À ~ 0,12 $ par Go de bande passante, cela pourrait rapidement coûter cher.Limiter amazon s3 téléchargements

Je voudrais mettre en place une sorte de limite de téléchargement pour chaque vidéo pour éviter cela. Une fois qu'une vidéo a été téléchargée un certain nombre de fois par mois, elle n'est plus publique et ne peut pas être téléchargée. J'ai regardé divers docs et je ne trouve pas un bon moyen d'accomplir cela. La seule solution potentielle que j'ai trouvée est de dérouler périodiquement les fichiers journaux de mon compartiment s3, et d'utiliser ces données pour déterminer combien de fois certaines vidéos ont été téléchargées. Est-ce mon meilleur pari ici, ou y at-il un meilleur moyen?

Merci!

Répondre

0

Vous pouvez le faire, mais vous devrez faire du codage de votre côté pour le faire fonctionner.

Méthode 1 serait de permettre aux statistiques d'exploitation forestière s3 détaillées, puis écrire du code pour analyser les fichiers journaux et déterminer par fichier lorsqu'une limite a été atteinte, puis révoquer l'autorisation sur le fichier pour l'empêcher d'être servi plus

Voici les informations sur la façon d'activer la journalisation s3 détaillée:

http://docs.aws.amazon.com/AmazonS3/latest/UG/ManagingBucketLogging.html

relativement simple, mais peut-être un peu inélégante et vous courez le risque de dépasser votre limite en raison du retard inhérent dans les journaux étant mis à disposition et le retard dans le traitement de vos journaux - si peut-être 20 minutes à une heure ou plus pourrait aller acheter une fois qu'une limite a été atteinte, mais avant que votre application a suffisamment d'informations pour le réaliser.

Méthode 2, qui imo est un peu plus élégant placerait une instance EC2 (ou des cas) entre votre application ios et s3 - app ios fait une demande d'instance EC2, il LookUps des statistiques en temps réel (qu'il s'est accumulé lui-même, peut-être dans dynamodb ou rds), puis renvoie une URL s3 à la vidéo appropriée ou renvoie une erreur de dépassement de limite à l'application. En utilisant cette méthode, il n'est pas nécessaire de révoquer les privilèges s3, car l'instance ec2 agit comme un agent de la circulation et l'activation/désactivation de l'accès à un fichier particulier peut être effectuée en temps réel. capacité en utilisant cette méthode pour vous faire savoir quand un fichier ou un fichier devient viral si cela serait utile.

+0

Merci pour la réponse détaillée! La méthode 2 ne fonctionnerait malheureusement pas pour notre cas d'utilisation, car les URL de la vidéo seront publiques et accessibles de n'importe où, pas seulement de l'application. Nous ne serions donc pas en mesure de notifier un point de terminaison chaque fois qu'une vidéo était regardée. La méthode 1 est ce que j'avais en tête, mais je suis d'accord que c'est loin d'être idéal. – Dimitar08

+0

** mise à jour **: AWS a maintenant (en fait .. pour un moment maintenant) la capacité métrique améliorée - connue sous le nom 'CloudWatch'. Une utilisation très simple qui couvre ce poste: http://docs.aws.amazon.com/AmazonS3/latest/user-guide/configure-metrics.html – ymz