Hey Habr!
เปเบเบปเปเบฒเบกเบฑเบเบเบปเบเบเบดเบเบเปเป? เบเปเบญเบเบฎเบฑเบเบกเบฑเบ, เปเบเปเปเบเบฅเบฐเบซเบงเปเบฒเบเบเบฒเบเปเบเบเบเปเบฝเบงเบเบปเบเปเบญเบเบเปเบญเบเบเปเปเบเบปเบเบซเบฅเบธเบกเบฎเบฑเบเบเบฑเบเบเบฒเบเบงเบดเปเบเบฒเบฐเบเปเปเบกเบนเบเบเปเบฝเบงเบเบฑเบเบเบตเปเบเบปเบเบเบฒเบเปเบซเบผเปเบเบเบตเปเบกเบตเบเบทเปเบชเบฝเบเบซเบเบถเปเบ - Aviasales.
เบกเบทเปเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเบฐเบงเบดเปเบเบฒเบฐเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเบญเบ Amazon Kinesis, เบชเปเบฒเบเบฅเบฐเบเบปเบเบเบฒเบเบเปเบฒเบเบเบญเบเบเปเบงเบเบเบฒเบเบงเบดเปเบเบฒเบฐเปเบเปเบงเบฅเบฒเบเบตเปเปเบเปเบเบดเบ, เบเบดเบเบเบฑเปเบเบเบฒเบเบเปเปเบกเบนเบ Amazon DynamoDB NoSQL เปเบเบฑเบเบเบฒเบเปเบเบฑเบเบฎเบฑเบเบชเบฒเบเปเปเบกเบนเบเบเบปเปเบเบเป, เปเบฅเบฐเบเบฑเปเบเบเปเบฒเบเบฒเบเปเบเปเบเปเบเบทเบญเบ SMS เบชเปเบฒเบฅเบฑเบเบเบตเปเบเบตเปเบซเบเปเบฒเบชเบปเบเปเบ.
เบฅเบฒเบเบฅเบฐเบญเบฝเบเบเบฑเบเปเบปเบเปเบกเปเบเบขเบนเปเบเบฒเบเปเบเปเบเบฒเบเบเบฑเบ! เปเบ!
เบเบฒเบเบเปเบฒเบชเบฐเปเบซเบเบต
เบเบปเบงเบขเปเบฒเบ, เบเบงเบเปเบฎเบปเบฒเบเปเบญเบเบเบฒเบเบเบฒเบเปเบเบปเปเบฒเปเบเบดเบ
เบเบธเบเบเบฐเบชเบปเบเบเบปเปเบเบเปเบเบญเบเบเบปเบเบเบงเบฒเบกเบเบตเปเปเบกเปเบเปเบเบทเปเบญเปเบซเปเบเบงเบฒเบกเปเบเบปเปเบฒเปเบเบเบปเปเบงเปเบเบเปเบฝเบงเบเบฑเบเบเบฒเบเบเปเบฒเปเบเปเบเบฒเบเบเปเบฒเบเบเบญเบเบเปเปเบกเบนเบเปเบ AWS; เบเบงเบเปเบฎเบปเบฒเบเบดเบเบฒเบฅเบฐเบเบฒเบงเปเบฒเบเปเปเบกเบนเบเบเบตเปเบชเบปเปเบเบเบทเบเปเบเบ API เบเบตเปเปเบเปเปเบกเปเบเบเปเปเบเบฑเบเบชเบฐเปเบซเบกเบขเปเบฒเบเปเบเบฑเปเบกเบเบงเบเปเบฅเบฐเบเบทเบเบชเบปเปเบเบเบฒเบ cache, เปเบเบดเปเบเปเบกเปเบ. เบชเปเบฒเบเบเบถเปเบเปเบเบเบญเบตเบเปเบชเปเบเบฒเบเบเบปเปเบเบซเบฒเปเบเบเบเบนเปเปเบเปเบเบญเบเปเบงเบฑเบเปเบ Aviasales.ru เปเบฅเบฐ Jetradar.com เบชเปเบฒเบฅเบฑเบ 48 เบเบปเปเบงเปเบกเบเบเบตเปเบเปเบฒเบเบกเบฒ.
Kinesis-agent, เบเบดเบเบเบฑเปเบเบขเบนเปเปเบเปเบเบทเปเบญเบเบเบฐเบฅเบดเบ, เบเบตเปเปเบเปเบฎเบฑเบเบเปเบฒเบ API เบเบฐเบงเบดเปเบเบฒเบฐเปเบฅเบฐเบชเบปเปเบเบเปเปเบกเบนเบเปเบเบเบฑเบเบเบฐเปเบชเบเบตเปเบเปเบญเบเบเบฒเบเบเปเบฒเบ Kinesis Data Analytics เปเบเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบ. เบชเบฐเบเบฑเบเบเบดเบเบเบญเบเบเบฐเปเบชเบเบตเปเบเบฐเบเบทเบเบเบฝเบเปเบเบเบเบปเบเบซเบฒเบฎเปเบฒเบ. เบเบฒเบเปเบเบฑเบเบฎเบฑเบเบชเบฒเบเปเปเบกเบนเบเบเบดเบเบเบตเปเปเบเปเปเบ DynamoDB เบเบฐเบเปเบงเบเปเบซเปเบเบฒเบเบงเบดเปเบเบฒเบฐเบเบปเปเบงเบเบตเปเปเบฅเบดเบเปเบเบดเปเบเบเปเบฒเบเปเบเบทเปเบญเบเบกเบท BI เปเบเบฑเปเบ AWS Quick Sight.
เบเบงเบเปเบฎเบปเบฒเบเบฐเบเบดเบเบฒเบฅเบฐเบเบฒเบชเบญเบเบเบฒเบเปเบฅเบทเบญเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเปเบฒเปเบเปเปเบเบเบชเปเบฒเบเบเบทเปเบเบเบฒเบเบเบฑเบเบซเบกเบปเบ:
- เบเบนเปเบกเบท - เบเปเบฒเบ AWS Management Console;
- เปเบเบเบชเปเบฒเบเบเบทเปเบเบเบฒเบเบเบฒเบเบฅเบฐเบซเบฑเบ Terraform เปเบกเปเบเบชเปเบฒเบฅเบฑเบเปเบเบทเปเบญเบเบเบฑเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบเบเบตเปเบเบฝเบ;
เบชเบฐเบเบฒเบเบฑเบเบเบฐเบเบฐเบเปเบฒเบเบญเบเบฅเบฐเบเบปเบเบเบฒเบเบเบฑเบเบเบฐเบเบฒ
เบญเบปเบโเบเบฐโเบเบญเบโเบเบตเปโเบเปเบฒโเปเบเปโ:
Aviasales API โ เบเปเปโเบกเบนเบโเบเบตเปโเบชเบปเปเบโเบเบทเบโเปเบเบ API เบเบตเปโเบเบฐโเบเบทเบโเบเปเบฒโเปเบเปโเบชเปเบฒโเบฅเบฑเบโเบเบฒเบโเปเบฎเบฑเบโเบงเบฝเบโเบเปเปโเบกเบฒโเบเบฑเบโเบซเบกเบปเบโ;เบเบปเบงเบขเปเบฒเบเบเบนเปเบเบฐเบฅเบดเบ EC2 โ เปเบเบทเปเบญเบ virtual เบเบปเบเบเบฐเบเบดเบขเบนเปเปเบเบเบฅเบฒเบงเบเบตเปเบเบฐเปเบชเบเปเปเบกเบนเบเบเปเบญเบเปเบเบปเปเบฒเบเบฐเบเบทเบเบเบฐเบฅเบดเบ:เบเบปเบงเปเบเบ Kinesis เปเบเบฑเบเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบ Java เบเบตเปเบเบดเบเบเบฑเปเบเบขเบนเปเปเบเปเบเบทเปเบญเบเบเบตเปเปเบซเปเบงเบดเบเบตเบเบตเปเบเปเบฒเบเปเบเบเบฒเบเปเบเบฑเบเบเปเบฒเปเบฅเบฐเบชเบปเปเบเบเปเปเบกเบนเบเปเบเบซเบฒ Kinesis (Kinesis Data Streams เบซเบผเบท Kinesis Firehose). เบเบปเบงเปเบเบเบเบดเบเบเบฒเบกเบเบธเบเบเบญเบเปเบเบฅเปเบขเบนเปเปเบเปเบเปเบฅเบเบฐเบเปเบฅเบตเบเบตเปเบฅเบฐเบเบธเปเบงเปเบขเปเบฒเบเบเปเปเปเบเบทเปเบญเบเปเบฅเบฐเบชเบปเปเบเบเปเปเบกเบนเบเปเบซเบกเปเปเบเบซเบฒ Kinesis;API Caller Script โ A Python script เบเบตเปเปเบฎเบฑเบเบเบฒเบเบฎเปเบญเบเบเปเปเบเบซเบฒ API เปเบฅเบฐเบงเบฒเบเบเบฒเบเบเบญเบเบชเบฐเบซเบเบญเบเปเบเบปเปเบฒเปเบเปเบเปเบเบเปเบเบตเบเบตเปเบเบทเบเบเบงเบเบชเบญเบเปเบเบ Kinesis Agent;
Kinesis Data Stream โ เบเบฒเบโเบเปโเบฅเบดโเบเบฒเบโเบโเปโเปโเบฒโเบเปเปโเบกเบนเบโเบเบตเปโเปเบเปโเปเบงโเบฅเบฒโเบเบตเปโเปเบเปโเบเบดเบโเบเบตเปโเบกเบตโเบเบงเบฒเบกโเบชเบฒโเบกเบฒเบโเบเบฐโเบซเบเบฒเบโเบเบงเปเบฒเบโ;Kinesis Analytics เปเบเบฑเบเบเบฒเบเบเปเบฅเบดเบเบฒเบเปเบเบตเบเปเบงเบตเบเบตเปเบเปเบฒเบเปเบเบเบฒเบเบงเบดเปเบเบฒเบฐเบเปเปเบกเบนเบเบเบฒเบเบเปเบฒเบเบเบญเบเปเบเปเบงเบฅเบฒเบเบดเบ. Amazon Kinesis Data Analytics เบเบณเบเบปเบเบเปเบฒเบเบฑเบเบเบฐเบเบฒเบเบญเบเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบ เปเบฅเบฐเบเบฑเบเบเบฐเปเบฒเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบเปเบเบทเปเบญเบเบฑเบเบเบฒเบเบเบฐเบฅเบดเบกเบฒเบเบเปเปเบกเบนเบเบเบฒเปเบเบปเปเบฒ;AWS Lambda โ เบเบฒเบเบเปเบฅเบดเบเบฒเบเบเบตเปเบญเบฐเบเบธเบเบฒเบเปเบซเปเบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบเบฅเบฐเบซเบฑเบเปเบเบเบเปเปเบกเบตเบเบฒเบเบชเปเบฒเบฎเบญเบเบเปเปเบกเบนเบเบซเบผเบทเบเบฒเบเบเบฑเปเบเบเปเบฒเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ. เบเบฐเบฅเบฑเบเบเบฒเบเบเบญเบกเบเบดเบงเปเบเบตเบเบฑเบเบซเบกเบปเบเบเบฐเบเบทเบเบเบฑเบเบเบฐเบซเบเบฒเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบเบชเปเบฒเบฅเบฑเบเปเบเปเบฅเบฐเบเบฒเบเปเบ;Amazon DynamoDB - เบเบฒเบเบเปเปเบกเบนเบเบเบญเบเบเบนเปเบเบต-เบเปเบฒ เปเบฅเบฐเปเบญเบเบฐเบชเบฒเบเบเบตเปเบชเบฐเปเบญเบเปเบงเบฅเบฒเปเบเบฑเบเปเบเบฑเบเปเปเบญเบเบเบงเปเบฒ 10 เบกเบดเบเบฅเบดเบงเบดเบเบฒเบเบต เปเบกเบทเปเบญเปเบฅเปเบเบขเบนเปเบเบธเบเบเบฐเปเบฒเบ. เปเบกเบทเปเบญเปเบเป DynamoDB, เบเปเบฒเบเบเปเปเบเปเบฒเปเบเบฑเบเบเปเบญเบเบชเบฐเบซเบเบญเบ, เปเบเปเปเบ, เบซเบผเบทเบเบฑเบเบเบฒเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเปเบเป. DynamoDB เบเบฑเบเบเบฒเบเบฐเบฅเบฒเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบเปเบเบทเปเบญเบเบฑเบเบเบฐเบฅเบดเบกเบฒเบเบเบญเบเบเบฑเบเบเบฐเบเบฒเบเบญเบเบเบตเปเบกเบตเบขเบนเปเปเบฅเบฐเบฎเบฑเบเบชเบฒเบเบฐเบชเบดเบเบเบดเบเบฒเบเบชเบนเบ. เบเปเปเบเปเบฒเปเบเบฑเบเบเปเบญเบเบกเบตเบเบฒเบเบเบธเปเบกเบเบญเบเบฅเบฐเบเบปเบ;Amazon SNS - เบเบฒเบเบเปเบฅเบดเบเบฒเบเบเบตเปเบกเบตเบเบฒเบเบเบฑเบเบเบฒเบเบขเปเบฒเบเปเบเบฑเบกเบเบตเปเบชเปเบฒเบฅเบฑเบเบเบฒเบเบชเบปเปเบเบเปเปเบเบงเบฒเบกเปเบเบเปเบเปเบเบปเบงเปเบเบเบเบญเบเบเบนเปเบเบฑเบเบเบดเบก (Pub/Sub), เปเบเบดเปเบเบเปเบฒเบเบชเบฒเบกเบฒเบเปเบเบ microservices, เบฅเบฐเบเบปเบเปเบเบเบขเบฒเบเปเบฅเบฐเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบเบเบตเปเบเปเปเบกเบตเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ. SNS เบชเบฒเบกเบฒเบเปเบเปเปเบเบทเปเบญเบชเบปเปเบเบเปเปเบกเบนเบเปเบเบเบฑเบเบเบนเปเปเบเปเบชเบธเบเบเปเบฒเบเบเปเบฒเบเบเบฒเบเปเบเปเบเปเบเบทเบญเบเบเบฒเบเปเบเบฅเบฐเบชเบฑเบเบกเบทเบเบท, เบเปเปเบเบงเบฒเบก SMS เปเบฅเบฐเบญเบตเปเบกเบฅเป.
เบเบฒเบเบเบถเบเบญเบปเบเบฎเบปเบกเปเบเบทเปเบญเบเบเบปเปเบ
เปเบเบทเปเบญเปเบฎเบฑเบเบเบฒเบกเบเบฒเบเปเบซเบผเปเบเบปเปเบฒเบเบญเบเบเปเปเบกเบนเบ, เบเปเบญเบเปเบเปเบเบฑเบเบชเบดเบเปเบเปเบเปเบเปเปเบกเบนเบเบเบตเปเบชเบฒเบเบเบฒเบเบเบดเบเบเบตเปเบชเบปเปเบเบเบทเบเปเบเบ Aviasales API. IN
เบเบฑเปเบเบเบฑเปเบ, เปเบซเปเบเบงเบเปเบฎเบปเบฒเบฅเบปเบเบเบฐเบเบฝเบเปเบฅเบฐเปเบเปเบฎเบฑเบ token เบเบญเบเบเบงเบเปเบฎเบปเบฒ.
เบเบฒเบเบฎเปเบญเบเบเปเบเบปเบงเบขเปเบฒเบเปเบกเปเบเบเปเบฒเบเบฅเบธเปเบกเบเบตเป:
http://api.travelpayouts.com/v2/prices/month-matrix?currency=rub&origin=LED&destination=HKT&show_to_affiliates=true&token=TOKEN_API
เบงเบดเบเบตเบเบฒเบเบเปเบฒเบเปเบเบดเบเบเบญเบเบเบฒเบเบฎเบฑเบเบเปเปเบกเบนเบเบเบฒเบ API เปเบเบเบเบฒเบเบฅเบฐเบเบธ token เปเบเบเปเบฒเบฎเปเบญเบเบเปเบเบฐเปเบฎเบฑเบเบงเบฝเบ, เปเบเปเบเปเบญเบเบกเบฑเบเบเบตเปเบเบฐเบเปเบฒเบ token เบเบฒเบเปเบเบปเปเบฒเปเบเบดเบเบเปเบฒเบ header, เบเบฑเปเบเบเบฑเปเบเบเบงเบเปเบฎเบปเบฒเบเบฐเปเบเปเบงเบดเบเบตเบเบตเปเปเบเบชเบฐเบเบดเบ api_caller.py.
เบเบปเบงเบขเปเบฒเบเบเปเบฒเบเบญเบ:
{{
"success":true,
"data":[{
"show_to_affiliates":true,
"trip_class":0,
"origin":"LED",
"destination":"HKT",
"depart_date":"2015-10-01",
"return_date":"",
"number_of_changes":1,
"value":29127,
"found_at":"2015-09-24T00:06:12+04:00",
"distance":8015,
"actual":true
}]
}
เบเบปเบงเบขเปเบฒเบเบเบฒเบเบเบญเบเบชเบฐเปเบญเบ API เบเปเบฒเบเปเบเบดเบเบชเบฐเปเบเบเปเบซเปเปเบซเบฑเบเบเบตเปเบเบฒเบเปเบเบเบเบตเปเบเบตเบชเบฐเปเบเบตเบเปเบเบเบนเบ... เปเบญเป, เบเบฑเบเบเบต...
เปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒเบเปเบฒเบเบฐเปเบเบปเปเบฒเบกเบฒเบเบฒเบ Kazan, เปเบฅเบฐ Phuket เปเบเบเบฑเบเบเบธเบเบฑเบเปเบกเปเบ "เบเบฝเบเปเบเปเบเบงเบฒเบกเบเบฑเบ", เปเบซเปเบเบญเบเบซเบฒเบเบตเปเบเบฒเบ St. Petersburg เปเบ Kazan.
เบกเบฑเบเบชเบปเบกเบกเบธเบเบงเปเบฒเบเปเบฒเบเบกเบตเบเบฑเบเบเบต AWS เปเบฅเปเบง. เบเปเบฒเบเบฐเปเบเบปเปเบฒเบขเบฒเบเบเบฐเปเบญเบปเบฒเปเบเปเบชเปเปเบเบฑเบเบเบดเปเบชเบเปเบเบเบฑเบเบเบตเบงเปเบฒ Kinesis เปเบฅเบฐเบเบฒเบเบชเบปเปเบเบเบฒเบเปเบเปเบเปเบเบทเบญเบเบเปเบฒเบ SMS เบเปเปเปเบเปเบฅเบงเบกเบขเบนเปเปเบเบเบฐเบเปเบฒเบเบต.
Free Tier (เปเบเปเบเบฃเบต) . เปเบเปเปเบเบดเบเปเบกเปเบเบงเปเบฒเบเบตเป, เบเปเบงเบเบชเบญเบเบชเบฒเบกเปเบเบฅเบฒเบขเบนเปเปเบเปเบ, เบกเบฑเบเบเปเปเปเบเบฑเบเปเบเปเบเปเบเบตเปเบเบฐเบชเปเบฒเบเบฅเบฐเบเบปเบเบเบตเปเบชเบฐเปเบซเบเบตเปเบฅเบฐเบซเบผเบตเปเบเบเบฑเบเบกเบฑเบ. เปเบฅเบฐ, เปเบเปเบเบญเบ, เบขเปเบฒเบฅเบทเบกเบฅเบถเบเบเบฑเบเบเบฐเบเบฒเบเบญเบเบเบฑเบเบซเบกเบปเบเบซเบผเบฑเบเบเบฒเบเบเบตเปเบเบงเบเปเบเบปเบฒเบเปเปเบเปเบฒเปเบเบฑเบ.
เปเบเบเบเบต, เบเบฑเบเบเบฑเบ DynamoDb เปเบฅเบฐ lambda เบเบฐเบเปเปเปเบชเบเบเปเบฒเบชเปเบฒเบฅเบฑเบเบเบงเบเปเบฎเบปเบฒเบเปเบฒเบเบงเบเปเบฎเบปเบฒเบเบญเบเบชเบฐเบซเบเบญเบเบเบญเบเปเบเบเบเปเบฒเบเบฑเบเบเบฃเบตเบเบฐเบเปเบฒเปเบเบทเบญเบเบเบญเบเบเบงเบเปเบฎเบปเบฒ. เบเบปเบงเบขเปเบฒเบ, เบชเปเบฒเบฅเบฑเบ DynamoDB: 25 GB เบเบญเบเบเบฒเบเปเบเบฑเบเบฎเบฑเบเบชเบฒ, 25 WCU/RCU เปเบฅเบฐ 100 เบฅเปเบฒเบเบชเบญเบเบเบฒเบก. เปเบฅเบฐเบเบฑเบเบเบฑเบ lambda เบฅเปเบฒเบเปเบเบเปเปเปเบเบทเบญเบ.
เบเบฒเบเบเบณเปเบเปเบฅเบฐเบเบปเบเบเบนเปเบกเบท
เบเบฒเบเบเบฑเปเบเบเปเบฒ Kinesis Data Stream
เปเบซเปเปเบเบเบตเปเบเปเบฅเบดเบเบฒเบ Kinesis Data Stream เปเบฅเบฐเบชเปเบฒเบเบชเบญเบเบชเบฒเบเบเปเปเบฒเปเบซเบกเป, เบซเบเบถเปเบ shard เบชเปเบฒเบฅเบฑเบเปเบเปเบฅเบฐเบเบปเบ.
shard เปเบกเปเบเบซเบเบฑเบ?
A shard เปเบกเปเบเบซเบปเบงเบซเบเปเบงเบเบเบฒเบเปเบญเบเบเปเปเบกเบนเบเบเบทเปเบเบเบฒเบเบเบญเบ Amazon Kinesis stream. เบเบฒเบเบชเปเบงเบเบซเบเบถเปเบเบชเบฐเบซเบเบญเบเบเบฒเบเปเบญเบเบเปเปเบกเบนเบเปเบเบปเปเบฒเบเปเบงเบเบเบงเบฒเบกเปเบง 1 MB/s เปเบฅเบฐเบเบฒเบเปเบญเบเบเปเปเบกเบนเบเบเบปเบเปเบเปเบฎเบฑเบเบขเบนเปเบเบตเปเบเบงเบฒเบกเปเบง 2 MB/s. เบเบฒเบเบชเปเบงเบเปเบถเปเบเบฎเบญเบเบฎเบฑเบเปเบเปเปเบเบดเบ 1000 PUT entry เบเปเปเบงเบดเบเบฒเบเบต. เปเบกเบทเปเบญเบชเปเบฒเบเบเบฒเบเบเปเบฒเบเบเบญเบเบเปเปเบกเบนเบ, เบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเบฅเบฐเบเบธเบเปเบฒเบเบงเบเบชเปเบงเบเบเบตเปเบเปเบญเบเบเบฒเบ. เบเบปเบงเบขเปเบฒเบ, เบเปเบฒเบเบชเบฒเบกเบฒเบเบชเปเบฒเบเบเบฐเปเบชเบเปเปเบกเบนเบเบเบตเปเบกเบตเบชเบญเบเบชเปเบงเบ. เบเบฒเบเบเปเบฒเบเบเบญเบเบเปเปเบกเบนเบเบเบตเปเบเบฐเบชเบฐเปเบญเบเบเปเปเบกเบนเบเบเบฒเบเบเปเบญเบเบเปเปเบกเบนเบเปเบเบเบงเบฒเบกเปเบง 2 MB/s เปเบฅเบฐเปเบญเบเบเปเปเบกเบนเบเบเบปเบเปเบเปเบฎเบฑเบเบขเบนเปเบเบตเป 4 MB/s, เบฎเบญเบเบฎเบฑเบเบเบฒเบเบชเบปเปเบเบเปเปเบกเบนเบเปเบเปเบชเบนเบเบชเบธเบ 2000 PUT เบเปเปเบงเบดเบเบฒเบเบต.
เบซเบผเบฒเบ shards เปเบ stream เบเบญเบเบเปเบฒเบ, เปเบเบเบเปเบฒเบเบเบฒเบเบซเบผเบฒเบเบเบญเบเบกเบฑเบ. เปเบเบซเบผเบฑเบเบเบฒเบ, เบเบตเปเปเบกเปเบเบงเบดเบเบตเบเบฒเบเบเบฐเบซเบเบฒเบเบเบฒเบเปเบซเบผเปเบเบปเปเบฒ - เปเบเบเบเบฒเบเปเบเบตเปเบก shards. เปเบเปเบซเบผเบฒเบ shards เบเปเบฒเบเบกเบต, เบฅเบฒเบเบฒเบชเบนเบเบเบถเปเบ. เปเบเปเบฅเบฐ shard เบฅเบฒเบเบฒ 1,5 เปเบเบฑเบเบเปเปเบเบปเปเบงเปเบกเบเปเบฅเบฐ 1.4 เปเบเบฑเบเปเบเบตเปเบกเปเบเบตเบกเบชเปเบฒเบฅเบฑเบเบเบธเบเปเบฅเปเบฒเบ PUT payload เบซเบเปเบงเบ.
เบกเบฒเบชเปเบฒเบเบเบฐเปเบชเปเปเปเบเปเบงเบเบเบทเป airline_tickets, 1 shard เบเบฐเบเบฝเบเบเปเบชเปเบฒเบฅเบฑเบเบฅเบฒเบง:
เบเบญเบเบเบตเปเปเบซเปเบเบงเบเปเบฎเบปเบฒเบชเปเบฒเบเบซเบปเบงเบเปเปเบญเบทเปเบเบเบตเปเบกเบตเบเบทเป special_stream:
เบเบฒเบโเบเบฑเปเบโเบเปเบฒโเบเบนเปโเบเบฐโเบฅเบดเบโ
เปเบเบทเปเบญเบงเบดเปเบเบฒเบฐเบงเบฝเบเบเบฒเบ, เบกเบฑเบเบเบฝเบเบเปเบเบตเปเบเบฐเปเบเปเบเบปเบงเบขเปเบฒเบ EC2 เบเบปเบเบเบฐเบเบดเปเบเบฑเบเบเบนเปเบเบฐเบฅเบดเบเบเปเปเบกเบนเบ. เบกเบฑเบเบเปเปเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบเบฑเบเปเบเบทเปเบญเบ virtual เบเบตเปเบกเบตเบเบฐเบชเบดเบเบเบดเบเบฒเบ, เบฅเบฒเบเบฒเปเบเบ; เบเบธเบ t2.micro เบเบฐเปเบฎเบฑเบเปเบเปเบเบต.
เบซเบกเบฒเบเปเบซเบเบเบตเปเบชเปเบฒเบเบฑเบ: เบเบปเบงเบขเปเบฒเบ, เบเปเบฒเบเบเบงเบเปเบเปเบฎเบนเบเบเบฒเบ - Amazon Linux AMI 2018.03.0, เบกเบฑเบเบกเบตเบเบฒเบเบเบฑเปเบเบเปเบฒเบซเบเปเบญเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบเบตเบเบเบปเบง Kinesis Agent เบขเปเบฒเบเปเบงเบงเบฒ.
เปเบเบเบตเปเบเปเบฅเบดเบเบฒเบ EC2, เบชเปเบฒเบเปเบเบทเปเบญเบ virtual เปเบซเบกเป, เปเบฅเบทเบญเบ AMI เบเบตเปเบเปเบญเบเบเบฒเบเบเปเบงเบเบเบฐเปเบเบ t2.micro, เปเบเบดเปเบเบฅเบงเบกเบขเบนเปเปเบ Free Tier:
เปเบเบทเปเบญเปเบซเปเปเบเบทเปเบญเบ virtual เบเบตเปเบชเปเบฒเบเบเบถเปเบเปเบซเบกเปเบชเบฒเบกเบฒเบเบเบปเบงเบเบฑเบเบเบฑเบเบเบฒเบเบเปเบฅเบดเบเบฒเบ Kinesis เปเบเป, เบกเบฑเบเบเปเบญเบเปเบเปเบฎเบฑเบเบเบฒเบเปเบซเปเบชเบดเบเบเบตเปเบเบฐเปเบฎเบฑเบเปเบเบงเบเบฑเปเบ. เบงเบดเบเบตเบเบตเปเบเบตเบเบตเปเบชเบธเบเบเบตเปเบเบฐเปเบฎเบฑเบเบเบทเบเบฒเบเบกเบญเบเบซเบกเบฒเบเบเบปเบเบเบฒเบ IAM. เบเบฑเปเบเบเบฑเปเบ, เปเบเบเบฑเปเบเบเบญเบเบเบต 3: Configure Instance Details เบซเบเปเบฒเบเป, เบเปเบฒเบเบเบงเบเปเบฅเบทเบญเบ เบชเปเบฒเบเบเบปเบเบเบฒเบ IAM เปเปเป:
เบเบฒเบเบชเปเบฒเบเบเบปเบเบเบฒเบ IAM เบชเปเบฒเบฅเบฑเบ EC2
เปเบเบเปเบญเบเบขเปเบฝเบกเบเบตเปเปเบเบตเบ, เปเบฅเบทเบญเบเปเบญเบปเบฒเบงเปเบฒเบเบงเบเปเบฎเบปเบฒเบเปเบฒเบฅเบฑเบเบชเปเบฒเบเบเบปเบเบเบฒเบเปเบซเบกเปเบชเปเบฒเบฅเบฑเบ EC2 เปเบฅเบฐเปเบเบเบตเปเบเบฒเบเบเบฒเบเบญเบฐเบเบธเบเบฒเบ:
เบเบฒเบเบเปเบฒเปเบเปเบเบปเบงเบขเปเบฒเบเบเบฒเบเบเบถเบเบญเบปเบเบฎเบปเบก, เบเบงเบเปเบฎเบปเบฒเบเปเปเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบเบปเปเบฒเปเบเปเบเบเบงเบฒเบกเบชเบฑเบเบชเบปเบเบเบฑเบเบซเบกเบปเบเบเบญเบเบเบฒเบเบเบฑเปเบเบเปเบฒ granular เบเบญเบเบชเบดเบเบเบดเบเบญเบเบเบฑเบเบเบฐเบเบฒเบเบญเบ, เบเบฑเปเบเบเบฑเปเบเบเบงเบเปเบฎเบปเบฒเบเบฐเปเบฅเบทเบญเบเปเบญเบปเบฒเบเบฐเปเบเบเบฒเบ pre-configured เปเบเบ Amazon: AmazonKinesisFullAccess เปเบฅเบฐ CloudWatchFullAccess.
เปเบซเปเบเบทเปเบเบตเปเบกเบตเบเบงเบฒเบกเบซเบกเบฒเบเบชเปเบฒเบฅเบฑเบเบเบปเบเบเบฒเบเบเบตเป, เบเบปเบงเบขเปเบฒเบ: EC2-KinesisStreams-FullAccess. เบเบปเบเปเบเปเบฎเบฑเบเบเบงเบเบเบฐเบเบทเบเบฑเบเบเบฑเบเบเบฒเบเบชเบฐเปเบเบเบขเบนเปเปเบเบฎเบนเบเบเปเบฒเบเบฅเบธเปเบกเบเบตเป:
เบซเบผเบฑเบเบเบฒเบเบชเปเบฒเบเบเบปเบเบเบฒเบเปเบซเบกเปเบเบตเป, เบขเปเบฒเบฅเบทเบกเบเบดเบเบกเบฑเบเปเบชเปเบเบฑเบเปเบเบทเปเบญเบ virtual เบเบตเปเบชเปเบฒเบเบเบถเปเบ:
เบเบงเบเปเบฎเบปเบฒเบเปเปเบเปเบฝเบเปเบเบเบญเบฑเบเบญเบทเปเบเปเบเปเปเบฒเบเปเบเบตเป เปเบฅเบฐเบเปเบฒเบเปเบเปเปเบฒเบเปเบเปเปเปเบ.
เบเบฒเบเบเบฑเปเบเบเปเบฒเบฎเบฒเบเบเบดเบเบชเบฒเบกเบฒเบเบเบทเบเบเบฐเปเบงเปเปเบเบฑเบเบเปเบฒเปเบฅเบตเปเบกเบเบปเปเบ, เปเบเบฑเปเบเบเบฝเบงเบเบฑเบเบเบฑเบเปเบเบฑเบ (เปเบเบดเบเปเบกเปเบเบงเปเบฒเบกเบฑเบเปเบเบฑเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบตเปเบเบตเบเบตเปเบเบฐเปเบเปเปเบเบฑเบ, เบขเปเบฒเบเบซเบเปเบญเบเปเบซเปเบเบทเปเบเบปเบงเบขเปเบฒเบเปเบฅเบฐเบเบตเปเบเบญเบเบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบก).
เปเบเบเบฑเบเบเบธเบเบฑเบเบเบงเบเปเบฎเบปเบฒเบขเบนเปเปเบเบเบฑเปเบเบเบญเบเบเบต 6: เบเบฑเปเบเบเปเบฒเปเบเบเบเบธเปเบกเบเบงเบฒเบกเบเบญเบเปเบ, เบเปเบญเบเบเบตเปเบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเบชเปเบฒเบเปเบซเบกเปเบซเบผเบทเบฅเบฐเบเบธเบเบธเปเบกเบเบงเบฒเบกเบเบญเบเปเบเบเบตเปเบกเบตเบขเบนเปเบเบญเบเบเปเบฒเบ, เปเบเบดเปเบเบเปเบงเบเปเบซเปเบเปเบฒเบเบชเบฒเบกเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเปเบฒเบ ssh (เบเบญเบ 22) เบเบฑเบ instance. เปเบฅเบทเบญเบเปเบซเบผเปเบ -> IP เบเบญเบเบเปเบญเบเบขเบนเปเบเบตเปเบเบฑเปเบเปเบฅเบฐเบเปเบฒเบเบชเบฒเบกเบฒเบเปเบเบตเบเบเบปเบงเบเบปเบงเบขเปเบฒเบ.
เบเบฑเบเบเบตเบเบตเปเบกเบฑเบเบชเบฐเบซเบผเบฑเบเบเบฑเบเบชเบฐเบเบฒเบเบฐเบเบฒเบเปเบฅเปเบ, เบเปเบฒเบเบชเบฒเบกเบฒเบเบเบฐเบเบฒเบเบฒเบกเปเบเบทเปเบญเบกเบเปเปเบเบฑเบเบกเบฑเบเบเปเบฒเบ ssh.
เปเบเบทเปเบญเปเบซเปเบชเบฒเบกเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเบฑเบ Kinesis Agent เปเบเป, เบซเบผเบฑเบเบเบฒเบเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเบฑเบเปเบเบทเปเบญเบเบเบฑเบเบขเปเบฒเบเบชเปเบฒเปเบฅเบฑเบเบเบปเบ, เบเปเบฒเบเบเปเบญเบเปเบชเปเบเปเบฒเบชเบฑเปเบเบเปเปเปเบเบเบตเปเปเบ terminal:
sudo yum -y update
sudo yum install -y python36 python36-pip
sudo /usr/bin/pip-3.6 install --upgrade pip
sudo yum install -y aws-kinesis-agent
เบกเบฒเบชเปเบฒเบเปเบเบเปเบเบตเปเบเบทเปเบญเบเบฑเบเบเบถเบเบเบณเบเบญเบ API:
sudo mkdir /var/log/airline_tickets
เบเปเบญเบเบเบตเปเบเบฐเปเบฅเบตเปเบกเบเบปเบงเปเบเบ, เบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบเปเบเปเบฒเบเบปเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบญเบเบกเบฑเบ:
sudo vim /etc/aws-kinesis/agent.json
เปเบเบทเปเบญเปเบเบเบญเบเปเบเบฅเป agent.json เบเบงเบเบเบฐเปเบเบฑเบเปเบเบเบเบตเป:
{
"cloudwatch.emitMetrics": true,
"kinesis.endpoint": "",
"firehose.endpoint": "",
"flows": [
{
"filePattern": "/var/log/airline_tickets/*log",
"kinesisStream": "airline_tickets",
"partitionKeyOption": "RANDOM",
"dataProcessingOptions": [
{
"optionName": "CSVTOJSON",
"customFieldNames": ["cost","trip_class","show_to_affiliates",
"return_date","origin","number_of_changes","gate","found_at",
"duration","distance","destination","depart_date","actual","record_id"]
}
]
}
]
}
เบเบฑเปเบเบเบตเปเปเบซเบฑเบเปเบเปเบเบฒเบเปเบเบฅเปเบเบฒเบเบเบฑเปเบเบเปเบฒ, เบเบปเบงเปเบเบเบเบฐเบเบงเบเบชเบญเบเปเบเบฅเปเบเบตเปเบกเบตเบเบฒเบกเบชเบฐเบเบธเบ .log เปเบเปเบเปเบฅเบเบฐเบเปเบฅเบต /var/log/airline_tickets/, เบงเบดเปเบเบฒเบฐเบเบงเบเบกเบฑเบ เปเบฅเบฐเปเบญเบเบเบงเบเบกเบฑเบเปเบเบเบตเปเบชเบฐเบเบฃเบตเบก airline_tickets.
เบเบงเบเปเบฎเบปเบฒเบฃเบตเบชเบฐเบเบฒเบเบเบฒเบเบเปเบฅเบดเบเบฒเบ เปเบฅเบฐเปเบซเปเปเบเปเปเบเบงเปเบฒเบกเบฑเบเปเบฎเบฑเบเบงเบฝเบเปเบฅเปเบง:
sudo service aws-kinesis-agent restart
เบเบญเบเบเบตเปเปเบซเปเบเบฒเบงเปเบซเบผเบเบชเบฐเบเบฃเบดเบ Python เบเบตเปเบเบฐเบฎเปเบญเบเบเปเบเปเปเบกเบนเบเบเบฒเบ API:
REPO_PATH=https://raw.githubusercontent.com/igorgorbenko/aviasales_kinesis/master/producer
wget $REPO_PATH/api_caller.py -P /home/ec2-user/
wget $REPO_PATH/requirements.txt -P /home/ec2-user/
sudo chmod a+x /home/ec2-user/api_caller.py
sudo /usr/local/bin/pip3 install -r /home/ec2-user/requirements.txt
เบชเบฐเบเบฃเบดเบ api_caller.py เบฎเปเบญเบเบเปเบเปเปเบกเบนเบเบเบฒเบ Aviasales เปเบฅเบฐเบเบฑเบเบเบถเบเบเบฒเบเบเบญเบเบฎเบฑเบเบเบตเปเปเบเปเบฎเบฑเบเปเบงเปเปเบเปเบเปเบฅเบเบฐเบเปเบฅเบตเบเบตเปเบเบปเบงเปเบเบ Kinesis เบชเบฐเปเบเบ. เบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบญเบเบชเบฐเบเบดเบเบเบตเปเปเบกเปเบเบเปเบญเบเบเปเบฒเบเบกเบฒเบเบเบฐเบเบฒเบ, เบกเบตเบซเปเบญเบเบฎเบฝเบ TicketsApi, เบกเบฑเบเบญเบฐเบเบธเบเบฒเบเปเบซเปเบเปเบฒเบเบชเบฒเบกเบฒเบเบเบถเบ API เปเบเป asynchronously. เบเบงเบเปเบฎเบปเบฒเบชเบปเปเบเบชเปเบงเบเบซเบปเบงเบเบตเปเบกเบต token เปเบฅเบฐเบฎเปเบญเบเบเปเบเบฒเบฅเบฒเบกเบดเปเบเบตเปเบเบซเบฒเบเบฑเปเบเบฎเบฝเบเบเบตเป:
class TicketsApi:
"""Api caller class."""
def __init__(self, headers):
"""Init method."""
self.base_url = BASE_URL
self.headers = headers
async def get_data(self, data):
"""Get the data from API query."""
response_json = {}
async with ClientSession(headers=self.headers) as session:
try:
response = await session.get(self.base_url, data=data)
response.raise_for_status()
LOGGER.info('Response status %s: %s',
self.base_url, response.status)
response_json = await response.json()
except HTTPError as http_err:
LOGGER.error('Oops! HTTP error occurred: %s', str(http_err))
except Exception as err:
LOGGER.error('Oops! An error ocurred: %s', str(err))
return response_json
def prepare_request(api_token):
"""Return the headers and query fot the API request."""
headers = {'X-Access-Token': api_token,
'Accept-Encoding': 'gzip'}
data = FormData()
data.add_field('currency', CURRENCY)
data.add_field('origin', ORIGIN)
data.add_field('destination', DESTINATION)
data.add_field('show_to_affiliates', SHOW_TO_AFFILIATES)
data.add_field('trip_duration', TRIP_DURATION)
return headers, data
async def main():
"""Get run the code."""
if len(sys.argv) != 2:
print('Usage: api_caller.py <your_api_token>')
sys.exit(1)
return
api_token = sys.argv[1]
headers, data = prepare_request(api_token)
api = TicketsApi(headers)
response = await api.get_data(data)
if response.get('success', None):
LOGGER.info('API has returned %s items', len(response['data']))
try:
count_rows = log_maker(response)
LOGGER.info('%s rows have been saved into %s',
count_rows,
TARGET_FILE)
except Exception as e:
LOGGER.error('Oops! Request result was not saved to file. %s',
str(e))
else:
LOGGER.error('Oops! API request was unsuccessful %s!', response)
เปเบเบทเปเบญเบเบปเบเบชเบญเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบตเปเบเบทเบเบเปเบญเบ เปเบฅเบฐเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเบญเบเบเบปเบงเปเบเบ, เปเบซเปเบฅเบญเบเปเบฅเปเบเบชเบฐเบเบฃเบดเบ api_caller.py:
sudo ./api_caller.py TOKEN
เปเบฅเบฐเบเบงเบเปเบฎเบปเบฒเปเบเบดเปเบเบเบปเบเบเบญเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบขเบนเปเปเบเบเบฑเบเบเบถเบเบเบญเบเบเบปเบงเปเบเบ เปเบฅเบฐเปเบเปเบเบเบเบฒเบเบเบดเบเบเบฒเบกเปเบเบเบฐเปเบชเบเปเปเบกเบนเบ airline_tickets:
tail -f /var/log/aws-kinesis-agent/aws-kinesis-agent.log
เบเบฑเปเบเบเบตเปเบเปเบฒเบเบชเบฒเบกเบฒเบเปเบซเบฑเบเปเบเป, เบเบธเบเบชเบดเปเบเบเบธเบเบขเปเบฒเบเปเบฎเบฑเบเบงเบฝเบเปเบฅเบฐ Kinesis Agent เบชเบปเปเบเบเปเปเบกเบนเบเปเบเบชเบนเปเบเบฒเบเบเปเบฒเบเบเบญเบเบขเปเบฒเบเบชเปเบฒเปเบฅเบฑเบเบเบปเบ. เปเบเบเบฑเบเบเบธเบเบฑเบเปเบซเปเบเบงเบเปเบฎเบปเบฒ configure เบเบนเปเบเปเบฅเบดเปเบเบ.
เบเบฒเบเบเบฑเปเบเบเปเบฒ Kinesis Data Analytics
เบเปเปเบซเปเบเปเบฒเบงเปเบเบชเบนเปเบญเบปเบเบเบฐเบเบญเบเบชเบนเบเบเบฒเบเบเบญเบเบฅเบฐเบเบปเบเบเบฑเบเบซเบกเบปเบ - เบชเปเบฒเบเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบเปเบซเบกเปเปเบ Kinesis Data Analytics เบเบตเปเบกเบตเบเบทเปเบงเปเบฒ kinesis_analytics_airlines_app:
Kinesis Data Analytics เบเปเบงเบเปเบซเปเบเปเบฒเบเบชเบฒเบกเบฒเบเบเบฐเบเบดเบเบฑเบเบเบฒเบเบงเบดเปเบเบฒเบฐเบเปเปเบกเบนเบเปเบเปเบงเบฅเบฒเบเบดเบเบเบฒเบ Kinesis Stream เปเบเบเปเบเปเบเบฒเบชเบฒ SQL. เบกเบฑเบโเปเบเบฑเบโเบเบฒเบโเบเปโเบฅเบดโเบเบฒเบโเบเบฐโเบซเบเบฒเบโเบเบปเบงโเบขเปเบฒเบโเปเบเบฑเบกโเบเบตเป (เบเปเปโเบเบท Kinesis Streamsโ) เบเบตเปโ:
- เบญเบฐเบเบธเบเบฒเบเปเบซเปเบเปเบฒเบเบชเปเบฒเบเบชเบฒเบเบเปเปเบฒเปเบซเบกเป (Output Stream) เปเบเบเบญเบตเบเปเบชเปเบเบฒเบเบฎเปเบญเบเบเปเบเปเปเบกเบนเบเปเบซเบผเปเบ;
- เบชเบฐเบซเบเบญเบเบเบฒเบเบเปเบฒเบเบเบญเบเบเบตเปเบกเบตเบเปเปเบเบดเบเบเบฒเบเบเบตเปเปเบเบตเบเบเบถเปเบเปเบเบเบฐเบเบฐเบเบตเปเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบเบเปเบฒเบฅเบฑเบเปเบฎเบฑเบเบงเบฝเบ (Error Stream);
- เบชเบฒเบกเบฒเบเบเปเบฒเบเบปเบเบฅเบฐเบเบปเบเบเบฒเบเบเปเบญเบเบเปเปเบกเบนเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบ (เบกเบฑเบเบชเบฒเบกเบฒเบเบเบทเบเบเปเบฒเบเบปเบเบเบทเบเปเบซเบกเปเบเปเบงเบเบเบปเบเปเบญเบเบเปเบฒเบเปเบฒเปเบเบฑเบ).
เบเบตเปเบเปเปเปเบกเปเบเบเบฒเบเบเปเบฅเบดเบเบฒเบเบเบตเปเบกเบตเบฅเบฒเบเบฒเบเบทเบ - 0.11 USD เบเปเปเบเบปเปเบงเปเบกเบเบเบญเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบ, เบเบฑเปเบเบเบฑเปเบเบเปเบฒเบเบเบงเบเปเบเปเบกเบฑเบเบขเปเบฒเบเบฅเบฐเบกเบฑเบเบฅเบฐเบงเบฑเบเปเบฅเบฐเบฅเบถเบเบกเบฑเบเปเบกเบทเปเบญเบเปเบฒเบเบชเปเบฒเปเบฅเบฑเบ.
เปเบซเปเปเบเบทเปเบญเบกเบเปเปเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบเบเบฑเบเปเบซเบผเปเบเบเปเปเบกเบนเบ:
เปเบฅเบทเบญเบเบเบฐเปเบชเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเบฐเปเบเบทเปเบญเบกเบเปเป (airline_tickets):
เบเปเปเปเบ, เบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบเปเปเบเบเบเบปเบเบเบฒเบ IAM เปเบซเบกเปเปเบเบทเปเบญเปเบซเปเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบเบชเบฒเบกเบฒเบเบญเปเบฒเบเบเบฒเบเบชเบฐเบเบฃเบตเบกเปเบฅเบฐเบเบฝเบเปเบชเปเบชเบฐเบเบฃเบตเบกเปเบเป. เปเบเบทเปเบญเปเบฎเบฑเบเบชเบดเปเบเบเบตเป, เบกเบฑเบเบเบฝเบเบเปเบเบตเปเบเบฐเบเปเปเบเปเบฝเบเปเบเบเบชเบดเปเบเปเบเปเบเบเบฅเบฑเบญเบเบเบฒเบเบญเบฐเบเบธเบเบฒเบเบเบฒเบเปเบเบปเปเบฒเปเบเบดเบ:
เบเบญเบเบเบตเปเบเปเปเบซเปเบเบปเปเบเบเบปเบเปเบเบเบเบฑเบเบเปเปเบกเบนเบเปเบเบเบฐเปเบช; เปเบเบทเปเบญเปเบฎเบฑเบเบชเบดเปเบเบเบตเป, เปเบซเปเบเบฅเบดเบเปเบชเปเบเบธเปเบก "Discover schema". เบเบฑเปเบเบเบฑเปเบ, เบเบปเบเบเบฒเบ IAM เบเบฐเบเบทเบเบเบฑเบเบเบธเบ (เบญเบฑเบเปเปเปเบเบฐเบเบทเบเบชเปเบฒเบ) เปเบฅเบฐเบเบฒเบเบเบงเบเบซเบฒ schema เบเบฐเบเบทเบเปเบเบตเบเบเบปเบงเบเบฒเบเบเปเปเบกเบนเบเบเบตเปเบกเบฒเบฎเบญเบเปเบฅเปเบงเปเบเบเบฐเปเบช:
เบเบญเบเบเบตเปเบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบเบเบตเปเบเบฑเบเบเบฒเบเบดเบเบฒเบ SQL. เปเบกเบทเปเบญโเบเปเบฒเบโเบเบฅเบดเบโเปเบชเปโเบเบธเปเบกโเบเบตเปโ, เบเปเบญเบโเบขเปเบฝเบกโเบเบฐโเบเบฒโเบเบปเบโเบเบถเปเบโเบเปโเปเบซเปโเบเปเบฒเบโเปเบเบตเบโเบเปเบฒโเบฎเปเบญเบโเบชเบฐโเบซเบกเบฑเบ - เปเบฅเบทเบญเบโเปเบญเบปเบฒโเบชเบดเปเบโเบเบตเปโเบเปเบฒเบโเบเปเบญเบโเบเบฒเบโเบเบตเปโเบเบฐโเปเบเบตเบโ:
เปเบชเปเบเปเบฒเบเบฒเบกเบเปเบฒเบเปเบเปเปเปเบเบเบตเปเปเบเบปเปเบฒเปเบเปเบเบเปเบญเบเบขเปเบฝเบกเบเบฑเบเบเบฒเบเบดเบเบฒเบ SQL เปเบฅเบฐเบเบฅเบดเบเบเบฑเบเบเบถเบเปเบฅเบฐเบเปเบฒเปเบเบตเบเบเบฒเบ SQL:
CREATE OR REPLACE STREAM "DESTINATION_SQL_STREAM" ("cost" DOUBLE, "gate" VARCHAR(16));
CREATE OR REPLACE PUMP "STREAM_PUMP" AS INSERT INTO "DESTINATION_SQL_STREAM"
SELECT STREAM "cost", "gate"
FROM "SOURCE_SQL_STREAM_001"
WHERE "cost" < 5000
and "gate" = 'Aeroflot';
เปเบเบเบฒเบเบเปเปเบกเบนเบเบเบตเปเบเปเบฝเบงเบเปเบญเบ, เบเปเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเบฑเบเบเบฒเบเบฐเบฅเบฒเบเปเบเบเปเบเปเบเปเบฒเบเบฐเปเบซเบผเบเบเบตเป INSERT เปเบเบทเปเบญเปเบเบตเปเบกเบเบฑเบเบเบถเบเปเบฅเบฐเบเปเบฒเบชเบฑเปเบ SELECT เปเบเบทเปเบญเบชเบญเบเบเบฒเบกเบเปเปเบกเบนเบ. เปเบ Amazon Kinesis Data Analytics, เบเปเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเบฑเบเบชเบฐเบเบฃเบตเบก (เบชเบฐเบเบฃเบตเบก) เปเบฅเบฐเบเปเบณ (PUMPs)โเบเบณเบฎเปเบญเบเบเปเบเบฒเบเปเบเบเบขเปเบฒเบเบเปเปเปเบเบทเปเบญเบเบเบตเปเปเบชเปเบเปเปเบกเบนเบเบเบฒเบเบเบฐเปเบชเปเบถเปเบเปเบเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบเปเบเบปเปเบฒเปเบเปเบเบเบฐเปเบชเบญเบทเปเบ.
เบเปเบฒเบเบฒเบก SQL เบเบตเปเบเปเบฒเบชเบฐเปเบซเบเบตเบเปเบฒเบเปเบเบดเบเบเบญเบเบซเบฒเบเบปเปเบง Aeroflot เปเบเบฅเบฒเบเบฒเบเปเปเบฒเบเบงเปเบฒเบซเปเบฒเบเบฑเบเบฎเบนเปเบเบตเบ. เบเบฑเบเบเบถเบเบเบฑเบเปเบปเบเบเบตเปเบเบปเบเบเบฑเบเปเบเบทเปเบญเบเปเบเปเบซเบผเบปเปเบฒเบเบตเปเบเบฐเบเบทเบเบงเบฒเบเปเบงเปเปเบเบชเบฐเบเบฃเบตเบก DESTINATION_SQL_STREAM.
เปเบเบเบฅเบฑเบญเบเบเบฒเบเบเบฒเบ, เปเบฅเบทเบญเบ special_stream stream, เปเบฅเบฐเปเบเบเบทเปเบเบฒเบเบเปเบฒเบเบเบญเบเปเบเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบ DESTINATION_SQL_STREAM เปเบเบเปเบฅเบทเปเบญเบเบฅเบปเบ:
เบเบปเบเปเบเปเบฎเบฑเบเบเบญเบเบเบฒเบเบซเบกเบนเบเปเบเปเบเบฑเบเบซเบกเบปเบเบเบงเบเบเบฐเปเบเบฑเบเบเบฒเบเบชเบดเปเบเบเบฒเบเบขเปเบฒเบเบเบตเปเบเปเบฒเบเบเบทเบเบฑเบเบเบฑเบเบฎเบนเบเบเปเบฒเบเบฅเบธเปเบกเบเบตเป:
เบเบฒเบเบชเปเบฒเบ เปเบฅเบฐเบชเบฐเปเบฑเบเปเบเปเบซเบปเบงเบเปเป SNS
เปเบเบเบตเปเบเปเบฅเบดเบเบฒเบเบเบฒเบเปเบเปเบเปเบเบทเบญเบเปเบเบเบเปเบฒเบเป เปเบฅเบฐเบชเปเบฒเบเบซเบปเบงเบเปเปเปเปเปเบขเบนเปเบเบตเปเบเบฑเปเบเบเปเบงเบเบเบทเปเบชเบฒเบเบเบฒเบเบเบดเบ:
เบเบญเบเบซเบปเบงเบเปเปเบเบตเปเปเบฅเบฐเบเบตเปเบเบญเบเบซเบกเบฒเบเปเบฅเบเปเบเบฅเบฐเบชเบฑเบเบกเบทเบเบทเบเบตเปเบเบฐเบชเบปเปเบเบเบฒเบเปเบเปเบเปเบเบทเบญเบ SMS:
เบชเปเบฒเบเบเบฒเบเบฐเบฅเบฒเบเปเบ DynamoDB
เปเบเบทเปเบญเปเบเบฑเบเบเปเปเบกเบนเบเบเบดเบเบเบฒเบเบเบฒเบเบเปเบฒเบเบเบญเบ airline_tickets เบเบญเบเบเบงเบเปเบเบปเบฒ, เปเบซเปเบชเปเบฒเบเบเบฒเบเบฐเบฅเบฒเบเปเบ DynamoDB เบเบตเปเบกเบตเบเบทเปเบเบฝเบงเบเบฑเบ. เบเบงเบเปเบฎเบปเบฒเบเบฐเปเบเป record_id เปเบเบฑเบเบฅเบฐเบซเบฑเบเบซเบผเบฑเบ:
เบเบฒเบเบชเปเบฒเบเบเบปเบงเปเบเบฑเบเบฅเบงเบเบฅเบงเบกเบเบฑเบเบเบฑเบ lambda
เบกเบฒเบชเปเบฒเบเบเบฑเบเบเบฑเบ lambda เบเบตเปเปเบญเบตเปเบเบงเปเบฒ Collector, เปเบเบดเปเบเปเปเบฒเบงเบฝเบเบเบญเบเบกเบฑเบเบเบฐเปเบเบฑเบเปเบเบเบชเบณเบซเบผเบงเบ airline_tickets stream เปเบฅเบฐ เบเปเบฒเบเบปเบเบเบฑเบเบเบถเบเปเปเปเบขเบนเปเบเบตเปเบเบฑเปเบ, เปเบชเปเบเบฑเบเบเบถเบเปเบซเบผเบปเปเบฒเบเบตเปเปเบชเปเปเบเบเบฒเบเบฐเบฅเบฒเบ DynamoDB. เปเบเปเบเบญเบ, เบเบญเบเปเบซเบเบทเบญเบเบฒเบเบชเบดเบเบเบดเปเบฅเบตเปเบกเบเบปเปเบ, lambda เบเบตเปเบเปเบญเบเบกเบตเบเบฒเบเปเบเบปเปเบฒเปเบเบดเบเบเบฒเบเบญเปเบฒเบเบเปเปเบกเบนเบ Kinesis เปเบฅเบฐเบเบฒเบเปเบเบปเปเบฒเปเบเบดเบเบเบฒเบเบเบฝเบเปเบเบปเปเบฒ DynamoDB.
เบเบฒเบเบชเปเบฒเบเบเบปเบเบเบฒเบ IAM เบชเปเบฒเบฅเบฑเบเบเบฑเบเบเบฑเบ lambda เบเบญเบเบเบนเปเปเบเบฑเบ
เบเปเบฒเบญเบดเบ, เปเบซเปเบชเปเบฒเบเบเบปเบเบเบฒเบ IAM เปเบซเบกเปเบชเปเบฒเบฅเบฑเบ lambda เบเบตเปเบกเบตเบเบทเปเบงเปเบฒ Lambda-TicketsProcessingRole:
เบเบปเบงเบขเปเบฒเบเบเบฒเบเบเบปเบเบชเบญเบ, เบเบฐเปเบเบเบฒเบ AmazonKinesisReadOnlyAccess เปเบฅเบฐ AmazonDynamoDBFullAccess เบเบตเปเบเปเบฒเบเบปเบเปเบงเปเบเปเบญเบเปเบกเปเบเบเปเบญเบเบเปเบฒเบเปเบซเบกเบฒเบฐเบชเบปเบก, เบเบฑเปเบเบเบตเปเบชเบฐเปเบเบเบขเบนเปเปเบเบฎเบนเบเบเปเบฒเบเบฅเบธเปเบกเบเบตเป:
lambda เบเบตเปเบเบงเบเบเบฐเบเบทเบเปเบเบตเบเบเบปเบงเปเบเบ trigger เบเบฒเบ Kinesis เปเบกเบทเปเบญเบฅเบฒเบเบเบฒเบเปเบซเบกเปเปเบเบปเปเบฒเปเบเปเบ airline_stream, เบเบฑเปเบเบเบฑเปเบเบเบงเบเปเบฎเบปเบฒเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบเบตเปเบก trigger เปเบซเบกเป:
เบชเบดเปเบเบเบตเปเบเบฑเบเปเบซเบผเบทเบญเปเบกเปเบเปเบชเปเบฅเบฐเบซเบฑเบเปเบฅเบฐเบเบฑเบเบเบถเบ lambda.
"""Parsing the stream and inserting into the DynamoDB table."""
import base64
import json
import boto3
from decimal import Decimal
DYNAMO_DB = boto3.resource('dynamodb')
TABLE_NAME = 'airline_tickets'
class TicketsParser:
"""Parsing info from the Stream."""
def __init__(self, table_name, records):
"""Init method."""
self.table = DYNAMO_DB.Table(table_name)
self.json_data = TicketsParser.get_json_data(records)
@staticmethod
def get_json_data(records):
"""Return deserialized data from the stream."""
decoded_record_data = ([base64.b64decode(record['kinesis']['data'])
for record in records])
json_data = ([json.loads(decoded_record)
for decoded_record in decoded_record_data])
return json_data
@staticmethod
def get_item_from_json(json_item):
"""Pre-process the json data."""
new_item = {
'record_id': json_item.get('record_id'),
'cost': Decimal(json_item.get('cost')),
'trip_class': json_item.get('trip_class'),
'show_to_affiliates': json_item.get('show_to_affiliates'),
'origin': json_item.get('origin'),
'number_of_changes': int(json_item.get('number_of_changes')),
'gate': json_item.get('gate'),
'found_at': json_item.get('found_at'),
'duration': int(json_item.get('duration')),
'distance': int(json_item.get('distance')),
'destination': json_item.get('destination'),
'depart_date': json_item.get('depart_date'),
'actual': json_item.get('actual')
}
return new_item
def run(self):
"""Batch insert into the table."""
with self.table.batch_writer() as batch_writer:
for item in self.json_data:
dynamodb_item = TicketsParser.get_item_from_json(item)
batch_writer.put_item(dynamodb_item)
print('Has been added ', len(self.json_data), 'items')
def lambda_handler(event, context):
"""Parse the stream and insert into the DynamoDB table."""
print('Got event:', event)
parser = TicketsParser(TABLE_NAME, event['Records'])
parser.run()
เบเบฒเบเบชเปเบฒเบเบเบปเบงเปเบเปเบเปเบเบทเบญเบเบเบฑเบเบเบฑเบ lambda
เบเบฑเบเบเบฑเบ lambda เบเบตเบชเบญเบ, เปเบเบดเปเบเบเบฐเบเบดเบเบเบฒเบกเบเบฒเบเบเปเบฒเบเบเบญเบเบเบตเบชเบญเบ (special_stream) เปเบฅเบฐเบชเบปเปเบเบเบฒเบเปเบเปเบเปเบเบทเบญเบเปเบเบซเบฒ SNS, เบเบทเบเบชเปเบฒเบเบเบถเปเบเปเบเบฅเบฑเบเบชเบฐเบเบฐเบเบตเปเบเปเบฒเบเบเบทเบเบฑเบ. เบเบฑเปเบเบเบฑเปเบ, lambda เบเบตเปเบเปเบญเบเบกเบตเบเบฒเบเปเบเบปเปเบฒเปเบเบดเบเบเบฒเบเบญเปเบฒเบเบเบฒเบ Kinesis เปเบฅเบฐเบชเบปเปเบเบเปเปเบเบงเบฒเบกเปเบเบซเบฒเบซเบปเบงเบเปเป SNS เบเบตเปเปเบซเป, เปเบเบดเปเบเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเบฐเบเบทเบเบชเบปเปเบเปเบเบเบเปเบฅเบดเบเบฒเบ SNS เปเบเบซเบฒเบเบนเปเบเบญเบเบเบฑเบเบซเบกเบปเบเบเบญเบเบซเบปเบงเบเปเปเบเบตเป (เบญเบตเปเบกเบง, SMS, เปเบฅเบฐเบญเบทเปเบเป).
เบเบฒเบเบชเปเบฒเบเบเบปเบเบเบฒเบ IAM
เบเปเบฒเบญเบดเบ, เบเบงเบเปเบฎเบปเบฒเบชเปเบฒเบเบเบปเบเบเบฒเบ IAM Lambda-KinesisAlarm เบชเปเบฒเบฅเบฑเบ lambda เบเบตเป, เปเบฅเบฐเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบกเบญเบเบซเบกเบฒเบเบเบปเบเบเบฒเบเบเบตเปเปเบซเปเบเบฑเบ lambda alarm_notifier เบเบตเปเบเบทเบเบชเปเบฒเบเบเบทเปเบ:
lambda เบเบตเปเบเบงเบเปเบฎเบฑเบเบงเบฝเบเบขเบนเปเปเบ trigger เบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบฑเบเบเบถเบเปเบซเบกเปเปเบเบทเปเบญเปเบเบปเปเบฒเปเบเปเบ special_stream, เบเบฑเปเบเบเบฑเปเบเบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบเป configure trigger เปเบเบฅเบฑเบเบชเบฐเบเบฐเบเบฝเบงเบเบฑเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเปเบเปเปเบฎเบฑเบเบชเปเบฒเบฅเบฑเบ Collector lambda.
เปเบเบทเปเบญเปเบฎเบฑเบเปเบซเปเบกเบฑเบเบเปเบฒเบเบเปเปเบเบฒเบเบเบฑเปเบเบเปเบฒ lambda เบเบตเป, เบเปเปเบเบฐเบเปเบฒเบเบปเบงเปเบเบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบกเปเบซเบกเป - TOPIC_ARN, เบเปเบญเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบงเบฒเบ ANR (Amazon Recourse Names) เบเบญเบเบซเบปเบงเบเปเปเบชเบฒเบเบเบฒเบเบเบดเบ:
เปเบฅเบฐเปเบชเปเบฅเบฐเบซเบฑเบ lambda, เบกเบฑเบเบเปเปเบชเบฑเบเบชเบปเบเปเบฅเบตเบ:
import boto3
import base64
import os
SNS_CLIENT = boto3.client('sns')
TOPIC_ARN = os.environ['TOPIC_ARN']
def lambda_handler(event, context):
try:
SNS_CLIENT.publish(TopicArn=TOPIC_ARN,
Message='Hi! I have found an interesting stuff!',
Subject='Airline tickets alarm')
print('Alarm message has been successfully delivered')
except Exception as err:
print('Delivery failure', str(err))
เบกเบฑเบเปเบเบดเปเบเบเบทเบงเปเบฒเบเบตเปเปเบกเปเบเบเปเบญเบเบเบตเปเบเบฒเบเบเบฑเปเบเบเปเบฒเบฅเบฐเบเบปเบเบเบนเปเบกเบทเปเบกเปเบเบชเปเบฒเปเบฅเบฑเบ. เบเบฑเบเบซเบกเบปเบเบเบตเปเบเบฑเบเปเบซเบผเบทเบญเปเบกเปเบเบเบฒเบเบเบปเบเบชเบญเบเปเบฅเบฐเปเบซเปเปเบเปเปเบเบงเปเบฒเบเบงเบเปเบฎเบปเบฒเปเบเป configure เบเบธเบเบชเบดเปเบเบเบธเบเบขเปเบฒเบเบขเปเบฒเบเบเบทเบเบเปเบญเบ.
เบเบณเปเบเปเบเบฒเบเบฅเบฐเบซเบฑเบ Terraform
เบเบฒเบเบเบฐเบเบฝเบกเบเบตเปเบเปเบฒเปเบเบฑเบ
เบเปเบฒเบเบชเบฒเบกเบฒเบเบเบฒเบงเปเบซเบฅเบเบเบฒเบเปเบเบเบขเบฒเบ
เบงเบดเบเบตเบเบฒเบเปเบฅเบตเปเบกเบเบปเปเบ
เบฅเบฐเบซเบฑเบเปเบเบฑเบกเบเบญเบเปเบเบเบเบฒเบเปเบกเปเบ
เบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบตเปเบเบตเปเบกเปเบเบเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบเบเปเบฒเบชเบฑเปเบเปเบเบเบเบฒเบเบเปเบญเบเบเบตเปเบเบฐเบเปเบฒเปเบเปเปเบเบเบชเปเบฒเบเบเบทเปเบเบเบฒเบเบเบฑเบเบซเบกเบปเบเปเบเบทเปเบญเปเบเบดเปเบเบชเบดเปเบเบเบตเป Terraform เบเปเบฒเบฅเบฑเบเบชเปเบฒเบเบชเปเบฒเบฅเบฑเบเบเบงเบเปเบฎเบปเบฒเบขเบนเปเปเบเบเบฅเบฒเบง:
terraform.exe plan
เบเปเบฒเบเบเบฐเบเบทเบเปเบเบทเบญเบเปเบซเปเปเบชเปเปเบเบตเปเบเบฅเบฐเบชเบฑเบเปเบเบทเปเบญเบชเบปเปเบเบเบฒเบเปเบเปเบเปเบเบทเบญเบเปเบเบซเบฒ. เบกเบฑเบเบเปเปเบเปเบฒเปเบเบฑเบเบเบตเปเบเบฐเปเบชเปเบกเบฑเบเบขเบนเปเปเบเบเบฑเปเบเบเบญเบเบเบตเป.
เบกเบตเบเบฒเบเบงเบดเปเบเบฒเบฐเปเบเบเบเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบเบเบญเบเปเบเบเบเบฒเบ, เบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเปเบฅเบตเปเบกเบเบปเปเบเบชเปเบฒเบเบเบฑเบเบเบฐเบเบฒเบเบญเบ:
terraform.exe apply
เบซเบผเบฑเบเบเบฒเบเบชเบปเปเบเบเปเบฒเบชเบฑเปเบเบเบตเป, เบเปเบฒเบเบเบฐเบเบทเบเบฎเปเบญเบเบเปเปเบซเปเปเบชเปเปเบเบตเปเบเบฅเบฐเบชเบฑเบเบญเบตเบเปเบเบทเปเบญเบซเบเบถเปเบ; เบเบปเบ "เปเบกเปเบเปเบฅเปเบง" เปเบกเบทเปเบญเบเปเบฒเบเบฒเบกเบเปเบฝเบงเบเบฑเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบปเบงเบเบดเบเบเบทเบเบชเบฐเปเบเบ. เบเบตเปเบเบฐเบเปเบงเบเปเบซเปเบเปเบฒเบเบชเบฒเบกเบฒเบเบเบฑเปเบเบเปเบฒเปเบเบเบชเปเบฒเบเบเบทเปเบเบเบฒเบเบเบฑเบเบซเบกเบปเบ, เบเบฐเบเบดเบเบฑเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบตเปเบเปเบฒเปเบเบฑเบเบเบฑเบเบซเบกเบปเบเบเบญเบ EC2, เบเบฐเบเบดเบเบฑเบเบซเบเปเบฒเบเบตเป lambda, เปเบฅเบฐเบญเบทเปเบเป.
เบซเบผเบฑเบเบเบฒเบเบเบฑเบเบเบฐเบเบฒเบเบญเบเบเบฑเบเบซเบกเบปเบเปเบเปเบเบทเบเบชเปเบฒเบเบเบทเปเบเบขเปเบฒเบเบชเปเบฒเปเบฅเบฑเบเบเบปเบเปเบเบเบเปเบฒเบเบฅเบฐเบซเบฑเบ Terraform, เบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบเบปเปเบฒเปเบเปเบเบฅเบฒเบเบฅเบฐเบญเบฝเบเบเบญเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบ Kinesis Analytics (เปเบเปเบซเบเปเบฒเปเบชเบเบเบฒเบ, เบเปเบญเบเบเปเปเปเบเปเบเบญเบเบซเบฒเบงเบดเบเบตเบเบตเปเปเบเบเบเบปเบเบเบฒเบเบฅเบฐเบซเบฑเบ).
เปเบเบตเบเบเบปเบงเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบ:
เบซเบผเบฑเบโเบเบฒเบโเบเบตเปโ, เบเปเบฒเบโเบเบฐโเบเปเบญเบโเบเปเบฒโเบเบปเบโเบขเปเบฒเบโเบเบฑเบโเปเบเบโเบเบทเปโเบโเปโเปโเบฒโเปเบโเบเปเบฒโเบฎเปเบญเบโเบชเบฐโเบซเบกเบฑเบโเปเบเบโเบเบฒเบโเปเบฅเบทเบญเบโเบเบฒเบโเบเบฑเบโเบเบตโเบฅเบฒเบโเบเบฒเบโเปเบฅเบทเปเบญเบโเบฅเบปเบโ:
เปเบเบเบฑเบเบเบธเบเบฑเบเบเบธเบเบชเบดเปเบเบเบธเบเบขเปเบฒเบเปเบกเปเบเบเปเบญเบกเบเบตเปเบเบฐเปเบ.
เบเบฒเบเบเบปเบเบชเบญเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบ
เบเปเปเบงเปเบฒเบเปเบฒเบเบเบฐเบเบณเปเบเปเบฅเบฐเบเบปเบเปเบเบงเปเบ, เบเปเบงเบเบเบปเบเปเบญเบ เบซเบผเบทเบเปเบฒเบเบฅเบฐเบซเบฑเบ Terraform, เบกเบฑเบเบเบฐเปเบฎเบฑเบเบงเบฝเบเบเบทเบเบฑเบ.
เบเบงเบเปเบฎเบปเบฒเปเบเบปเปเบฒเบชเบนเปเบฅเบฐเบเบปเบเบเปเบฒเบ SSH เปเบเบซเบฒเปเบเบทเปเบญเบ virtual EC2 เบเบตเป Kinesis Agent เบเบทเบเบเบดเบเบเบฑเปเบ เปเบฅเบฐเปเบฅเปเบเบชเบฐเบเบฃเบดเบ api_caller.py
sudo ./api_caller.py TOKEN
เบชเบดเปเบเบเบตเปเบเปเบฒเบเบเปเบญเบเปเบฎเบฑเบเปเบกเปเบเบฅเปเบเปเบฒ SMS เปเบเบซเบฒเปเบเบตเบเบญเบเบเปเบฒเบ:
SMS - เบเปเปเบเบงเบฒเบกเบกเบฒเบฎเบญเบเปเบเบฅเบฐเบชเบฑเบเบเบญเบเบเปเบฒเบเปเบเปเบเบทเบญเบ 1 เบเบฒเบเบต:
เบกเบฑเบเบเบฑเบเบเบปเบเบขเบนเปเปเบเบทเปเบญเปเบเบดเปเบเบงเปเบฒเบเบฑเบเบเบถเบเปเบเปเบเบทเบเบเบฑเบเบเบถเบเปเบงเปเปเบเบเบฒเบเบเปเปเบกเบนเบ DynamoDB เบชเปเบฒเบฅเบฑเบเบเบฒเบเบงเบดเปเบเบฒเบฐเบฅเบฒเบเบฅเบฐเบญเบฝเบเปเบเบตเปเบกเปเบเบตเบกเบเปเปเบกเบฒ. เบเบฒเบเบฐเบฅเบฒเบ airline_tickets เบกเบตเบเบฐเบกเบฒเบเบเปเปเบกเบนเบเบเปเปเปเบเบเบตเป:
เบชเบฐเบซเบฅเบธเบ
เปเบเปเบฅเบเบฐเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบชเปเบฒเปเบฅเบฑเบ, เบฅเบฐเบเบปเบเบเบฒเบเบเบฐเบกเบงเบเบเบปเบเบเปเปเบกเบนเบเบญเบญเบเปเบฅเบเปเปเบเปเบเบทเบเบชเปเบฒเบเบเบถเปเบเปเบเบเบญเบตเบเปเบชเป Amazon Kinesis. เบเบฒเบเปเบฅเบทเบญเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเปเบฒเปเบเปเบเบปเบงเปเบเบ Kinesis เบชเบปเบกเบเบปเบเบเบฑเบ Kinesis Data Stream เปเบฅเบฐเบเบฒเบเบงเบดเปเบเบฒเบฐเปเบงเบฅเบฒเบเบตเปเปเบเปเบเบดเบ Kinesis Analytics เปเบเบเปเบเปเบเปเบฒเบชเบฑเปเบ SQL, เปเบเบฑเปเบเบเบฝเบงเบเบฑเบเบเบฑเบเบเบฒเบเปเบเปเบเบญเบเบเบญเบ Amazon Kinesis เบเบฑเบเบเปเบฅเบดเบเบฒเบ AWS เบญเบทเปเบเปเปเบเปเบเบทเบเบเบดเบเบฒเบฅเบฐเบเบฒ.
เบเบงเบโเปเบฎเบปเบฒโเปเบเปโเบเปเบฒโเปเบเปโเบฅเบฐโเบเบปเบโเบเปเบฒเบโเปเบเบดเบโเบเบตเปโเปเบโเบชเบญเบโเบงเบดโเบเบตโเบเบฒเบโ: เปเบเบฑเบโเบเบนเปโเบกเบทโเบเบฒเบงโเบซเบผเบฒเบโเปเบฅเบฐโเปเบงโเบเบฒเบโเบฅเบฐโเบซเบฑเบ Terraformโ.
เบฅเบฐเบซเบฑเบเปเบซเบผเปเบเปเบเบเบเบฒเบเบเบฑเบเปเบปเบเปเบกเปเบเบกเบตเบขเบนเป
เบเปเบฒเบเบฐเปเบเบปเปเบฒเบเบดเบเบเบตเบเบตเปเบเบฐเบชเบปเบเบเบฐเบเบฒเบเบปเบเบเบงเบฒเบก, เบเปเบฒเบเบฐเปเบเบปเปเบฒเบซเบงเบฑเบเบงเปเบฒเบเบฐเปเบเปเบเปเบฒเปเบซเบฑเบเบเบญเบเบเปเบฒเบ. เบเปเบฒเบเบฐเปเบเบปเปเบฒเบซเบงเบฑเบเบงเปเบฒเบชเปเบฒเบฅเบฑเบเบเบฒเบเบงเบดเบเบฒเบเบงเบดเบเบฒเบเบเปเปเบชเปเบฒเบ.
เบเปเบฒโเบเบฐโเปเบเบปเปเบฒโเบเปโเปเบซเปโเบเปเบฒเบโเบชเบปเบโเบเบปเบโเบชเปเบฒโเปเบฅเบฑเบโ!
เปเบซเบผเปเบเบเปเปเบกเบนเบ: www.habr.com