[PYTHON] Führen Sie AWS Kinesis Firehose aus

Einführung

Kinesis Firehose wurde im Oktober 2015 bei Amazon re: Invent 2015 angekündigt.

Ich war überrascht, das zu sehen. Auch wenn Sie keinen Server haben, der Protokolle sammelt (mit Client-App oder IOT-Gerät), können Sie Protokolle in S3 oder Redshift mit Server Maintenance 0 speichern, wenn Sie sie nur sammeln möchten! Wie Sie in der Google Analytics-Bibliothek sehen können, werden beim Aufrufen der Beacon-API Protokolle in Redshift gesammelt, ohne an irgendetwas zu denken, und die Datenanalyse ist sehr einfach! Damit ist Jean noch näher an der [2-Tier-Architektur] von Amazon (http://www.slideshare.net/AmazonWebServicesJapan/aws-lambda-2tier)!

Aus diesem Grund werde ich die Broschüre mit den Ergebnissen meiner Forschung wie Firehose-Einstellungen und Python-Skript untermauern. Bitte beachten Sie, dass dieser Artikel das Ergebnis der Umfrage vom November 2015 ist.

Fazit

Zusammenfassend lässt sich sagen, dass Kinesis Firehose derzeit wie folgt verwendet wird.

Übrigens habe ich versucht, die Java-Version des AWS Firehose SDK in die Android-App zu integrieren, aber ich konnte sie nicht integrieren, weil meine Android-Kampfkraft zu gering war oder der Konflikt zwischen dem AWS Java SDK und der Android Java Library nicht gelöst werden konnte.

Lassen Sie uns unten Firehose in Python ausführen.

Richten Sie Kinesis Firehose ein

Stellen Sie zunächst die Firehose-Seite unter der Annahme ein, dass das empfangene Protokoll in S3 gespeichert wird. Wählen Sie in Kinesis in der AWS-Konsole "Gehe zu Kinesis Firehose" und dann "Lieferstrom erstellen". (Kinesis Firehose unterstützt derzeit nur einige Regionen wie US Oregon, Tokio funktioniert nicht)

Step1 Create Delivery Stream Legen Sie zunächst fest, wohin das empfangene Protokoll übergeben werden soll.

Step1.png

Step2 Configuration Stellen Sie den Zeitpunkt für das Schreiben des empfangenen Protokolls auf S3, das Vorhandensein oder Fehlen einer Komprimierung usw. ein. Sie können es als Standard belassen, aber ich habe das Pufferintervall auf 60 (mindestens 60 Sekunden) geändert, um es so einzustellen, dass es alle 60 Sekunden in S3 schreibt. Wenn nun Log kommt, wird Log alle 60 Sekunden als Datei in S3 geschrieben.

Step2.png

Step3 Review Dies ist die endgültige Bestätigung. Wenn es kein Problem gibt, wird die Einstellung mit "Lieferstrom erstellen" abgeschlossen. Step3.png

Senden Sie das Protokoll an Kinesis Firehose unter Python

Senden Sie als Nächstes das Protokoll an die aus Python Script erstellten Delivery Streams mit dem Namen "Kinesis-S3-Test".

IAM-Benutzereinstellungen

Erstellen Sie einen IAM-Benutzer, um über ein Python-Skript auf Kinesis zuzugreifen. Erteilen Sie die Berechtigung "AmazonKinesisFirehoseFullAccess" und geben Sie die API / den geheimen Schlüssel aus.

Python Script-Einstellungen

Erstellen Sie den folgenden Python-Code.

Wir senden die aktuelle Zeit des Formats "2015-11-13 13: 34: 21" mit "client.put_record" jede Sekunde an Kinesis Firehose.


#!/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()


Bestätigung des S3-Buckets

Gehen Sie in der AWS-Konsole zu S3 und öffnen Sie einen Eimer mit dem Namen "kinesis-firehose-test1". Ich denke, dass eine Protokolldatei unter dem Ordner "kinesis-firehose-test1 / JJJJ / mm / TT / hh" erstellt wird. Bitte überprüfen Sie, ob das vom Python-Skript gesendete Protokoll gespeichert ist.

Step4.png

Zusammenfassung

Vorerst habe ich Log von Python an Kinesis Firehose gesendet. Ich denke, es ist gut, um fließend in Kombination mit Kinesis-Mittel zu ersetzen. Wenn Sie ein Protokoll in den Bucket von S3 stellen und es in Amazon Elasticsearch mit der Lambda-Funktion in Trigger registrieren, kann Elasticsearch / Kibana auch von Amazon verwaltet werden.

Wenn jedoch "Android" und "Javascript" in Zukunft unterstützt werden, sollte es möglich sein, es wie "Beacon" zu verwenden, also werde ich es unterstützen.

Recommended Posts

Führen Sie AWS Kinesis Firehose aus
Kinesis Firehose Hinweis
Entwickeln, Ausführen und Bereitstellen von AWS Lambda remote mit dem Lambda-Uploader
[Amsel-Kinesis-Stream] Überwachung von AWS KinesisStream
Führen Sie YOLO v3 unter AWS v2 aus
Führen Sie YOLO v3 unter AWS aus