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.
Pour conclure plus tôt, les utilisations de Kinesis Firehose sont actuellement les suivantes.
Java
, Node
, Python
, Ruby
, ʻAWS Cli`, qui est principalement supposé être intégré dans l'application côté serveur. Il semble que l'utilisation principale soit de dire que vous pouvez facilement lancer Log côté serveur tel que Node et Ruby dans S3 et Redshift.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.
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.
pour
Destination`Nom du flux de diffusion
a un nom approprié (ici, Kinesis-S3-Test
)S3 bucket
sélectionne le compartiment S3 pour stocker le journal reçu (ici kinesis-firehose-test1
) est un rôle pour sauvegarder Kinesis → S3, créez un rôle dédié avec
Create --New Firehose Deliery IAM role`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.
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
.
Ensuite, envoyez le journal aux flux de diffusion appelés Kinesis-S3-Test
créés à partir du script Python.
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.
Créez le code Python suivant.
region
correspond à US Oregon (= us-west-2) ici, mais veuillez changer en conséquence.DeliveryStreamName
sur Kinesis-S3-Test
, que vous avez créé précédemment.pip install boto3
. Si vous avez déjà installé boto3, veuillez mettre à jour avec pip install -U boto3
.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()
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é.
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.