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.
Zusammenfassend lässt sich sagen, dass Kinesis Firehose derzeit wie folgt verwendet wird.
Ruby
, AWS Cli
, und es wird hauptsächlich angenommen, dass es in die Anwendung auf der Serverseite eingebettet ist. Es scheint, dass die Hauptverwendung darin besteht, zu sagen, dass Sie Log auf der Serverseite wie Node und Ruby einfach in S3 und Redshift werfen können.Ü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.
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.
Delivery Stream Name
hat einen passenden Namen (hier Kinesis-S3-Test
)S3 Bucket
wählt den S3 Bucket zum Speichern des empfangenen Protokolls aus (hier Kinesis-Firehose-Test1
)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.
Step3 Review
Dies ist die endgültige Bestätigung. Wenn es kein Problem gibt, wird die Einstellung mit "Lieferstrom erstellen" abgeschlossen.
Senden Sie als Nächstes das Protokoll an die aus Python Script erstellten Delivery Streams mit dem Namen "Kinesis-S3-Test".
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.
Erstellen Sie den folgenden Python-Code.
accesskey
und secretkey
in den ausgegebenen APK / Secret Key (der folgende Code ist ein geeigneter Schlüssel)region
ist hier US Oregon (= us-west-2), aber bitte entsprechend ändern.pip install boto3
ein. Wenn Sie boto3 bereits installiert haben, aktualisieren Sie es bitte mit pip install -U boto3
.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()
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.
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.