[PYTHON] Exécutez et consultez AWS Kinesis Firehose

introduction

Kinesis Firehose a été annoncé à Amazon re: Invent 2015 en octobre 2015.

J'ai été surpris de voir cela. Même si vous n'avez pas de serveur pour collecter les journaux (avec l'application client ou le périphérique IOT), vous pouvez stocker les journaux dans S3 ou Redshift avec Server Maintenance 0 si vous souhaitez simplement les collecter! Comme vous pouvez le voir dans la bibliothèque Google Analytics, si vous appelez l'API Beacon, les journaux seront accumulés dans Redshift sans penser à rien, et l'analyse des données est super facile! Avec cela, Jean est encore plus proche de [l'architecture à 2 niveaux] d'Amazon (http://www.slideshare.net/AmazonWebServicesJapan/aws-lambda-2tier)!

C'est pourquoi je soutiendrai le dépliant avec les résultats de mes recherches, tels que les paramètres Firehose et le script Python. Veuillez noter que cet article est le résultat de l'enquête de novembre 2015.

Conclusion

Pour conclure plus tôt, les utilisations de Kinesis Firehose sont actuellement les suivantes.

Au fait, j'ai essayé d'incorporer la version Java du SDK AWS Firehose dans l'application Android, mais je n'ai pas pu l'intégrer car ma puissance de combat Android était trop faible ou le conflit entre le SDK AWS Java et la bibliothèque Java Android n'a pas pu être résolu.

Alors, exécutons Firehose en Python ci-dessous.

Configurer Kinesis Firehose

Tout d'abord, définissez le côté Firehose en supposant que le journal reçu sera enregistré dans S3. Depuis Kinesis dans la console AWS, sélectionnez «Accéder à Kinesis Firehose», puis «Créer un flux de diffusion». (Kinesis Firehose ne prend actuellement en charge que certaines régions telles que US Oregon, Tokyo ne fonctionne pas)

Step1 Create Delivery Stream Tout d'abord, définissez où transmettre le journal reçu.

Step1.png

Step2 Configuration Réglez Timing pour écrire le journal reçu sur S3, présence / absence de compression, etc. Vous pouvez le laisser par défaut, mais j'ai changé l '«intervalle du tampon» sur 60 (minimum 60 secondes) afin de le définir pour écrire dans «S3 toutes les 60 secondes. Maintenant, si le journal arrive, le journal sera écrit dans S3 sous forme de fichier toutes les 60 secondes.

Step2.png

Step3 Review Ceci est la confirmation finale. S'il n'y a pas de problème, le paramétrage est terminé avec Create Delivery Stream. Step3.png

Envoyer le journal à Kinesis Firehose sur Python

Ensuite, envoyez le journal aux flux de diffusion appelés Kinesis-S3-Test créés à partir du script Python.

Paramètres utilisateur IAM

Créez un utilisateur IAM pour accéder à Kinesis à partir d'un script Python. «Accordez une autorisation pour AmazonKinesisFirehoseFullAccess» et émettez l'API / la clé secrète.

Paramètres de script Python

Créez le code Python suivant.

Ce que nous faisons, c'est envoyer l'heure actuelle au format 2015-11-13 13: 34: 21 à Kinesis Firehose avec client.put_record toutes les secondes.


#!/usr/bin/env python
# -*- coding: utf-8 -*-

import boto3, datetime, time

def main():
  accesskey = 'AKIAABCDEFGHIJK2345PQ'
  secretkey = 'CUQVma+ilWkC7FOU8isueWKWUGk7GB'
  region    = 'us-west-2'
  client = boto3.client('firehose', aws_access_key_id=accesskey, aws_secret_access_key=secretkey, region_name=region)

  count = 0
  while count < 100 :
    response = client.put_record(
        DeliveryStreamName='Kinesis-S3-Test',
        Record={
            'Data': datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
        }
    )
    print(response)
    count += 1
    time.sleep(1)

if __name__ == '__main__':
  main()


Confirmation du compartiment S3

Accédez à S3 dans la console AWS et ouvrez un compartiment appelé kinesis-firehose-test1. Je pense qu'un fichier journal est créé dans le dossier kinesis-firehose-test1 / YYYY / mm / DD / hh. Veuillez vérifier si le journal envoyé par le script Python est enregistré.

Step4.png

Résumé

Pour le moment, j'ai envoyé Log de Python à Kinesis Firehose. Je pense que c'est bon pour remplacer fluentd en combinaison avec un agent kinésique. Si vous placez un journal dans le compartiment de S3 et que vous l'enregistrez dans Amazon Elasticsearch avec la fonction Lambda dans Trigger, Elasticsearch / Kibana peut également être géré par Amazon.

Cependant, si ʻAndroid et javascript` sont pris en charge à l'avenir, il devrait être possible de l'utiliser comme Beacon, donc je le prendrai en charge.

Recommended Posts

Exécutez et consultez AWS Kinesis Firehose
Note de Kinesis Firehose
Développer, exécuter et déployer AWS Lambda à distance à l'aide de lambda-uploader
[blackbird-kinesis-stream] Surveillance d'AWS KinesisStream
Exécutez YOLO v3 sur AWS v2
Exécutez YOLO v3 sur AWS