Aviasales API แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ Amazon Kinesis-แƒ—แƒแƒœ แƒ“แƒ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒกแƒ˜แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜แƒ—

แƒฐแƒ”แƒ˜ แƒฐแƒแƒ‘แƒ !

แƒ›แƒแƒ’แƒฌแƒแƒœแƒ— แƒ—แƒ•แƒ˜แƒ—แƒ›แƒคแƒ แƒ˜แƒœแƒแƒ•แƒ”แƒ‘แƒ˜แƒก แƒคแƒ แƒ”แƒœแƒ? แƒ›แƒ” แƒ›แƒ˜แƒงแƒ•แƒแƒ แƒก, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ—แƒ•แƒ˜แƒ—แƒ˜แƒ–แƒแƒšแƒแƒชแƒ˜แƒ˜แƒก แƒ“แƒ แƒแƒก แƒ›แƒ”แƒช แƒจแƒ”แƒ›แƒ˜แƒงแƒ•แƒแƒ แƒ“แƒ แƒแƒ•แƒ˜แƒแƒ‘แƒ˜แƒšแƒ”แƒ—แƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒแƒœแƒแƒšแƒ˜แƒ–แƒ˜ แƒ”แƒ แƒ—แƒ˜ แƒชแƒœแƒแƒ‘แƒ˜แƒšแƒ˜ แƒ แƒ”แƒกแƒฃแƒ แƒกแƒ˜แƒ“แƒแƒœ - Aviasales.

แƒ“แƒฆแƒ”แƒก แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ•แƒแƒแƒœแƒแƒšแƒ˜แƒ–แƒ”แƒ‘แƒ— Amazon Kinesis-แƒ˜แƒก แƒ›แƒฃแƒจแƒแƒแƒ‘แƒแƒก, แƒแƒ•แƒแƒจแƒ”แƒœแƒ”แƒ‘แƒ— แƒกแƒขแƒ แƒ˜แƒ›แƒ˜แƒœแƒ’ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒแƒก แƒ แƒ”แƒแƒšแƒฃแƒ  แƒ“แƒ แƒแƒจแƒ˜ แƒแƒœแƒแƒšแƒ˜แƒขแƒ˜แƒ™แƒ˜แƒ—, แƒ“แƒแƒ•แƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒ”แƒ‘แƒ— Amazon DynamoDB NoSQL แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒแƒก, แƒ แƒแƒ’แƒแƒ แƒช แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒซแƒ˜แƒ แƒ˜แƒ—แƒแƒ“ แƒจแƒ”แƒกแƒแƒœแƒแƒฎแƒแƒ“ แƒ“แƒ แƒ“แƒแƒ•แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ— SMS แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒก แƒกแƒแƒ˜แƒœแƒขแƒ”แƒ แƒ”แƒกแƒ แƒ‘แƒ˜แƒšแƒ”แƒ—แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.

แƒงแƒ•แƒ”แƒšแƒ แƒ“แƒ”แƒขแƒแƒšแƒ˜ แƒญแƒ แƒ˜แƒก แƒฅแƒ•แƒ”แƒจแƒแƒ! แƒฌแƒแƒ“แƒ˜!

Aviasales API แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ Amazon Kinesis-แƒ—แƒแƒœ แƒ“แƒ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒกแƒ˜แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜แƒ—

แƒจแƒ”แƒกแƒแƒ•แƒแƒšแƒ˜

แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒฉแƒ•แƒ”แƒœ แƒ’แƒ•แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ แƒฌแƒ•แƒ“แƒแƒ›แƒ Aviasales API. แƒ›แƒแƒกแƒ–แƒ” แƒฌแƒ•แƒ“แƒแƒ›แƒ แƒฃแƒคแƒแƒกแƒแƒ แƒ“แƒ แƒจแƒ”แƒ–แƒฆแƒฃแƒ“แƒ•แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒจแƒ”; แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒฃแƒœแƒ“แƒ แƒ“แƒแƒ แƒ”แƒ’แƒ˜แƒกแƒขแƒ แƒ˜แƒ แƒ“แƒ”แƒ— "แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒ”แƒ‘แƒ˜แƒก" แƒ’แƒแƒœแƒงแƒแƒคแƒ˜แƒšแƒ”แƒ‘แƒแƒจแƒ˜, แƒ แƒแƒ—แƒ แƒ›แƒ˜แƒ˜แƒฆแƒแƒ— แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ API แƒŸแƒ”แƒขแƒแƒœแƒ˜, แƒ แƒแƒ› แƒ›แƒ˜แƒ˜แƒฆแƒแƒ— แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜.

แƒแƒ› แƒกแƒขแƒแƒขแƒ˜แƒ˜แƒก แƒ›แƒ—แƒแƒ•แƒแƒ แƒ˜ แƒ›แƒ˜แƒ–แƒแƒœแƒ˜แƒ AWS-แƒจแƒ˜ แƒ˜แƒœแƒคแƒแƒ แƒ›แƒแƒชแƒ˜แƒ˜แƒก แƒœแƒแƒ™แƒแƒ“แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒก แƒ–แƒแƒ’แƒแƒ“แƒ˜ แƒ’แƒแƒ’แƒ”แƒ‘แƒ; แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ•แƒ˜แƒ—แƒ•แƒแƒšแƒ˜แƒกแƒฌแƒ˜แƒœแƒ”แƒ‘แƒ—, แƒ แƒแƒ› แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ API-แƒก แƒ›แƒ˜แƒ”แƒ  แƒ“แƒแƒ‘แƒ แƒฃแƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜ แƒแƒ  แƒแƒ แƒ˜แƒก แƒ›แƒ™แƒแƒชแƒ แƒแƒ“ แƒ’แƒแƒœแƒแƒฎแƒšแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ“แƒ แƒ’แƒแƒ“แƒแƒชแƒ”แƒ›แƒฃแƒšแƒ˜แƒ แƒฅแƒ”แƒจแƒ˜แƒ“แƒแƒœ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒ แƒ˜แƒก แƒฉแƒแƒ›แƒแƒงแƒแƒšแƒ˜แƒ‘แƒ“แƒ Aviasales.ru-แƒกแƒ แƒ“แƒ Jetradar.com-แƒ˜แƒก แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒ”แƒ  แƒ‘แƒแƒšแƒ 48 แƒกแƒแƒแƒ—แƒ˜แƒก แƒ’แƒแƒœแƒ›แƒแƒ•แƒšแƒแƒ‘แƒแƒจแƒ˜ แƒซแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒคแƒฃแƒซแƒ•แƒ”แƒšแƒ–แƒ”.

Kinesis-แƒแƒ’แƒ”แƒœแƒขแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ“แƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ›แƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒ”แƒš แƒ›แƒแƒœแƒฅแƒแƒœแƒแƒ–แƒ”, แƒ›แƒ˜แƒฆแƒ”แƒ‘แƒฃแƒšแƒ˜ API-แƒ˜แƒ— แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒฃแƒ แƒแƒ“ แƒแƒแƒœแƒแƒšแƒ˜แƒ–แƒ”แƒ‘แƒก แƒ“แƒ แƒ’แƒแƒ“แƒแƒกแƒชแƒ”แƒ›แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒก แƒกแƒแƒกแƒฃแƒ แƒ•แƒ”แƒš แƒœแƒแƒ™แƒแƒ“แƒ–แƒ” Kinesis Data Analytics-แƒ˜แƒก แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒ˜แƒ—. แƒแƒ› แƒœแƒแƒ™แƒแƒ“แƒ˜แƒก แƒ“แƒแƒฃแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ”แƒšแƒ˜ แƒ•แƒ”แƒ แƒกแƒ˜แƒ แƒ“แƒแƒ˜แƒฌแƒ”แƒ แƒ”แƒ‘แƒ แƒžแƒ˜แƒ แƒ“แƒแƒžแƒ˜แƒ  แƒ›แƒแƒฆแƒแƒ–แƒ˜แƒแƒจแƒ˜. DynamoDB-แƒจแƒ˜ แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒœแƒ”แƒ“แƒšแƒ”แƒฃแƒšแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒจแƒ”แƒœแƒแƒฎแƒ•แƒ แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ›แƒ˜แƒกแƒชแƒ”แƒ›แƒก แƒ‘แƒ˜แƒšแƒ”แƒ—แƒ”แƒ‘แƒ˜แƒก แƒฃแƒคแƒ แƒ แƒฆแƒ แƒ›แƒ แƒแƒœแƒแƒšแƒ˜แƒ–แƒก BI แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒ›แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜แƒก แƒ›แƒ”แƒจแƒ•แƒ”แƒแƒ‘แƒ˜แƒ—, แƒ แƒแƒ’แƒแƒ แƒ˜แƒชแƒแƒ AWS Quick Sight.

แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒœแƒ•แƒ˜แƒฎแƒ˜แƒšแƒแƒ•แƒ— แƒแƒ  แƒ•แƒแƒ แƒ˜แƒแƒœแƒขแƒก แƒ›แƒ—แƒ”แƒšแƒ˜ แƒ˜แƒœแƒคแƒ แƒแƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ˜แƒก แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก:

  • แƒกแƒแƒฎแƒ”แƒšแƒ›แƒซแƒฆแƒ•แƒแƒœแƒ”แƒšแƒ - AWS Management Console-แƒ˜แƒก แƒ›แƒ”แƒจแƒ•แƒ”แƒแƒ‘แƒ˜แƒ—;
  • Terraform แƒ™แƒแƒ“แƒ˜แƒก แƒ˜แƒœแƒคแƒ แƒแƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ แƒ’แƒแƒœแƒ™แƒฃแƒ—แƒ•แƒœแƒ˜แƒšแƒ˜แƒ แƒ–แƒแƒ แƒ›แƒแƒชแƒ˜ แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก;

แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒก แƒแƒ แƒฅแƒ˜แƒขแƒ”แƒฅแƒขแƒฃแƒ แƒ

Aviasales API แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ Amazon Kinesis-แƒ—แƒแƒœ แƒ“แƒ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒกแƒ˜แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜แƒ—
แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ™แƒแƒ›แƒžแƒแƒœแƒ”แƒœแƒขแƒ”แƒ‘แƒ˜:

  • Aviasales API โ€” แƒแƒ› API-แƒก แƒ›แƒ˜แƒ”แƒ  แƒ“แƒแƒ‘แƒ แƒฃแƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒงแƒ•แƒ”แƒšแƒ แƒจแƒ”แƒ›แƒ“แƒ’แƒแƒ›แƒ˜ แƒกแƒแƒ›แƒฃแƒจแƒแƒแƒกแƒ—แƒ•แƒ˜แƒก;
  • EC2 แƒžแƒ แƒแƒ“แƒ˜แƒฃแƒกแƒ”แƒ แƒ˜แƒก แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜ โ€” แƒฉแƒ•แƒ”แƒฃแƒšแƒ”แƒ‘แƒ แƒ˜แƒ•แƒ˜ แƒ•แƒ˜แƒ แƒขแƒฃแƒแƒšแƒฃแƒ แƒ˜ แƒ›แƒแƒœแƒฅแƒแƒœแƒ แƒฆแƒ แƒฃแƒ‘แƒ”แƒšแƒจแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ–แƒ”แƒ“แƒแƒช แƒฌแƒแƒ แƒ›แƒแƒ˜แƒฅแƒ›แƒœแƒ”แƒ‘แƒ แƒจแƒ”แƒงแƒ•แƒแƒœแƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒœแƒแƒ™แƒแƒ“แƒ˜:
    • Kinesis แƒแƒ’แƒ”แƒœแƒขแƒ˜ แƒแƒ แƒ˜แƒก แƒ›แƒแƒœแƒฅแƒแƒœแƒแƒ–แƒ” แƒแƒ“แƒ’แƒ˜แƒšแƒแƒ‘แƒ แƒ˜แƒ•แƒแƒ“ แƒ“แƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ Java แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒฃแƒ–แƒ แƒฃแƒœแƒ•แƒ”แƒšแƒงแƒแƒคแƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒจแƒ”แƒ’แƒ แƒแƒ•แƒ”แƒ‘แƒ˜แƒกแƒ แƒ“แƒ แƒ’แƒแƒ’แƒ–แƒแƒ•แƒœแƒ˜แƒก แƒ›แƒแƒ แƒขแƒ˜แƒ• แƒ’แƒ–แƒแƒก Kinesis-แƒจแƒ˜ (Kinesis Data Streams แƒแƒœ Kinesis Firehose). แƒแƒ’แƒ”แƒœแƒขแƒ˜ แƒ›แƒฃแƒ“แƒ›แƒ˜แƒ•แƒแƒ“ แƒแƒ™แƒแƒœแƒขแƒ แƒแƒšแƒ”แƒ‘แƒก แƒคแƒแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒก แƒ”แƒ แƒ—แƒแƒ‘แƒšแƒ˜แƒแƒ‘แƒแƒก แƒ›แƒ˜แƒ—แƒ˜แƒ—แƒ”แƒ‘แƒฃแƒš แƒ“แƒ˜แƒ แƒ”แƒฅแƒขแƒแƒ แƒ˜แƒแƒจแƒ˜ แƒ“แƒ แƒแƒ’แƒ–แƒแƒ•แƒœแƒ˜แƒก แƒแƒฎแƒแƒš แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒก Kinesis-แƒจแƒ˜;
    • API Caller Script - แƒžแƒ˜แƒ—แƒแƒœแƒ˜แƒก แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ›แƒ˜แƒ›แƒแƒ แƒ—แƒแƒ•แƒก API-แƒก แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒก แƒ“แƒ แƒžแƒแƒกแƒฃแƒฎแƒก แƒแƒ—แƒแƒ•แƒกแƒ”แƒ‘แƒก แƒกแƒแƒฅแƒแƒฆแƒแƒšแƒ“แƒ”แƒจแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒกแƒแƒช แƒแƒ™แƒแƒœแƒขแƒ แƒแƒšแƒ”แƒ‘แƒก Kinesis Agent;
  • Kinesis แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒœแƒแƒ™แƒแƒ“แƒ”แƒ‘แƒ˜ โ€” แƒ แƒ”แƒแƒšแƒฃแƒ  แƒ“แƒ แƒแƒจแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒœแƒแƒ™แƒแƒ“แƒ˜แƒก แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜ แƒคแƒแƒ แƒ—แƒ แƒ›แƒแƒกแƒจแƒขแƒแƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒšแƒแƒ‘แƒ”แƒ‘แƒ˜แƒ—;
  • Kinesis Analytics แƒแƒ แƒ˜แƒก แƒฃแƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ”แƒ‘แƒก แƒกแƒขแƒ แƒ˜แƒ›แƒ˜แƒœแƒ’แƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒแƒœแƒแƒšแƒ˜แƒ–แƒก แƒ แƒ”แƒแƒšแƒฃแƒ  แƒ“แƒ แƒแƒจแƒ˜. Amazon Kinesis Data Analytics แƒแƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒ˜แƒ แƒ”แƒ‘แƒก แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒ แƒ”แƒกแƒฃแƒ แƒกแƒ”แƒ‘แƒก แƒ“แƒ แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒฃแƒ แƒแƒ“ แƒ›แƒแƒกแƒจแƒขแƒแƒ‘แƒ˜แƒ แƒ”แƒ‘แƒก แƒจแƒ”แƒ›แƒแƒ›แƒแƒ•แƒแƒšแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒœแƒ”แƒ‘แƒ˜แƒกแƒ›แƒ˜แƒ”แƒ แƒ˜ แƒ›แƒแƒชแƒฃแƒšแƒแƒ‘แƒ˜แƒก แƒ“แƒแƒกแƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒšแƒแƒ“;
  • AWS แƒšแƒแƒ›แƒ‘แƒ“แƒ โ€” แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ’แƒแƒซแƒšแƒ”แƒ•แƒ— แƒ’แƒแƒฃแƒจแƒ•แƒแƒ— แƒ™แƒแƒ“แƒ˜ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒ แƒ”แƒ–แƒ”แƒ แƒ•แƒ แƒแƒกแƒšแƒ˜แƒก แƒแƒœ แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒจแƒ”. แƒงแƒ•แƒ”แƒšแƒ แƒ’แƒแƒ›แƒแƒ—แƒ•แƒšแƒ˜แƒ—แƒ˜ แƒกแƒ˜แƒ›แƒซแƒšแƒแƒ•แƒ แƒ” แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒฃแƒ แƒแƒ“ แƒ›แƒแƒกแƒจแƒขแƒแƒ‘แƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒ–แƒแƒ แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก;
  • Amazon DynamoDB - แƒ’แƒแƒกแƒแƒฆแƒ”แƒ‘แƒ˜-แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ˜แƒก แƒฌแƒงแƒ•แƒ˜แƒšแƒ”แƒ‘แƒ˜แƒกแƒ แƒ“แƒ แƒ“แƒแƒ™แƒฃแƒ›แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒฃแƒ–แƒ แƒฃแƒœแƒ•แƒ”แƒšแƒงแƒแƒคแƒก 10 แƒ›แƒ˜แƒšแƒ˜แƒฌแƒแƒ›แƒ–แƒ” แƒœแƒแƒ™แƒšแƒ”แƒ‘ แƒจแƒ”แƒงแƒแƒ•แƒœแƒ”แƒ‘แƒแƒก แƒœแƒ”แƒ‘แƒ˜แƒกแƒ›แƒ˜แƒ”แƒ แƒ˜ แƒ›แƒแƒกแƒจแƒขแƒแƒ‘แƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ˜แƒกแƒแƒก. DynamoDB-แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒกแƒแƒก, แƒ—แƒฅแƒ•แƒ”แƒœ แƒแƒ  แƒ’แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒแƒ— แƒ แƒแƒ˜แƒ›แƒ” แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒฃแƒ–แƒ แƒฃแƒœแƒ•แƒ”แƒšแƒงแƒแƒคแƒ, แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒแƒœ แƒ›แƒแƒ แƒ—แƒ•แƒ. DynamoDB แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒฃแƒ แƒแƒ“ แƒแƒ“แƒ˜แƒ“แƒ”แƒ‘แƒก แƒชแƒฎแƒ แƒ˜แƒšแƒ”แƒ‘แƒก, แƒ แƒแƒ—แƒ แƒจแƒ”แƒชแƒ•แƒแƒšแƒแƒก แƒแƒ แƒกแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ แƒ”แƒกแƒฃแƒ แƒกแƒ”แƒ‘แƒ˜แƒก แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ แƒ“แƒ แƒจแƒ”แƒ˜แƒœแƒแƒ แƒฉแƒฃแƒœแƒแƒก แƒ›แƒแƒฆแƒแƒšแƒ˜ แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ. แƒแƒ  แƒแƒ แƒ˜แƒก แƒกแƒแƒญแƒ˜แƒ แƒ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒก แƒแƒ“แƒ›แƒ˜แƒœแƒ˜แƒกแƒขแƒ แƒ˜แƒ แƒ”แƒ‘แƒ;
  • Amazon SNS - แƒกแƒ แƒฃแƒšแƒแƒ“ แƒ›แƒแƒ แƒ—แƒฃแƒšแƒ˜ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ’แƒ–แƒแƒ•แƒœแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ’แƒแƒ›แƒแƒ›แƒชแƒ”แƒ›แƒ”แƒšแƒ˜-แƒแƒ‘แƒแƒœแƒ”แƒœแƒขแƒ˜แƒก (Pub/Sub) แƒ›แƒแƒ“แƒ”แƒšแƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—, แƒ แƒแƒ›แƒšแƒ˜แƒ—แƒแƒช แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ›แƒ˜แƒ™แƒ แƒแƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ”แƒ‘แƒ˜แƒก, แƒ’แƒแƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒ“แƒ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒจแƒ” แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒ˜แƒ–แƒแƒšแƒ˜แƒ แƒ”แƒ‘แƒ. SNS แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒฃแƒš แƒ˜แƒฅแƒœแƒแƒก แƒกแƒแƒ‘แƒแƒšแƒแƒ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ˜แƒœแƒคแƒแƒ แƒ›แƒแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒกแƒแƒ’แƒ–แƒแƒ•แƒœแƒแƒ“ แƒ›แƒแƒ‘แƒ˜แƒšแƒฃแƒ แƒ˜ Push แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก, SMS แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ“แƒ แƒ”แƒš.แƒคแƒแƒกแƒขแƒ˜แƒก แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒ˜แƒ—.

แƒกแƒแƒฌแƒงแƒ˜แƒกแƒ˜ แƒขแƒ แƒ”แƒœแƒ˜แƒœแƒ’แƒ˜

แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒœแƒแƒ™แƒแƒ“แƒ˜แƒก แƒ”แƒ›แƒฃแƒšแƒแƒชแƒ˜แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ’แƒแƒ“แƒแƒ•แƒฌแƒงแƒ•แƒ˜แƒขแƒ” แƒ’แƒแƒ›แƒแƒ›แƒ”แƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒœแƒ Aviasales API-แƒก แƒ›แƒ˜แƒ”แƒ  แƒ“แƒแƒ‘แƒ แƒฃแƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒแƒ•แƒ˜แƒแƒ‘แƒ˜แƒšแƒ”แƒ—แƒ˜แƒก แƒ˜แƒœแƒคแƒแƒ แƒ›แƒแƒชแƒ˜แƒ. IN แƒ“แƒแƒ™แƒฃแƒ›แƒ”แƒœแƒขแƒแƒชแƒ˜แƒ แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒ›แƒ”แƒ—แƒแƒ“แƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒ™แƒ›แƒแƒแƒ“ แƒ•แƒ แƒชแƒ”แƒšแƒ˜ แƒฉแƒแƒ›แƒแƒœแƒแƒ—แƒ•แƒแƒšแƒ˜, แƒแƒ•แƒ˜แƒฆแƒแƒ— แƒ”แƒ แƒ—-แƒ”แƒ แƒ—แƒ˜ แƒ›แƒแƒ—แƒ’แƒแƒœแƒ˜ - โ€žแƒ—แƒ•แƒ˜แƒฃแƒ แƒ˜ แƒคแƒแƒกแƒ”แƒ‘แƒ˜แƒก แƒ™แƒแƒšแƒ”แƒœแƒ“แƒแƒ แƒ˜โ€œ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒ‘แƒ แƒฃแƒœแƒ”แƒ‘แƒก แƒคแƒแƒกแƒ”แƒ‘แƒก แƒ—แƒ•แƒ˜แƒก แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒ“แƒฆแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ“แƒแƒฏแƒ’แƒฃแƒคแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ’แƒแƒ“แƒแƒ แƒ˜แƒชแƒฎแƒ•แƒ”แƒ‘แƒ˜แƒก แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ˜แƒก แƒ›แƒ˜แƒฎแƒ”แƒ“แƒ•แƒ˜แƒ—. แƒ—แƒฃ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒแƒจแƒ˜ แƒแƒ  แƒ›แƒ˜แƒฃแƒ—แƒ˜แƒ—แƒ”แƒ‘แƒ— แƒซแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒ—แƒ•แƒ”แƒก, แƒ˜แƒœแƒคแƒแƒ แƒ›แƒแƒชแƒ˜แƒ แƒ“แƒแƒ‘แƒ แƒฃแƒœแƒ“แƒ”แƒ‘แƒ แƒ›แƒ˜แƒ›แƒ“แƒ˜แƒœแƒแƒ แƒ” แƒ—แƒ•แƒ˜แƒก แƒ›แƒแƒ›แƒ“แƒ”แƒ•แƒœแƒ แƒ—แƒ•แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.

แƒแƒกแƒ” แƒ แƒแƒ›, แƒ›แƒแƒ“แƒ˜แƒ— แƒ“แƒแƒ•แƒ แƒ”แƒ’แƒ˜แƒกแƒขแƒ แƒ˜แƒ แƒ“แƒ”แƒ— แƒ“แƒ แƒ›แƒ˜แƒ•แƒ˜แƒฆแƒแƒ— แƒฉแƒ•แƒ”แƒœแƒ˜ แƒœแƒ˜แƒจแƒแƒœแƒ˜.

แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ˜แƒก แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜ แƒ›แƒแƒชแƒ”แƒ›แƒฃแƒšแƒ˜แƒ แƒฅแƒ•แƒ”แƒ›แƒแƒ—:

http://api.travelpayouts.com/v2/prices/month-matrix?currency=rub&origin=LED&destination=HKT&show_to_affiliates=true&token=TOKEN_API

API-แƒ“แƒแƒœ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒฆแƒ”แƒ‘แƒ˜แƒก แƒ–แƒ”แƒ›แƒแƒแƒฆแƒœแƒ˜แƒจแƒœแƒฃแƒšแƒ˜ แƒ›แƒ”แƒ—แƒแƒ“แƒ˜ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒแƒจแƒ˜ แƒขแƒแƒ™แƒ”แƒœแƒ˜แƒก แƒ›แƒ˜แƒ—แƒ˜แƒ—แƒ”แƒ‘แƒ˜แƒ— แƒ˜แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒก, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ›แƒ˜แƒ แƒฉแƒ”แƒ•แƒœแƒ˜แƒ แƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒก แƒŸแƒ”แƒขแƒแƒœแƒ˜ แƒ’แƒแƒ“แƒแƒ•แƒ˜แƒขแƒแƒœแƒ แƒกแƒแƒ—แƒแƒฃแƒ แƒจแƒ˜, แƒแƒ›แƒ˜แƒขแƒแƒ› แƒแƒ› แƒ›แƒ”แƒ—แƒแƒ“แƒก แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— 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 แƒžแƒแƒกแƒฃแƒฎแƒ˜ แƒ’แƒ•แƒ˜แƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒก แƒ‘แƒ˜แƒšแƒ”แƒ—แƒก แƒกแƒแƒœแƒ™แƒข-แƒžแƒ”แƒขแƒ”แƒ แƒ‘แƒฃแƒ แƒ’แƒ˜แƒ“แƒแƒœ แƒคแƒฃแƒ™แƒแƒ›แƒ“แƒ”... แƒแƒฐ, แƒ แƒ แƒกแƒ˜แƒ–แƒ›แƒแƒ แƒ˜แƒ...
แƒ•แƒ˜แƒœแƒแƒ˜แƒ“แƒแƒœ แƒ›แƒ” แƒงแƒแƒ–แƒแƒœแƒ˜แƒ“แƒแƒœ แƒ•แƒแƒ  แƒ“แƒ แƒคแƒฃแƒ™แƒ”แƒขแƒ˜ แƒแƒฎแƒšแƒ "แƒ›แƒฎแƒแƒšแƒแƒ“ แƒแƒชแƒœแƒ”แƒ‘แƒแƒ", แƒ›แƒแƒ“แƒ˜ แƒ•แƒ”แƒซแƒ˜แƒแƒ— แƒ‘แƒ˜แƒšแƒ”แƒ—แƒ”แƒ‘แƒ˜ แƒžแƒ”แƒขแƒ”แƒ แƒ‘แƒฃแƒ แƒ’แƒ˜แƒ“แƒแƒœ แƒงแƒแƒ–แƒแƒœแƒจแƒ˜.

แƒ˜แƒ’แƒ˜ แƒ•แƒแƒ แƒแƒฃแƒ“แƒแƒ‘แƒก, แƒ แƒแƒ› แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒ™แƒ•แƒ” แƒ’แƒแƒฅแƒ•แƒ— AWS แƒแƒœแƒ’แƒแƒ แƒ˜แƒจแƒ˜. แƒ›แƒ˜แƒœแƒ“แƒ แƒ“แƒแƒฃแƒงแƒแƒ•แƒœแƒ”แƒ‘แƒšแƒ˜แƒ• แƒ’แƒแƒ•แƒแƒ›แƒแƒฎแƒ•แƒ˜แƒšแƒ แƒ’แƒแƒœแƒกแƒแƒ™แƒฃแƒ—แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒงแƒฃแƒ แƒแƒ“แƒฆแƒ”แƒ‘แƒ แƒ˜แƒ› แƒคแƒแƒฅแƒขแƒ–แƒ”, แƒ แƒแƒ› Kinesis แƒ“แƒ SMS-แƒ˜แƒ— แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ’แƒ–แƒแƒ•แƒœแƒ แƒแƒ  แƒจแƒ”แƒ“แƒ˜แƒก แƒงแƒแƒ•แƒ”แƒšแƒฌแƒšแƒ˜แƒฃแƒ  แƒฃแƒคแƒแƒกแƒ แƒ“แƒแƒœแƒ” (แƒฃแƒคแƒแƒกแƒ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ). แƒ›แƒแƒ’แƒ แƒแƒ› แƒแƒ›แƒ˜แƒก แƒ›แƒ˜แƒฃแƒฎแƒ”แƒ“แƒแƒ•แƒแƒ“, แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒ“แƒแƒšแƒแƒ แƒ˜แƒก แƒ’แƒแƒ—แƒ•แƒแƒšแƒ˜แƒกแƒฌแƒ˜แƒœแƒ”แƒ‘แƒ˜แƒ—, แƒกแƒแƒ•แƒกแƒ”แƒ‘แƒ˜แƒ— แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ แƒจแƒ”แƒ›แƒแƒ—แƒแƒ•แƒแƒ–แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒก แƒแƒจแƒ”แƒœแƒ”แƒ‘แƒ แƒ“แƒ แƒ›แƒแƒกแƒ—แƒแƒœ แƒ—แƒแƒ›แƒแƒจแƒ˜. แƒ“แƒ, แƒ แƒ แƒ—แƒฅแƒ›แƒ แƒฃแƒœแƒ“แƒ, แƒแƒ  แƒ“แƒแƒ’แƒแƒ•แƒ˜แƒฌแƒงแƒ“แƒ”แƒ— แƒฌแƒแƒจแƒแƒšแƒแƒ— แƒงแƒ•แƒ”แƒšแƒ แƒ แƒ”แƒกแƒฃแƒ แƒกแƒ˜ แƒ›แƒแƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒ แƒแƒช แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒแƒฆแƒแƒ  แƒ“แƒแƒ’แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒแƒ—.

แƒกแƒแƒ‘แƒ”แƒ“แƒœแƒ˜แƒ”แƒ แƒแƒ“, DynamoDb แƒ“แƒ แƒšแƒแƒ›แƒ‘แƒ“แƒ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ”แƒ‘แƒ˜ แƒฉแƒ•แƒ”แƒœแƒ—แƒ•แƒ˜แƒก แƒฃแƒคแƒแƒกแƒ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ, แƒ—แƒฃ แƒ—แƒฅแƒ•แƒ”แƒœ แƒ“แƒแƒแƒ™แƒ›แƒแƒงแƒแƒคแƒ˜แƒšแƒ”แƒ‘แƒ— แƒงแƒแƒ•แƒ”แƒšแƒ—แƒ•แƒ˜แƒฃแƒ  แƒฃแƒคแƒแƒกแƒ แƒšแƒ˜แƒ›แƒ˜แƒขแƒ”แƒ‘แƒก. แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, DynamoDB-แƒกแƒ—แƒ•แƒ˜แƒก: 25 GB แƒกแƒแƒชแƒแƒ•แƒ˜, 25 WCU/RCU แƒ“แƒ 100 แƒ›แƒ˜แƒšแƒ˜แƒแƒœแƒ˜ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ. แƒ“แƒ แƒ›แƒ˜แƒšแƒ˜แƒแƒœแƒ˜ แƒšแƒแƒ›แƒ‘แƒ“แƒ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ˜แƒก แƒ–แƒแƒ แƒ˜ แƒ—แƒ•แƒ”แƒจแƒ˜.

แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒก แƒฎแƒ”แƒšแƒ˜แƒ— แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ

Kinesis แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒœแƒแƒ™แƒแƒ“แƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ

แƒ›แƒแƒ“แƒ˜แƒ— แƒ’แƒแƒ“แƒแƒ•แƒ˜แƒ“แƒ”แƒ— Kinesis Data Streams แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ–แƒ” แƒ“แƒ แƒจแƒ”แƒ•แƒฅแƒ›แƒœแƒแƒ— แƒแƒ แƒ˜ แƒแƒฎแƒแƒšแƒ˜ แƒœแƒแƒ™แƒแƒ“แƒ˜, แƒ—แƒ˜แƒ—แƒ แƒคแƒ แƒแƒ’แƒ›แƒ”แƒœแƒขแƒ˜ แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.

แƒ แƒ แƒแƒ แƒ˜แƒก แƒœแƒแƒขแƒ”แƒฎแƒ˜?
แƒœแƒแƒขแƒ”แƒฎแƒ˜ แƒแƒ แƒ˜แƒก Amazon Kinesis แƒœแƒแƒ™แƒแƒ“แƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ’แƒแƒ“แƒแƒชแƒ”แƒ›แƒ˜แƒก แƒซแƒ˜แƒ แƒ˜แƒ—แƒแƒ“แƒ˜ แƒ”แƒ แƒ—แƒ”แƒฃแƒšแƒ˜. แƒ”แƒ แƒ—แƒ˜ แƒกแƒ”แƒ’แƒ›แƒ”แƒœแƒขแƒ˜ แƒฃแƒ–แƒ แƒฃแƒœแƒ•แƒ”แƒšแƒงแƒแƒคแƒก แƒจแƒ”แƒงแƒ•แƒแƒœแƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ’แƒแƒ“แƒแƒชแƒ”แƒ›แƒแƒก 1 แƒ›แƒ‘/แƒฌแƒ› แƒกแƒ˜แƒฉแƒฅแƒแƒ แƒ˜แƒ— แƒ“แƒ แƒ’แƒแƒ›แƒแƒ›แƒแƒ•แƒแƒšแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ“แƒแƒชแƒ”แƒ›แƒแƒก 2 แƒ›แƒ‘/แƒฌแƒ› แƒกแƒ˜แƒฉแƒฅแƒแƒ แƒ˜แƒ—. แƒ”แƒ แƒ—แƒ˜ แƒกแƒ”แƒ’แƒ›แƒ”แƒœแƒขแƒ˜ แƒ›แƒฎแƒแƒ แƒก แƒฃแƒญแƒ”แƒ แƒก 1000-แƒ›แƒ“แƒ” PUT แƒฉแƒแƒœแƒแƒฌแƒ”แƒ แƒก แƒฌแƒแƒ›แƒจแƒ˜. แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒœแƒแƒ™แƒแƒ“แƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒกแƒแƒก, แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ›แƒ˜แƒฃแƒ—แƒ˜แƒ—แƒแƒ— แƒกแƒ”แƒ’แƒ›แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒญแƒ˜แƒ แƒ แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ. แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒจแƒ”แƒฅแƒ›แƒœแƒแƒ— แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒœแƒแƒ™แƒแƒ“แƒ˜ แƒแƒ แƒ˜ แƒกแƒ”แƒ’แƒ›แƒ”แƒœแƒขแƒ˜แƒ—. แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ”แƒก แƒœแƒแƒ™แƒแƒ“แƒ˜ แƒฃแƒ–แƒ แƒฃแƒœแƒ•แƒ”แƒšแƒงแƒแƒคแƒก แƒจแƒ”แƒงแƒ•แƒแƒœแƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ’แƒแƒ“แƒแƒชแƒ”แƒ›แƒแƒก 2 แƒ›แƒ‘/แƒฌแƒ› แƒกแƒ˜แƒฉแƒฅแƒแƒ แƒ˜แƒ— แƒ“แƒ แƒ’แƒแƒ›แƒแƒ›แƒแƒ•แƒแƒšแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ“แƒแƒชแƒ”แƒ›แƒแƒก 4 แƒ›แƒ‘/แƒฌแƒ›, 2000-แƒ›แƒ“แƒ” PUT แƒฉแƒแƒœแƒแƒฌแƒ”แƒ แƒ˜แƒก แƒ›แƒฎแƒแƒ แƒ“แƒแƒญแƒ”แƒ แƒ แƒฌแƒแƒ›แƒจแƒ˜.

แƒ แƒแƒช แƒฃแƒคแƒ แƒ แƒ›แƒ”แƒขแƒ˜ แƒคแƒ แƒแƒ’แƒ›แƒ”แƒœแƒขแƒ˜แƒ แƒ—แƒฅแƒ•แƒ”แƒœแƒก แƒœแƒแƒ™แƒแƒ“แƒจแƒ˜, แƒ›แƒ˜แƒ— แƒ›แƒ”แƒขแƒ˜แƒ แƒ›แƒ˜แƒกแƒ˜ แƒ’แƒแƒ›แƒขแƒแƒ แƒฃแƒœแƒแƒ แƒ˜แƒแƒœแƒแƒ‘แƒ. แƒžแƒ แƒ˜แƒœแƒชแƒ˜แƒžแƒจแƒ˜, แƒแƒกแƒ” แƒฎแƒ“แƒ”แƒ‘แƒ แƒœแƒแƒ™แƒแƒ“แƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒกแƒจแƒขแƒแƒ‘แƒ˜แƒ แƒ”แƒ‘แƒ - แƒœแƒแƒ›แƒกแƒฎแƒ•แƒ แƒ”แƒ•แƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ—. แƒ›แƒแƒ’แƒ แƒแƒ› แƒ แƒแƒช แƒ›แƒ”แƒขแƒ˜ แƒœแƒแƒขแƒ”แƒฎแƒ˜ แƒ’แƒแƒฅแƒ•แƒ—, แƒ›แƒ˜แƒ— แƒฃแƒคแƒ แƒ แƒ›แƒแƒฆแƒแƒšแƒ˜แƒ แƒคแƒแƒกแƒ˜. แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒœแƒแƒขแƒ”แƒฎแƒ˜ แƒฆแƒ˜แƒ แƒก 1,5 แƒชแƒ”แƒœแƒขแƒ˜ แƒกแƒแƒแƒ—แƒจแƒ˜ แƒ“แƒ แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ—แƒ˜ 1.4 แƒชแƒ”แƒœแƒขแƒ˜ แƒงแƒแƒ•แƒ”แƒšแƒ˜ แƒ›แƒ˜แƒšแƒ˜แƒแƒœแƒ˜ PUT แƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ˜แƒก แƒ”แƒ แƒ—แƒ”แƒฃแƒšแƒ–แƒ”.

แƒ›แƒแƒ“แƒ˜แƒ— แƒจแƒ”แƒ•แƒฅแƒ›แƒœแƒแƒ— แƒแƒฎแƒแƒšแƒ˜ แƒœแƒแƒ™แƒแƒ“แƒ˜ แƒกแƒแƒฎแƒ”แƒšแƒ˜แƒ— แƒแƒ•แƒ˜แƒ แƒ‘แƒ˜แƒšแƒ”แƒ—แƒ”แƒ‘แƒ˜1 แƒœแƒแƒญแƒ”แƒ แƒ˜ แƒกแƒแƒ™แƒ›แƒแƒ แƒ˜แƒกแƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒ›แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก:

Aviasales API แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ Amazon Kinesis-แƒ—แƒแƒœ แƒ“แƒ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒกแƒ˜แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜แƒ—
แƒแƒฎแƒšแƒ แƒ›แƒแƒ“แƒ˜แƒ— แƒจแƒ”แƒ•แƒฅแƒ›แƒœแƒแƒ— แƒกแƒฎแƒ•แƒ แƒ—แƒ”แƒ›แƒ แƒกแƒแƒฎแƒ”แƒšแƒ˜แƒ— แƒกแƒžแƒ”แƒชแƒ˜แƒแƒšแƒฃแƒ แƒ˜_แƒœแƒแƒ™แƒแƒ“แƒ˜:

Aviasales API แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ Amazon Kinesis-แƒ—แƒแƒœ แƒ“แƒ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒกแƒ˜แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜แƒ—

แƒžแƒ แƒแƒ“แƒ˜แƒฃแƒกแƒ”แƒ แƒ˜แƒก แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ

แƒ“แƒแƒ•แƒแƒšแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒกแƒแƒแƒœแƒแƒšแƒ˜แƒ–แƒ”แƒ‘แƒšแƒแƒ“ แƒกแƒแƒ™แƒ›แƒแƒ แƒ˜แƒกแƒ˜แƒ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒ— แƒฉแƒ•แƒ”แƒฃแƒšแƒ”แƒ‘แƒ แƒ˜แƒ•แƒ˜ EC2 แƒ˜แƒœแƒกแƒขแƒแƒœแƒชแƒ˜แƒ, แƒ แƒแƒ’แƒแƒ แƒช แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ›แƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒ”แƒšแƒ˜. แƒ”แƒก แƒแƒ  แƒฃแƒœแƒ“แƒ แƒ˜แƒงแƒแƒก แƒ›แƒซแƒšแƒแƒ•แƒ แƒ˜, แƒซแƒ•แƒ˜แƒ แƒแƒ“แƒฆแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ•แƒ˜แƒ แƒขแƒฃแƒแƒšแƒฃแƒ แƒ˜ แƒ›แƒแƒœแƒฅแƒแƒœแƒ; spot t2.micro แƒ™แƒแƒ แƒ’แƒแƒ“ แƒ˜แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒก.

แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ•แƒแƒœแƒ˜ แƒจแƒ”แƒœแƒ˜แƒจแƒ•แƒœแƒ: แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒ— แƒกแƒฃแƒ แƒแƒ—แƒ˜ - Amazon Linux AMI 2018.03.0, แƒ›แƒแƒก แƒแƒฅแƒ•แƒก แƒœแƒแƒ™แƒšแƒ”แƒ‘แƒ˜ แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ˜ Kinesis Agent-แƒ˜แƒก แƒกแƒฌแƒ แƒแƒคแƒแƒ“ แƒ’แƒแƒกแƒแƒจแƒ•แƒ”แƒ‘แƒแƒ“.

แƒ’แƒแƒ“แƒแƒ“แƒ˜แƒ— EC2 แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ–แƒ”, แƒจแƒ”แƒฅแƒ›แƒ”แƒœแƒ˜แƒ— แƒแƒฎแƒแƒšแƒ˜ แƒ•แƒ˜แƒ แƒขแƒฃแƒแƒšแƒฃแƒ แƒ˜ แƒ›แƒแƒœแƒฅแƒแƒœแƒ, แƒแƒ˜แƒ แƒฉแƒ˜แƒ”แƒ— แƒกแƒแƒกแƒฃแƒ แƒ•แƒ”แƒšแƒ˜ AMI แƒขแƒ˜แƒžแƒ˜แƒก t2.micro, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒจแƒ”แƒ“แƒ˜แƒก แƒฃแƒคแƒแƒกแƒ แƒ˜แƒแƒ แƒฃแƒกแƒจแƒ˜:

Aviasales API แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ Amazon Kinesis-แƒ—แƒแƒœ แƒ“แƒ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒกแƒ˜แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜แƒ—
แƒ˜แƒ›แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ› แƒแƒฎแƒšแƒแƒ“ แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒš แƒ•แƒ˜แƒ แƒขแƒฃแƒแƒšแƒฃแƒ  แƒ›แƒแƒœแƒฅแƒแƒœแƒแƒก แƒจแƒ”แƒ”แƒซแƒšแƒแƒก Kinesis แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ—แƒแƒœ แƒฃแƒ แƒ—แƒ˜แƒ”แƒ แƒ—แƒแƒ‘แƒ, แƒ›แƒแƒก แƒแƒ›แƒ˜แƒก แƒฃแƒคแƒšแƒ”แƒ‘แƒ แƒฃแƒœแƒ“แƒ แƒ›แƒ˜แƒ”แƒœแƒ˜แƒญแƒแƒก. แƒแƒ›แƒ˜แƒก แƒกแƒแƒฃแƒ™แƒ”แƒ—แƒ”แƒกแƒ แƒ’แƒ–แƒแƒ IAM แƒ แƒแƒšแƒ˜แƒก แƒ›แƒ˜แƒœแƒ˜แƒญแƒ”แƒ‘แƒ. แƒแƒ›แƒ˜แƒขแƒแƒ›, แƒœแƒแƒ‘แƒ˜แƒฏแƒ˜ 3: แƒ˜แƒœแƒกแƒขแƒแƒœแƒชแƒ˜แƒ˜แƒก แƒ“แƒ”แƒขแƒแƒšแƒ”แƒ‘แƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ”แƒ™แƒ แƒแƒœแƒ–แƒ”, แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒแƒ˜แƒ แƒฉแƒ˜แƒแƒ— แƒจแƒ”แƒฅแƒ›แƒ”แƒœแƒ˜แƒ— แƒแƒฎแƒแƒšแƒ˜ IAM แƒ แƒแƒšแƒ˜:

IAM แƒ แƒแƒšแƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ EC2-แƒกแƒ—แƒ•แƒ˜แƒก
Aviasales API แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ Amazon Kinesis-แƒ—แƒแƒœ แƒ“แƒ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒกแƒ˜แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜แƒ—
แƒคแƒแƒœแƒฏแƒแƒ แƒแƒจแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ˜แƒฎแƒกแƒœแƒ”แƒ‘แƒ, แƒแƒ˜แƒ แƒฉแƒ˜แƒ”แƒ—, แƒ แƒแƒ› แƒฉแƒ•แƒ”แƒœ แƒ•แƒฅแƒ›แƒœแƒ˜แƒ— แƒแƒฎแƒแƒš แƒ แƒแƒšแƒก EC2-แƒกแƒ—แƒ•แƒ˜แƒก แƒ“แƒ แƒ’แƒแƒ“แƒแƒ“แƒ˜แƒ— แƒœแƒ”แƒ‘แƒแƒ แƒ—แƒ•แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒœแƒงแƒแƒคแƒ˜แƒšแƒ”แƒ‘แƒแƒจแƒ˜:

Aviasales API แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ Amazon Kinesis-แƒ—แƒแƒœ แƒ“แƒ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒกแƒ˜แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜แƒ—
แƒขแƒ แƒ”แƒœแƒ˜แƒœแƒ’แƒ˜แƒก แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—, แƒฉแƒ•แƒ”แƒœ แƒแƒ  แƒ›แƒแƒ’แƒ•แƒ˜แƒฌแƒ”แƒ•แƒก แƒ แƒ”แƒกแƒฃแƒ แƒกแƒ”แƒ‘แƒ˜แƒก แƒฃแƒคแƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒ แƒชแƒ•แƒšแƒแƒ•แƒแƒœแƒ˜ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒงแƒ•แƒ”แƒšแƒ แƒกแƒ˜แƒ แƒ—แƒฃแƒšแƒ”แƒจแƒ˜ แƒจแƒ”แƒ›แƒแƒกแƒ•แƒšแƒ, แƒแƒ›แƒ˜แƒขแƒแƒ› แƒฉแƒ•แƒ”แƒœ แƒ•แƒ˜แƒ แƒฉแƒ”แƒ•แƒ— Amazon-แƒ˜แƒก แƒ›แƒ˜แƒ”แƒ  แƒฌแƒ˜แƒœแƒแƒกแƒฌแƒแƒ  แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒ˜แƒ แƒ”แƒ‘แƒฃแƒš แƒžแƒแƒšแƒ˜แƒขแƒ˜แƒ™แƒแƒก: AmazonKinesisFullAccess แƒ“แƒ CloudWatchFullAccess.

แƒ›แƒแƒ“แƒ˜แƒ— แƒ›แƒ˜แƒ•แƒชแƒ”แƒ— แƒ แƒแƒ˜แƒ›แƒ” แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ•แƒแƒœแƒ˜ แƒกแƒแƒฎแƒ”แƒšแƒ˜ แƒแƒ› แƒ แƒแƒšแƒก, แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“: EC2-KinesisStreams-FullAccess. แƒจแƒ”แƒ“แƒ”แƒ’แƒ˜ แƒฃแƒœแƒ“แƒ แƒ˜แƒงแƒแƒก แƒ˜แƒ’แƒ˜แƒ•แƒ”, แƒ แƒแƒช แƒœแƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ˜แƒ แƒฅแƒ•แƒ”แƒ›แƒแƒ— แƒ›แƒแƒชแƒ”แƒ›แƒฃแƒš แƒกแƒฃแƒ แƒแƒ—แƒ–แƒ”:

Aviasales API แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ Amazon Kinesis-แƒ—แƒแƒœ แƒ“แƒ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒกแƒ˜แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜แƒ—
แƒแƒ› แƒแƒฎแƒแƒšแƒ˜ แƒ แƒแƒšแƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒแƒ  แƒ“แƒแƒ’แƒแƒ•แƒ˜แƒฌแƒงแƒ“แƒ”แƒ— แƒ›แƒ˜แƒกแƒ˜ แƒ›แƒ˜แƒ›แƒแƒ’แƒ แƒ”แƒ‘แƒ แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒš แƒ•แƒ˜แƒ แƒขแƒฃแƒแƒšแƒฃแƒ แƒ˜ แƒ›แƒแƒœแƒฅแƒแƒœแƒ˜แƒก แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ–แƒ”:

Aviasales API แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ Amazon Kinesis-แƒ—แƒแƒœ แƒ“แƒ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒกแƒ˜แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜แƒ—
แƒฉแƒ•แƒ”แƒœ แƒกแƒฎแƒ•แƒแƒก แƒแƒ แƒแƒคแƒ”แƒ แƒก แƒ•แƒชแƒ•แƒšแƒ˜แƒ— แƒแƒ› แƒ”แƒ™แƒ แƒแƒœแƒ–แƒ” แƒ“แƒ แƒ’แƒแƒ“แƒแƒ•แƒ“แƒ˜แƒ•แƒแƒ แƒ— แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒคแƒแƒœแƒฏแƒ แƒ”แƒ‘แƒ–แƒ”.

แƒ›แƒงแƒแƒ แƒ˜ แƒ“แƒ˜แƒกแƒ™แƒ˜แƒก แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ“แƒแƒ แƒฉแƒ”แƒก แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ•แƒแƒ“, แƒ˜แƒกแƒ”แƒ•แƒ” แƒ แƒแƒ’แƒแƒ แƒช แƒขแƒ”แƒ’แƒ”แƒ‘แƒ˜ (แƒ—แƒฃแƒ›แƒชแƒ แƒ™แƒแƒ แƒ’แƒ˜ แƒžแƒ แƒแƒฅแƒขแƒ˜แƒ™แƒแƒ แƒขแƒ”แƒ’แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ, แƒงแƒแƒ•แƒ”แƒš แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜, แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒก แƒ›แƒ˜แƒ”แƒชแƒ˜แƒ— แƒกแƒแƒฎแƒ”แƒšแƒ˜ แƒ“แƒ แƒ›แƒ˜แƒฃแƒ—แƒ˜แƒ—แƒ”แƒ— แƒ’แƒแƒ แƒ”แƒ›แƒ).

แƒแƒฎแƒšแƒ แƒฉแƒ•แƒ”แƒœ แƒ•แƒ˜แƒ›แƒงแƒแƒคแƒ”แƒ‘แƒ˜แƒ— แƒœแƒแƒ‘แƒ˜แƒฏแƒ˜ 6: แƒฃแƒกแƒแƒคแƒ แƒ—แƒฎแƒแƒ”แƒ‘แƒ˜แƒก แƒฏแƒ’แƒฃแƒคแƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒฉแƒแƒœแƒแƒ แƒ—แƒ–แƒ”, แƒกแƒแƒ“แƒแƒช แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒจแƒ”แƒฅแƒ›แƒœแƒแƒ— แƒแƒฎแƒแƒšแƒ˜ แƒแƒœ แƒ›แƒ˜แƒฃแƒ—แƒ˜แƒ—แƒแƒ— แƒแƒ แƒกแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒฃแƒกแƒแƒคแƒ แƒ—แƒฎแƒแƒ”แƒ‘แƒ˜แƒก แƒฏแƒ’แƒฃแƒคแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ’แƒแƒซแƒšแƒ”แƒ•แƒ— แƒ“แƒแƒฃแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ“แƒ”แƒ— ssh (แƒžแƒแƒ แƒขแƒ˜ 22) แƒ˜แƒœแƒกแƒขแƒแƒœแƒชแƒ˜แƒแƒก. แƒแƒ˜แƒ แƒฉแƒ˜แƒ”แƒ— แƒฌแƒงแƒแƒ แƒ -> แƒฉแƒ”แƒ›แƒ˜ IP แƒ˜แƒฅ แƒ“แƒ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ’แƒแƒฃแƒจแƒ•แƒแƒ— แƒ”แƒ’แƒ–แƒ”แƒ›แƒžแƒšแƒแƒ แƒ˜.

Aviasales API แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ Amazon Kinesis-แƒ—แƒแƒœ แƒ“แƒ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒกแƒ˜แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜แƒ—
แƒ แƒแƒ’แƒแƒ แƒช แƒ™แƒ˜ แƒ˜แƒก แƒ’แƒแƒ“แƒแƒ“แƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒฃแƒš แƒกแƒขแƒแƒขแƒฃแƒกแƒ–แƒ”, แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒกแƒชแƒแƒ“แƒแƒ— แƒ›แƒแƒกแƒ—แƒแƒœ แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒ ssh-แƒ˜แƒก แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒ˜แƒ—.

แƒ˜แƒ›แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ› แƒจแƒ”แƒซแƒšแƒแƒ— Kinesis Agent-แƒ—แƒแƒœ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ, แƒ›แƒแƒœแƒฅแƒแƒœแƒแƒกแƒ—แƒแƒœ แƒฌแƒแƒ แƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ— แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒจแƒ”แƒ˜แƒงแƒ•แƒแƒœแƒแƒ— แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒขแƒ”แƒ แƒ›แƒ˜แƒœแƒแƒšแƒจแƒ˜:

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

แƒแƒฎแƒšแƒ แƒ’แƒแƒ“แƒ›แƒแƒ•แƒฌแƒ”แƒ แƒแƒ— แƒžแƒ˜แƒ—แƒแƒœแƒ˜แƒก แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ›แƒแƒ˜แƒ—แƒฎแƒแƒ•แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒก 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. แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ“แƒแƒ•แƒชแƒ”แƒ›แƒ— แƒกแƒแƒ—แƒแƒฃแƒ แƒก แƒŸแƒ”แƒขแƒแƒœแƒ˜แƒ— แƒ“แƒ แƒ•แƒ˜แƒ—แƒฎแƒแƒ•แƒ— แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒก แƒแƒ› แƒ™แƒšแƒแƒกแƒจแƒ˜:

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

Aviasales API แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ Amazon Kinesis-แƒ—แƒแƒœ แƒ“แƒ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒกแƒ˜แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜แƒ—
แƒ“แƒ แƒฉแƒ•แƒ”แƒœ แƒ•แƒฃแƒงแƒฃแƒ แƒ”แƒ‘แƒ— แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒก แƒจแƒ”แƒ“แƒ”แƒ’แƒก แƒแƒ’แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜แƒก แƒŸแƒฃแƒ แƒœแƒแƒšแƒ”แƒ‘แƒจแƒ˜ แƒ“แƒ แƒ›แƒแƒœแƒ˜แƒขแƒแƒ แƒ˜แƒœแƒ’แƒ˜แƒก แƒฉแƒแƒœแƒแƒ แƒ—แƒ–แƒ” แƒแƒ•แƒ˜แƒแƒฎแƒแƒ–แƒ”แƒ‘แƒ˜แƒก_แƒ‘แƒ˜แƒšแƒ”แƒ—แƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒœแƒแƒ™แƒแƒ“แƒจแƒ˜:

tail -f /var/log/aws-kinesis-agent/aws-kinesis-agent.log

Aviasales API แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ Amazon Kinesis-แƒ—แƒแƒœ แƒ“แƒ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒกแƒ˜แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜แƒ—
Aviasales API แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ Amazon Kinesis-แƒ—แƒแƒœ แƒ“แƒ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒกแƒ˜แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜แƒ—
แƒ แƒแƒ’แƒแƒ แƒช แƒฎแƒ”แƒ“แƒแƒ•แƒ—, แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก แƒ“แƒ Kinesis Agent แƒฌแƒแƒ แƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ— แƒแƒ’แƒ–แƒแƒ•แƒœแƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒก แƒœแƒแƒ™แƒแƒ“แƒจแƒ˜. แƒแƒฎแƒšแƒ แƒ›แƒแƒ“แƒ˜แƒ— แƒ“แƒแƒ•แƒแƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒ˜แƒ แƒแƒ— แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ”แƒšแƒ˜.

Kinesis Data Analytics-แƒ˜แƒก แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ

แƒ›แƒแƒ“แƒ˜แƒ— แƒ’แƒแƒ“แƒแƒ•แƒ˜แƒ“แƒ”แƒ— แƒ›แƒ—แƒ”แƒšแƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒก แƒชแƒ”แƒœแƒขแƒ แƒแƒšแƒฃแƒ  แƒ™แƒแƒ›แƒžแƒแƒœแƒ”แƒœแƒขแƒ–แƒ” - แƒจแƒ”แƒฅแƒ›แƒ”แƒœแƒ˜แƒ— แƒแƒฎแƒแƒšแƒ˜ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ Kinesis Data Analytics-แƒจแƒ˜, แƒกแƒแƒฎแƒ”แƒšแƒแƒ“ kinesis_analytics_airlines_app:

Aviasales API แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ Amazon Kinesis-แƒ—แƒแƒœ แƒ“แƒ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒกแƒ˜แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜แƒ—
Kinesis Data Analytics แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ’แƒแƒซแƒšแƒ”แƒ•แƒ— แƒ’แƒแƒœแƒแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒแƒ— แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ แƒ”แƒแƒšแƒฃแƒ  แƒ“แƒ แƒแƒจแƒ˜ แƒแƒœแƒแƒšแƒ˜แƒขแƒ˜แƒ™แƒ Kinesis Streams-แƒ“แƒแƒœ SQL แƒ”แƒœแƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—. แƒ”แƒก แƒแƒ แƒ˜แƒก แƒกแƒ แƒฃแƒšแƒแƒ“ แƒแƒ•แƒขแƒแƒกแƒ™แƒแƒšแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜ (แƒ’แƒแƒœแƒกแƒฎแƒ•แƒแƒ•แƒ”แƒ‘แƒ˜แƒ— Kinesis Streams-แƒ˜แƒกแƒ’แƒแƒœ), แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช:

  1. แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ’แƒแƒซแƒšแƒ”แƒ•แƒ— แƒจแƒ”แƒฅแƒ›แƒœแƒแƒ— แƒแƒฎแƒแƒšแƒ˜ แƒœแƒแƒ™แƒแƒ“แƒ”แƒ‘แƒ˜ (Output Stream) แƒฌแƒงแƒแƒ แƒแƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ˜แƒก แƒกแƒแƒคแƒฃแƒซแƒ•แƒ”แƒšแƒ–แƒ”;
  2. แƒฃแƒ–แƒ แƒฃแƒœแƒ•แƒ”แƒšแƒงแƒแƒคแƒก แƒœแƒแƒ™แƒแƒ“แƒก แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ”แƒ‘แƒ˜แƒ—, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒฌแƒแƒ แƒ›แƒแƒ˜แƒจแƒ•แƒ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒก แƒ“แƒ แƒแƒก (Error Stream);
  3. แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒ แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒฃแƒ แƒแƒ“ แƒ’แƒแƒœแƒกแƒแƒ–แƒฆแƒ•แƒ แƒแƒก แƒจแƒ”แƒงแƒ•แƒแƒœแƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒกแƒฅแƒ”แƒ›แƒ (แƒกแƒแƒญแƒ˜แƒ แƒแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜ แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ แƒฎแƒ”แƒšแƒ˜แƒ— แƒฎแƒ”แƒšแƒแƒฎแƒšแƒ แƒ’แƒแƒœแƒกแƒแƒ–แƒฆแƒ•แƒ แƒ).

แƒ”แƒก แƒแƒ  แƒแƒ แƒ˜แƒก แƒ˜แƒแƒคแƒ˜ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜ - 0.11 แƒแƒจแƒจ แƒ“แƒแƒšแƒแƒ แƒ˜ แƒกแƒแƒ›แƒฃแƒจแƒแƒ แƒกแƒแƒแƒ—แƒจแƒ˜, แƒแƒกแƒ” แƒ แƒแƒ› แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒ— แƒ˜แƒ’แƒ˜ แƒคแƒ แƒ—แƒฎแƒ˜แƒšแƒแƒ“ แƒ“แƒ แƒฌแƒแƒจแƒแƒšแƒแƒ—, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ“แƒแƒแƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ—.

แƒ›แƒแƒ“แƒ˜แƒ— แƒ“แƒแƒ•แƒฃแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒแƒ— แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒฌแƒงแƒแƒ แƒแƒก:

Aviasales API แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ Amazon Kinesis-แƒ—แƒแƒœ แƒ“แƒ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒกแƒ˜แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜แƒ—
แƒแƒ˜แƒ แƒฉแƒ˜แƒ”แƒ— แƒœแƒแƒ™แƒแƒ“แƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒกแƒแƒช แƒ•แƒแƒžแƒ˜แƒ แƒ”แƒ‘แƒ— แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒแƒก (แƒแƒ•แƒ˜แƒแƒ™แƒแƒ›แƒžแƒแƒœแƒ˜แƒ_แƒ‘แƒ˜แƒšแƒ”แƒ—แƒ”แƒ‘แƒ˜):

Aviasales API แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ Amazon Kinesis-แƒ—แƒแƒœ แƒ“แƒ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒกแƒ˜แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜แƒ—
แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜, แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ“แƒแƒฃแƒ แƒ—แƒแƒ— แƒแƒฎแƒแƒšแƒ˜ IAM แƒ แƒแƒšแƒ˜, แƒ แƒแƒ—แƒ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒแƒ› แƒจแƒ”แƒซแƒšแƒแƒก แƒฌแƒแƒ˜แƒ™แƒ˜แƒ—แƒฎแƒแƒก แƒœแƒแƒ™แƒแƒ“แƒ˜แƒ“แƒแƒœ แƒ“แƒ แƒฉแƒแƒฌแƒ”แƒ แƒแƒก แƒœแƒแƒ™แƒแƒ“แƒจแƒ˜. แƒแƒ›แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก แƒกแƒแƒ™แƒ›แƒแƒ แƒ˜แƒกแƒ˜แƒ แƒแƒ แƒแƒคแƒ”แƒ แƒ˜ แƒจแƒ”แƒชแƒ•แƒแƒšแƒแƒ— แƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒก แƒœแƒ”แƒ‘แƒแƒ แƒ—แƒ•แƒ”แƒ‘แƒ˜แƒก แƒ‘แƒšแƒแƒ™แƒจแƒ˜:

Aviasales API แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ Amazon Kinesis-แƒ—แƒแƒœ แƒ“แƒ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒกแƒ˜แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜แƒ—
แƒแƒฎแƒšแƒ แƒ›แƒแƒ•แƒ˜แƒ—แƒฎแƒแƒ•แƒแƒ— แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒกแƒฅแƒ”แƒ›แƒ˜แƒก แƒแƒฆแƒ›แƒแƒฉแƒ”แƒœแƒ แƒœแƒแƒ™แƒแƒ“แƒจแƒ˜; แƒแƒ›แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก แƒ“แƒแƒแƒฌแƒ™แƒแƒžแƒฃแƒœแƒ”แƒ— แƒฆแƒ˜แƒšแƒแƒ™แƒ–แƒ” โ€žDiscover schemaโ€œ. แƒจแƒ”แƒ“แƒ”แƒ’แƒแƒ“, IAM แƒ แƒแƒšแƒ˜ แƒ’แƒแƒœแƒแƒฎแƒšแƒ“แƒ”แƒ‘แƒ (แƒจแƒ”แƒ˜แƒฅแƒ›แƒœแƒ”แƒ‘แƒ แƒแƒฎแƒแƒšแƒ˜) แƒ“แƒ แƒกแƒฅแƒ”แƒ›แƒ˜แƒก แƒแƒ›แƒแƒชแƒœแƒแƒ‘แƒ แƒ“แƒแƒ˜แƒฌแƒงแƒ”แƒ‘แƒ แƒœแƒแƒ™แƒแƒ“แƒจแƒ˜ แƒฃแƒ™แƒ•แƒ” แƒจแƒ”แƒ›แƒแƒกแƒฃแƒšแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒ“แƒแƒœ:

Aviasales API แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ Amazon Kinesis-แƒ—แƒแƒœ แƒ“แƒ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒกแƒ˜แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜แƒ—
แƒแƒฎแƒšแƒ แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ’แƒแƒ“แƒแƒฎแƒ•แƒ˜แƒ“แƒ”แƒ— SQL แƒ แƒ”แƒ“แƒแƒฅแƒขแƒแƒ แƒจแƒ˜. แƒแƒ› แƒฆแƒ˜แƒšแƒแƒ™แƒ–แƒ” แƒ“แƒแƒฌแƒ™แƒแƒžแƒฃแƒœแƒ”แƒ‘แƒ˜แƒกแƒแƒก แƒ’แƒแƒ›แƒแƒฉแƒœแƒ“แƒ”แƒ‘แƒ แƒคแƒแƒœแƒฏแƒแƒ แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ’แƒ—แƒฎแƒแƒ•แƒ— แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒแƒก - แƒแƒ˜แƒ แƒฉแƒ˜แƒ”แƒ— แƒ แƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ แƒ’แƒกแƒฃแƒ แƒ—:

Aviasales API แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ Amazon Kinesis-แƒ—แƒแƒœ แƒ“แƒ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒกแƒ˜แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜แƒ—
แƒฉแƒแƒ“แƒ”แƒ— แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ SQL แƒ แƒ”แƒ“แƒแƒฅแƒขแƒแƒ แƒ˜แƒก แƒคแƒแƒœแƒฏแƒแƒ แƒแƒจแƒ˜ แƒ“แƒ แƒ“แƒแƒแƒญแƒ˜แƒ แƒ”แƒ— Save and Run 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-แƒจแƒ˜ แƒ—แƒฅแƒ•แƒ”แƒœ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ— แƒœแƒแƒ™แƒแƒ“แƒ”แƒ‘แƒ—แƒแƒœ (STREAM) แƒ“แƒ แƒขแƒฃแƒ›แƒ‘แƒแƒ”แƒ‘แƒ—แƒแƒœ (PUMPs) - แƒฃแƒฌแƒงแƒ•แƒ”แƒขแƒ˜ แƒฉแƒแƒกแƒ›แƒ˜แƒก แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒ˜, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒ”แƒ แƒ—แƒ˜ แƒœแƒแƒ™แƒแƒ“แƒ˜แƒ“แƒแƒœ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒก แƒกแƒฎแƒ•แƒ แƒœแƒแƒ™แƒแƒ“แƒจแƒ˜ แƒแƒ—แƒแƒ•แƒกแƒ”แƒ‘แƒ”แƒœ.

แƒ–แƒ”แƒ›แƒแƒ— แƒฌแƒแƒ แƒ›แƒแƒ“แƒ’แƒ”แƒœแƒ˜แƒšแƒ˜ SQL แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ แƒ”แƒซแƒ”แƒ‘แƒก แƒแƒ”แƒ แƒแƒคแƒšแƒแƒขแƒ˜แƒก แƒ‘แƒ˜แƒšแƒ”แƒ—แƒ”แƒ‘แƒก แƒฎแƒฃแƒ—แƒ˜ แƒแƒ—แƒแƒก แƒ แƒฃแƒ‘แƒšแƒ–แƒ” แƒ“แƒแƒ‘แƒแƒšแƒ˜ แƒฆแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ˜แƒ—. แƒงแƒ•แƒ”แƒšแƒ แƒฉแƒแƒœแƒแƒฌแƒ”แƒ แƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒ™แƒ›แƒแƒงแƒแƒคแƒ˜แƒšแƒ”แƒ‘แƒก แƒแƒ› แƒžแƒ˜แƒ แƒแƒ‘แƒ”แƒ‘แƒก, แƒ’แƒแƒœแƒ—แƒแƒ•แƒกแƒ“แƒ”แƒ‘แƒ DESTINATION_SQL_STREAM แƒœแƒแƒ™แƒแƒ“แƒจแƒ˜.

Aviasales API แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ Amazon Kinesis-แƒ—แƒแƒœ แƒ“แƒ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒกแƒ˜แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜แƒ—
แƒ“แƒแƒœแƒ˜แƒจแƒœแƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒ‘แƒšแƒแƒ™แƒจแƒ˜ แƒแƒ˜แƒ แƒฉแƒ˜แƒ”แƒ— special_stream แƒœแƒแƒ™แƒแƒ“แƒ˜, แƒฎแƒแƒšแƒ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒœแƒแƒ™แƒแƒ“แƒ˜แƒก แƒกแƒแƒฎแƒ”แƒšแƒ˜ DESTINATION_SQL_STREAM แƒฉแƒแƒ›แƒแƒกแƒแƒจแƒšแƒ”แƒš แƒกแƒ˜แƒแƒจแƒ˜:

Aviasales API แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ Amazon Kinesis-แƒ—แƒแƒœ แƒ“แƒ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒกแƒ˜แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜แƒ—
แƒงแƒ•แƒ”แƒšแƒ แƒ›แƒแƒœแƒ˜แƒžแƒฃแƒšแƒแƒชแƒ˜แƒ˜แƒก แƒจแƒ”แƒ“แƒ”แƒ’แƒ˜ แƒฃแƒœแƒ“แƒ แƒ˜แƒงแƒแƒก แƒ›แƒกแƒ’แƒแƒ•แƒกแƒ˜ แƒกแƒฃแƒ แƒแƒ—แƒ˜แƒก แƒ›แƒกแƒ’แƒแƒ•แƒกแƒ˜:

Aviasales API แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ Amazon Kinesis-แƒ—แƒแƒœ แƒ“แƒ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒกแƒ˜แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜แƒ—

SNS แƒ—แƒ”แƒ›แƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ แƒ“แƒ แƒ’แƒแƒ›แƒแƒฌแƒ”แƒ แƒ

แƒ’แƒแƒ“แƒแƒ“แƒ˜แƒ— แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒจแƒ˜ แƒ“แƒ แƒจแƒ”แƒฅแƒ›แƒ”แƒœแƒ˜แƒ— แƒแƒฎแƒแƒšแƒ˜ แƒ—แƒ”แƒ›แƒ, แƒกแƒแƒฎแƒ”แƒšแƒฌแƒแƒ“แƒ”แƒ‘แƒ˜แƒ— Airlines:

Aviasales API แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ Amazon Kinesis-แƒ—แƒแƒœ แƒ“แƒ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒกแƒ˜แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜แƒ—
แƒ’แƒแƒ›แƒแƒ˜แƒฌแƒ”แƒ แƒ”แƒ— แƒ”แƒก แƒ—แƒ”แƒ›แƒ แƒ“แƒ แƒ›แƒ˜แƒฃแƒ—แƒ˜แƒ—แƒ”แƒ— แƒ›แƒแƒ‘แƒ˜แƒšแƒฃแƒ แƒ˜ แƒขแƒ”แƒšแƒ”แƒคแƒแƒœแƒ˜แƒก แƒœแƒแƒ›แƒ”แƒ แƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ–แƒ”แƒช แƒ’แƒแƒ˜แƒ’แƒ–แƒแƒ•แƒœแƒ”แƒ‘แƒ SMS แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜:

Aviasales API แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ Amazon Kinesis-แƒ—แƒแƒœ แƒ“แƒ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒกแƒ˜แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜แƒ—

แƒจแƒ”แƒฅแƒ›แƒ”แƒœแƒ˜แƒ— แƒชแƒฎแƒ แƒ˜แƒšแƒ˜ DynamoDB-แƒจแƒ˜

แƒ›แƒแƒ—แƒ˜ airline_tickets แƒœแƒแƒ™แƒแƒ“แƒ˜แƒ“แƒแƒœ แƒœแƒ”แƒ“แƒšแƒ”แƒฃแƒšแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒœแƒแƒฎแƒแƒ“, แƒจแƒ”แƒ•แƒฅแƒ›แƒœแƒแƒ— แƒชแƒฎแƒ แƒ˜แƒšแƒ˜ DynamoDB-แƒจแƒ˜ แƒ˜แƒ›แƒแƒ•แƒ” แƒกแƒแƒฎแƒ”แƒšแƒ˜แƒ—. แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— record_id แƒ แƒแƒ’แƒแƒ แƒช แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒแƒ“แƒ˜ แƒ’แƒแƒกแƒแƒฆแƒ”แƒ‘แƒ˜:

Aviasales API แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ Amazon Kinesis-แƒ—แƒแƒœ แƒ“แƒ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒกแƒ˜แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜แƒ—

แƒšแƒแƒ›แƒ‘แƒ“แƒ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ˜แƒก แƒ™แƒแƒšแƒ”แƒฅแƒขแƒแƒ แƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ

แƒ›แƒแƒ“แƒ˜แƒ— แƒจแƒ”แƒ•แƒฅแƒ›แƒœแƒแƒ— แƒšแƒแƒ›แƒ‘แƒ“แƒ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ แƒกแƒแƒฎแƒ”แƒšแƒฌแƒแƒ“แƒ”แƒ‘แƒ˜แƒ— แƒ™แƒแƒšแƒ”แƒฅแƒขแƒแƒ แƒ˜, แƒ แƒแƒ›แƒšแƒ˜แƒก แƒแƒ›แƒแƒชแƒแƒœแƒ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒแƒ•แƒ˜แƒแƒ™แƒแƒ›แƒžแƒแƒœแƒ˜แƒ˜แƒก_แƒ‘แƒ˜แƒšแƒ”แƒ—แƒ”แƒ‘แƒ˜แƒก แƒœแƒแƒ™แƒแƒ“แƒ˜แƒก แƒ’แƒแƒ›แƒแƒ™แƒ˜แƒ—แƒฎแƒ•แƒ แƒ“แƒ แƒ—แƒฃ แƒ˜แƒฅ แƒแƒฎแƒแƒšแƒ˜ แƒฉแƒแƒœแƒแƒฌแƒ”แƒ แƒ”แƒ‘แƒ˜ แƒแƒฆแƒ›แƒแƒฉแƒœแƒ“แƒ”แƒ‘แƒ, แƒฉแƒแƒกแƒ•แƒ˜แƒ— แƒ”แƒก แƒฉแƒแƒœแƒแƒฌแƒ”แƒ แƒ”แƒ‘แƒ˜ DynamoDB แƒชแƒฎแƒ แƒ˜แƒšแƒจแƒ˜. แƒชแƒฎแƒแƒ“แƒ˜แƒ, แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ•แƒ˜ แƒฃแƒคแƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ แƒ“แƒ, แƒแƒ› แƒšแƒแƒ›แƒ‘แƒ“แƒแƒก แƒฃแƒœแƒ“แƒ แƒฐแƒฅแƒแƒœแƒ“แƒ”แƒก แƒฌแƒแƒ™แƒ˜แƒ—แƒฎแƒ•แƒ˜แƒก แƒฌแƒ•แƒ“แƒแƒ›แƒ Kinesis แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒœแƒแƒ™แƒแƒ“แƒ–แƒ” แƒ“แƒ แƒฉแƒแƒฌแƒ”แƒ แƒ˜แƒก แƒฌแƒ•แƒ“แƒแƒ›แƒ DynamoDB-แƒ–แƒ”.

IAM แƒ แƒแƒšแƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ แƒ™แƒแƒšแƒ”แƒฅแƒขแƒแƒ แƒ˜แƒก แƒšแƒแƒ›แƒ‘แƒ“แƒ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก
แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜, แƒ›แƒแƒ“แƒ˜แƒ— แƒจแƒ”แƒ•แƒฅแƒ›แƒœแƒแƒ— แƒแƒฎแƒแƒšแƒ˜ IAM แƒ แƒแƒšแƒ˜ แƒšแƒแƒ›แƒ‘แƒ“แƒแƒกแƒ—แƒ•แƒ˜แƒก, แƒกแƒแƒฎแƒ”แƒšแƒแƒ“ Lambda-TicketsProcessingRole:

Aviasales API แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ Amazon Kinesis-แƒ—แƒแƒœ แƒ“แƒ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒกแƒ˜แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜แƒ—
แƒขแƒ”แƒกแƒขแƒ˜แƒก แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒฌแƒ˜แƒœแƒแƒกแƒฌแƒแƒ  แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ AmazonKinesisReadOnlyAccess แƒ“แƒ AmazonDynamoDBFullAccess แƒžแƒแƒšแƒ˜แƒขแƒ˜แƒ™แƒ แƒกแƒแƒ™แƒ›แƒแƒแƒ“ แƒจแƒ”แƒกแƒแƒคแƒ”แƒ แƒ˜แƒกแƒ˜แƒ, แƒ แƒแƒ’แƒแƒ แƒช แƒ”แƒก แƒœแƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ˜แƒ แƒฅแƒ•แƒ”แƒ›แƒแƒ— แƒ›แƒแƒชแƒ”แƒ›แƒฃแƒš แƒกแƒฃแƒ แƒแƒ—แƒ–แƒ”:

Aviasales API แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ Amazon Kinesis-แƒ—แƒแƒœ แƒ“แƒ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒกแƒ˜แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜แƒ—
Aviasales API แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ Amazon Kinesis-แƒ—แƒแƒœ แƒ“แƒ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒกแƒ˜แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜แƒ—

แƒ”แƒก แƒšแƒแƒ›แƒ‘แƒ“แƒ แƒฃแƒœแƒ“แƒ แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ˜แƒงแƒแƒก Kinesis-แƒ˜แƒก แƒขแƒ แƒ˜แƒ’แƒ”แƒ แƒ˜แƒ—, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒแƒฎแƒแƒšแƒ˜ แƒฉแƒแƒœแƒแƒฌแƒ”แƒ แƒ”แƒ‘แƒ˜ แƒจแƒ”แƒ“แƒ˜แƒก airline_stream-แƒจแƒ˜, แƒแƒ›แƒ˜แƒขแƒแƒ› แƒฉแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ“แƒแƒ•แƒแƒ›แƒแƒขแƒแƒ— แƒแƒฎแƒแƒšแƒ˜ แƒขแƒ แƒ˜แƒ’แƒ”แƒ แƒ˜:

Aviasales API แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ Amazon Kinesis-แƒ—แƒแƒœ แƒ“แƒ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒกแƒ˜แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜แƒ—
Aviasales API แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ Amazon Kinesis-แƒ—แƒแƒœ แƒ“แƒ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒกแƒ˜แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜แƒ—
แƒ แƒฉแƒ”แƒ‘แƒ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ™แƒแƒ“แƒ˜แƒก แƒฉแƒแƒกแƒ›แƒ แƒ“แƒ แƒšแƒแƒ›แƒ‘แƒ“แƒแƒก แƒจแƒ”แƒœแƒแƒฎแƒ•แƒ.

"""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()

แƒšแƒแƒ›แƒ‘แƒ“แƒ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ˜แƒก แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ

แƒแƒœแƒแƒšแƒแƒ’แƒ˜แƒฃแƒ แƒแƒ“ แƒ˜แƒฅแƒ›แƒœแƒ”แƒ‘แƒ แƒ›แƒ”แƒแƒ แƒ” แƒšแƒแƒ›แƒ‘แƒ“แƒ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ›แƒแƒœแƒ˜แƒขแƒแƒ แƒ˜แƒœแƒ’แƒก แƒ’แƒแƒฃแƒฌแƒ”แƒ•แƒก แƒ›แƒ”แƒแƒ แƒ” แƒœแƒแƒ™แƒแƒ“แƒก (special_stream) แƒ“แƒ แƒ’แƒแƒ’แƒ–แƒแƒ•แƒœแƒ˜แƒก แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒแƒก SNS-แƒจแƒ˜. แƒ›แƒแƒจแƒแƒกแƒแƒ“แƒแƒ›แƒ”, แƒแƒ› แƒšแƒแƒ›แƒ‘แƒ“แƒแƒก แƒฃแƒœแƒ“แƒ แƒฐแƒฅแƒแƒœแƒ“แƒ”แƒก แƒฌแƒ•แƒ“แƒแƒ›แƒ Kinesis-แƒ“แƒแƒœ แƒฌแƒแƒกแƒแƒ™แƒ˜แƒ—แƒฎแƒแƒ“ แƒ“แƒ แƒ›แƒแƒชแƒ”แƒ›แƒฃแƒš SNS แƒ—แƒ”แƒ›แƒแƒจแƒ˜ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒกแƒแƒ’แƒ–แƒแƒ•แƒœแƒแƒ“, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ SNS แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒก แƒ›แƒ˜แƒ”แƒ  แƒ’แƒแƒ”แƒ’แƒ–แƒแƒ•แƒœแƒ”แƒ‘แƒ แƒแƒ› แƒ—แƒ”แƒ›แƒ˜แƒก แƒงแƒ•แƒ”แƒšแƒ แƒแƒ‘แƒแƒœแƒ”แƒœแƒขแƒก (แƒ”แƒšแƒคแƒแƒกแƒขแƒ, SMS แƒ“แƒ แƒ.แƒจ.).

IAM แƒ แƒแƒšแƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ
แƒฏแƒ”แƒ  แƒ•แƒฅแƒ›แƒœแƒ˜แƒ— IAM แƒ แƒแƒšแƒก Lambda-KinesisAlarm แƒแƒ› แƒšแƒแƒ›แƒ‘แƒ“แƒแƒกแƒ—แƒ•แƒ˜แƒก แƒ“แƒ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒแƒ› แƒ แƒแƒšแƒก แƒ•แƒแƒœแƒ˜แƒญแƒ”แƒ‘แƒ— alarm_notifier lambda-แƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ˜แƒฅแƒ›แƒœแƒ”แƒ‘แƒ:

Aviasales API แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ Amazon Kinesis-แƒ—แƒแƒœ แƒ“แƒ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒกแƒ˜แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜แƒ—
Aviasales API แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ Amazon Kinesis-แƒ—แƒแƒœ แƒ“แƒ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒกแƒ˜แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜แƒ—

แƒแƒ› แƒšแƒแƒ›แƒ‘แƒ“แƒแƒ› แƒฃแƒœแƒ“แƒ แƒ˜แƒ›แƒฃแƒจแƒแƒแƒก แƒขแƒ แƒ˜แƒ’แƒ”แƒ แƒ–แƒ”, แƒ แƒแƒ› แƒแƒฎแƒแƒšแƒ˜ แƒฉแƒแƒœแƒแƒฌแƒ”แƒ แƒ”แƒ‘แƒ˜ แƒจแƒ”แƒ•แƒ˜แƒ“แƒ”แƒก special_stream-แƒจแƒ˜, แƒแƒกแƒ” แƒ แƒแƒ› แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ“แƒแƒแƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒ˜แƒ แƒแƒ— แƒขแƒ แƒ˜แƒ’แƒ”แƒ แƒ˜ แƒ˜แƒกแƒ”แƒ•แƒ”, แƒ แƒแƒ’แƒแƒ แƒช แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ•แƒแƒ™แƒ”แƒ—แƒ”แƒ— แƒ™แƒแƒšแƒ”แƒฅแƒขแƒแƒ แƒ˜แƒก แƒšแƒแƒ›แƒ‘แƒ“แƒแƒกแƒ—แƒ•แƒ˜แƒก.

แƒแƒ› แƒšแƒแƒ›แƒ‘แƒ“แƒแƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒกแƒแƒแƒ“แƒ•แƒ˜แƒšแƒ”แƒ‘แƒšแƒแƒ“, แƒ›แƒแƒ“แƒ˜แƒ— แƒจแƒ”แƒ›แƒแƒ•แƒ˜แƒขแƒแƒœแƒแƒ— แƒ’แƒแƒ แƒ”แƒ›แƒแƒก แƒแƒฎแƒแƒšแƒ˜ แƒชแƒ•แƒšแƒแƒ“แƒ˜ - TOPIC_ARN, แƒกแƒแƒ“แƒแƒช แƒ•แƒแƒ—แƒแƒ•แƒกแƒ”แƒ‘แƒ— ANR (Amazon Recourse Names) แƒแƒ•แƒ˜แƒแƒฎแƒแƒ–แƒ”แƒ‘แƒ˜แƒก แƒ—แƒ”แƒ›แƒ˜แƒก:

Aviasales API แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ Amazon Kinesis-แƒ—แƒแƒœ แƒ“แƒ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒกแƒ˜แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜แƒ—
แƒ“แƒ แƒฉแƒแƒ“แƒ”แƒ— แƒšแƒแƒ›แƒ‘แƒ“แƒ แƒ™แƒแƒ“แƒ˜, แƒ”แƒก แƒกแƒแƒ”แƒ แƒ—แƒแƒ“ แƒแƒ  แƒแƒ แƒ˜แƒก แƒ แƒ—แƒฃแƒšแƒ˜:

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))

แƒ แƒแƒ’แƒแƒ แƒช แƒฉแƒแƒœแƒก, แƒกแƒฌแƒแƒ แƒ”แƒ“ แƒแƒฅ แƒกแƒ แƒฃแƒšแƒ“แƒ”แƒ‘แƒ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒก แƒฎแƒ”แƒšแƒ˜แƒ— แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ. แƒ แƒฉแƒ”แƒ‘แƒ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒขแƒ”แƒกแƒขแƒ˜แƒ แƒ”แƒ‘แƒ แƒ“แƒ แƒ“แƒแƒ•แƒ แƒฌแƒ›แƒฃแƒœแƒ“แƒ”แƒ—, แƒ แƒแƒ› แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒกแƒฌแƒแƒ แƒแƒ“ แƒ’แƒ•แƒแƒฅแƒ•แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜.

แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ Terraform แƒ™แƒแƒ“แƒ˜แƒ“แƒแƒœ

แƒกแƒแƒญแƒ˜แƒ แƒ แƒ›แƒแƒ›แƒ–แƒแƒ“แƒ”แƒ‘แƒ

Terraform แƒแƒ แƒ˜แƒก แƒซแƒแƒšแƒ˜แƒแƒœ แƒ›แƒแƒกแƒแƒฎแƒ”แƒ แƒฎแƒ”แƒ‘แƒ”แƒšแƒ˜ แƒฆแƒ˜แƒ แƒ™แƒแƒ“แƒ˜แƒก แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒ›แƒ”แƒœแƒขแƒ˜ แƒ™แƒแƒ“แƒ˜แƒ“แƒแƒœ แƒ˜แƒœแƒคแƒ แƒแƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ˜แƒก แƒ’แƒแƒœแƒกแƒแƒ—แƒแƒ•แƒกแƒ”แƒ‘แƒšแƒแƒ“. แƒ›แƒแƒก แƒแƒฅแƒ•แƒก แƒกแƒแƒ™แƒฃแƒ—แƒแƒ แƒ˜ แƒกแƒ˜แƒœแƒขแƒแƒฅแƒกแƒ˜, แƒ แƒแƒ›แƒšแƒ˜แƒก แƒกแƒฌแƒแƒ•แƒšแƒแƒช แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜แƒ แƒ“แƒ แƒแƒฅแƒ•แƒก แƒ›แƒ แƒแƒ•แƒแƒšแƒ˜ แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜ แƒ˜แƒ›แƒ˜แƒกแƒ, แƒ—แƒฃ แƒ แƒแƒ’แƒแƒ  แƒ“แƒ แƒ แƒ แƒฃแƒœแƒ“แƒ แƒ’แƒแƒœแƒแƒ—แƒแƒ•แƒกแƒแƒก. Atom แƒ แƒ”แƒ“แƒแƒฅแƒขแƒแƒ แƒก แƒแƒœ Visual Studio Code-แƒก แƒแƒฅแƒ•แƒก แƒ›แƒ แƒแƒ•แƒแƒšแƒ˜ แƒ›แƒแƒกแƒแƒฎแƒ”แƒ แƒฎแƒ”แƒ‘แƒ”แƒšแƒ˜ แƒ“แƒแƒœแƒแƒ›แƒแƒขแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒแƒ“แƒ•แƒ˜แƒšแƒ”แƒ‘แƒก Terraform-แƒ—แƒแƒœ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒแƒก.

แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒฉแƒแƒ›แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒแƒ— แƒ“แƒ˜แƒกแƒขแƒ แƒ˜แƒ‘แƒฃแƒชแƒ˜แƒ แƒแƒฅแƒ”แƒ“แƒแƒœ แƒ’แƒแƒ›แƒแƒ›แƒ“แƒ˜แƒœแƒแƒ แƒ”,. Terraform-แƒ˜แƒก แƒงแƒ•แƒ”แƒšแƒ แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒšแƒแƒ‘แƒ˜แƒก แƒ“แƒ”แƒขแƒแƒšแƒฃแƒ แƒ˜ แƒแƒœแƒแƒšแƒ˜แƒ–แƒ˜ แƒกแƒชแƒ˜แƒšแƒ“แƒ”แƒ‘แƒ แƒแƒ› แƒกแƒขแƒแƒขแƒ˜แƒ˜แƒก แƒคแƒแƒ แƒ’แƒšแƒ”แƒ‘แƒก, แƒแƒ›แƒ˜แƒขแƒแƒ› แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ›แƒแƒ•แƒ˜แƒคแƒแƒ แƒ’แƒšแƒ”แƒ‘แƒ˜แƒ— แƒซแƒ˜แƒ แƒ˜แƒ—แƒแƒ“แƒ˜ แƒžแƒฃแƒœแƒฅแƒขแƒ”แƒ‘แƒ˜แƒ—.

แƒ แƒแƒ’แƒแƒ  แƒ’แƒแƒ แƒ‘แƒแƒ“แƒ

แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒก แƒกแƒ แƒฃแƒšแƒ˜ แƒ™แƒแƒ“แƒ˜แƒ แƒฉแƒ”แƒ›แƒก แƒกแƒแƒชแƒแƒ•แƒจแƒ˜. แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒ™แƒšแƒ”แƒ‘แƒ— แƒกแƒแƒชแƒแƒ•แƒก แƒกแƒแƒ™แƒฃแƒ—แƒแƒ  แƒ—แƒแƒ•แƒก. แƒ“แƒแƒฌแƒงแƒ”แƒ‘แƒแƒ›แƒ“แƒ” แƒฃแƒœแƒ“แƒ แƒ“แƒแƒ แƒฌแƒ›แƒฃแƒœแƒ“แƒ”แƒ—, แƒ แƒแƒ› แƒ“แƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ“แƒ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ’แƒแƒฅแƒ•แƒ— AWS CLI, แƒ แƒแƒ“แƒ’แƒแƒœ... Terraform แƒ›แƒแƒซแƒ”แƒ‘แƒœแƒ˜แƒก แƒกแƒ”แƒ แƒ—แƒ˜แƒคแƒ˜แƒ™แƒแƒขแƒ”แƒ‘แƒก ~/.aws/credentials แƒคแƒแƒ˜แƒšแƒจแƒ˜.

แƒ™แƒแƒ แƒ’แƒ˜ แƒžแƒ แƒแƒฅแƒขแƒ˜แƒ™แƒแƒ แƒ’แƒ”แƒ’แƒ›แƒ˜แƒก แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ แƒ›แƒ—แƒ”แƒšแƒ˜ แƒ˜แƒœแƒคแƒ แƒแƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ˜แƒก แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒแƒ›แƒ“แƒ”, แƒ แƒแƒ—แƒ แƒœแƒแƒฎแƒแƒ— แƒ แƒแƒก แƒฅแƒ›แƒœแƒ˜แƒก แƒแƒ›แƒŸแƒแƒ›แƒแƒ“ Terraform แƒฉแƒ•แƒ”แƒœแƒ—แƒ•แƒ˜แƒก แƒฆแƒ แƒฃแƒ‘แƒ”แƒšแƒจแƒ˜:

terraform.exe plan

แƒ—แƒฅแƒ•แƒ”แƒœ แƒ›แƒแƒ’แƒ”แƒ—แƒฎแƒแƒ•แƒ”แƒ‘แƒแƒ— แƒจแƒ”แƒ˜แƒงแƒ•แƒแƒœแƒแƒ— แƒขแƒ”แƒšแƒ”แƒคแƒแƒœแƒ˜แƒก แƒœแƒแƒ›แƒ”แƒ แƒ˜ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒกแƒแƒ’แƒ–แƒแƒ•แƒœแƒแƒ“. แƒแƒ› แƒ”แƒขแƒแƒžแƒ–แƒ” แƒ›แƒ˜แƒกแƒ˜ แƒจแƒ”แƒงแƒ•แƒแƒœแƒ แƒแƒฃแƒชแƒ˜แƒšแƒ”แƒ‘แƒ”แƒšแƒ˜ แƒแƒ  แƒแƒ แƒ˜แƒก.

Aviasales API แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ Amazon Kinesis-แƒ—แƒแƒœ แƒ“แƒ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒกแƒ˜แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜แƒ—
แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ˜แƒก แƒกแƒแƒแƒžแƒ”แƒ แƒแƒชแƒ˜แƒ แƒ’แƒ”แƒ’แƒ›แƒ˜แƒก แƒ’แƒแƒแƒœแƒแƒšแƒ˜แƒ–แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒ“แƒแƒ•แƒ˜แƒฌแƒงแƒแƒ— แƒ แƒ”แƒกแƒฃแƒ แƒกแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ:

terraform.exe apply

แƒแƒ› แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ’แƒ–แƒแƒ•แƒœแƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒ—แƒฅแƒ•แƒ”แƒœ แƒ™แƒ•แƒšแƒแƒ• แƒ›แƒแƒ’แƒ”แƒ—แƒฎแƒแƒ•แƒ”แƒ‘แƒแƒ— แƒจแƒ”แƒ˜แƒงแƒ•แƒแƒœแƒแƒ— แƒขแƒ”แƒšแƒ”แƒคแƒแƒœแƒ˜แƒก แƒœแƒแƒ›แƒ”แƒ แƒ˜; แƒแƒ™แƒ แƒ˜แƒคแƒ”แƒ— "แƒ“แƒ˜แƒแƒฎ", แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ’แƒแƒ›แƒแƒฉแƒœแƒ“แƒ”แƒ‘แƒ แƒจแƒ”แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ แƒ›แƒแƒฅแƒ›แƒ”แƒ“แƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ แƒ”แƒแƒšแƒฃแƒ แƒแƒ“ แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘. แƒ”แƒก แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ›แƒแƒ’แƒชแƒ”แƒ›แƒ— แƒ“แƒแƒแƒงแƒ”แƒœแƒแƒ— แƒ›แƒ—แƒ”แƒšแƒ˜ แƒ˜แƒœแƒคแƒ แƒแƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ, แƒ’แƒแƒœแƒแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒแƒ— EC2-แƒ˜แƒก แƒงแƒ•แƒ”แƒšแƒ แƒกแƒแƒญแƒ˜แƒ แƒ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ, แƒ’แƒแƒœแƒแƒ—แƒแƒ•แƒกแƒแƒ— แƒšแƒแƒ›แƒ‘แƒ“แƒ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ”แƒ‘แƒ˜ แƒ“แƒ แƒ.แƒจ.

แƒ›แƒแƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒ แƒแƒช แƒงแƒ•แƒ”แƒšแƒ แƒ แƒ”แƒกแƒฃแƒ แƒกแƒ˜ แƒฌแƒแƒ แƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ— แƒจแƒ”แƒ˜แƒฅแƒ›แƒœแƒ Terraform แƒ™แƒแƒ“แƒ˜แƒก แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒ˜แƒ—, แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒจแƒ”แƒฎแƒ•แƒ˜แƒ“แƒ”แƒ— Kinesis Analytics แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒ“แƒ”แƒขแƒแƒšแƒ”แƒ‘แƒจแƒ˜ (แƒกแƒแƒ›แƒฌแƒฃแƒฎแƒแƒ แƒแƒ“, แƒ›แƒ” แƒ•แƒ”แƒ  แƒ•แƒ˜แƒžแƒแƒ•แƒ” แƒ แƒแƒ’แƒแƒ  แƒ’แƒแƒ•แƒแƒ™แƒ”แƒ—แƒ แƒ”แƒก แƒžแƒ˜แƒ แƒ“แƒแƒžแƒ˜แƒ  แƒ™แƒแƒ“แƒ˜แƒ“แƒแƒœ).

แƒ’แƒแƒฃแƒจแƒ•แƒ˜แƒ— แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ:

Aviasales API แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ Amazon Kinesis-แƒ—แƒแƒœ แƒ“แƒ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒกแƒ˜แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜แƒ—
แƒแƒ›แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ“แƒแƒแƒงแƒ”แƒœแƒแƒ— แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒจแƒ˜แƒ’แƒœแƒ˜แƒ— แƒœแƒแƒ™แƒแƒ“แƒ˜แƒก แƒกแƒแƒฎแƒ”แƒšแƒ˜ แƒฉแƒแƒ›แƒแƒกแƒแƒจแƒšแƒ”แƒšแƒ˜ แƒกแƒ˜แƒ˜แƒ“แƒแƒœ แƒแƒ แƒฉแƒ”แƒ•แƒ˜แƒ—:

Aviasales API แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ Amazon Kinesis-แƒ—แƒแƒœ แƒ“แƒ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒกแƒ˜แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜แƒ—
Aviasales API แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ Amazon Kinesis-แƒ—แƒแƒœ แƒ“แƒ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒกแƒ˜แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜แƒ—
แƒแƒฎแƒšแƒ แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒ›แƒ–แƒแƒ“ แƒแƒ แƒ˜แƒก แƒฌแƒแƒกแƒแƒกแƒ•แƒšแƒ”แƒšแƒแƒ“.

แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒขแƒ”แƒกแƒขแƒ˜แƒ แƒ”แƒ‘แƒ

แƒ›แƒ˜แƒฃแƒฎแƒ”แƒ“แƒแƒ•แƒแƒ“ แƒ˜แƒ›แƒ˜แƒกแƒ, แƒ—แƒฃ แƒ แƒแƒ’แƒแƒ  แƒ’แƒแƒœแƒแƒ—แƒแƒ•แƒกแƒ”แƒ— แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ, แƒฎแƒ”แƒšแƒ˜แƒ— แƒ—แƒฃ Terraform แƒ™แƒแƒ“แƒ˜แƒก แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒ˜แƒ—, แƒ˜แƒก แƒ˜แƒ’แƒ˜แƒ•แƒ” แƒ˜แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒก.

แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ•แƒ“แƒ˜แƒ•แƒแƒ แƒ— SSH-แƒ˜แƒก แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒ˜แƒ— EC2 แƒ•แƒ˜แƒ แƒขแƒฃแƒแƒšแƒฃแƒ  แƒ›แƒแƒœแƒฅแƒแƒœแƒแƒจแƒ˜, แƒกแƒแƒ“แƒแƒช แƒ“แƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ Kinesis Agent แƒ“แƒ แƒ•แƒแƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒ— api_caller.py แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒก.

sudo ./api_caller.py TOKEN

แƒ—แƒฅแƒ•แƒ”แƒœ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒฃแƒœแƒ“แƒ แƒ“แƒแƒ”แƒšแƒแƒ“แƒแƒ— SMS แƒ—แƒฅแƒ•แƒ”แƒœแƒก แƒœแƒแƒ›แƒ”แƒ แƒก:

Aviasales API แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ Amazon Kinesis-แƒ—แƒแƒœ แƒ“แƒ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒกแƒ˜แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜แƒ—
SMS - แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ แƒขแƒ”แƒšแƒ”แƒคแƒแƒœแƒ–แƒ” แƒ›แƒแƒ“แƒ˜แƒก แƒ—แƒ˜แƒ—แƒฅแƒ›แƒ˜แƒก 1 แƒฌแƒฃแƒ—แƒจแƒ˜:

Aviasales API แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ Amazon Kinesis-แƒ—แƒแƒœ แƒ“แƒ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒกแƒ˜แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜แƒ—
แƒ แƒฉแƒ”แƒ‘แƒ แƒ—แƒฃ แƒแƒ แƒ แƒฉแƒแƒœแƒแƒฌแƒ”แƒ แƒ”แƒ‘แƒ˜ แƒจแƒ”แƒœแƒแƒฎแƒฃแƒšแƒ˜ DynamoDB แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒแƒจแƒ˜ แƒจแƒ”แƒ›แƒ“แƒ’แƒแƒ›แƒ˜, แƒฃแƒคแƒ แƒ แƒ“แƒ”แƒขแƒแƒšแƒฃแƒ แƒ˜ แƒแƒœแƒแƒšแƒ˜แƒ–แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒแƒ•แƒ˜แƒแƒ™แƒแƒ›แƒžแƒแƒœแƒ˜แƒ˜แƒก_แƒ‘แƒ˜แƒšแƒ”แƒ—แƒ”แƒ‘แƒ˜แƒก แƒชแƒฎแƒ แƒ˜แƒšแƒ˜ แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒก แƒ“แƒแƒแƒฎแƒšแƒแƒ”แƒ‘แƒ˜แƒ— แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒก:

Aviasales API แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ Amazon Kinesis-แƒ—แƒแƒœ แƒ“แƒ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒกแƒ˜แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜แƒ—

แƒ“แƒแƒกแƒ™แƒ•แƒœแƒ

แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒกแƒแƒ›แƒฃแƒจแƒแƒแƒก แƒ“แƒ แƒแƒก แƒแƒจแƒ”แƒœแƒ“แƒ แƒแƒœแƒšแƒแƒ˜แƒœ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ“แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ˜แƒก แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ Amazon Kinesis-แƒ˜แƒก แƒกแƒแƒคแƒฃแƒซแƒ•แƒ”แƒšแƒ–แƒ”. แƒ’แƒแƒœแƒฎแƒ˜แƒšแƒฃแƒšแƒ˜ แƒ˜แƒงแƒ Kinesis Agent-แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒก แƒ•แƒแƒ แƒ˜แƒแƒœแƒขแƒ”แƒ‘แƒ˜ Kinesis Data Streams-แƒ—แƒแƒœ แƒ“แƒ แƒ แƒ”แƒแƒšแƒฃแƒ  แƒ“แƒ แƒแƒจแƒ˜ แƒแƒœแƒแƒšแƒ˜แƒขแƒ˜แƒ™แƒแƒกแƒ—แƒแƒœ Kinesis Analytics SQL แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—, แƒ˜แƒกแƒ”แƒ•แƒ” แƒ แƒแƒ’แƒแƒ แƒช Amazon Kinesis-แƒ˜แƒก แƒฃแƒ แƒ—แƒ˜แƒ”แƒ แƒ—แƒฅแƒ›แƒ”แƒ“แƒ”แƒ‘แƒ แƒกแƒฎแƒ•แƒ AWS แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ”แƒ‘แƒ—แƒแƒœ.

แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒœแƒ•แƒแƒ—แƒแƒ•แƒกแƒ”แƒ— แƒ–แƒ”แƒ›แƒแƒแƒฆแƒœแƒ˜แƒจแƒœแƒฃแƒšแƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ แƒแƒ แƒ˜ แƒ’แƒ–แƒ˜แƒ—: แƒกแƒแƒ™แƒ›แƒแƒแƒ“ แƒ’แƒ แƒซแƒ”แƒšแƒ˜ แƒกแƒแƒฎแƒ”แƒšแƒ›แƒซแƒฆแƒ•แƒแƒœแƒ”แƒšแƒ แƒ“แƒ แƒกแƒฌแƒ แƒแƒคแƒ˜ Terraform แƒ™แƒแƒ“แƒ˜แƒ“แƒแƒœ.

แƒงแƒ•แƒ”แƒšแƒ แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒก แƒฌแƒงแƒแƒ แƒแƒก แƒ™แƒแƒ“แƒ˜ แƒฎแƒ”แƒšแƒ›แƒ˜แƒกแƒแƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒ แƒฉแƒ”แƒ›แƒก GitHub แƒกแƒแƒชแƒแƒ•แƒจแƒ˜, แƒ’แƒ˜แƒ แƒฉแƒ”แƒ•แƒ— แƒ’แƒแƒ”แƒชแƒœแƒแƒ— แƒ›แƒแƒก.

แƒกแƒ˜แƒแƒ›แƒแƒ•แƒœแƒ”แƒ‘แƒ˜แƒ— แƒ’แƒแƒœแƒ•แƒ˜แƒฎแƒ˜แƒšแƒแƒ• แƒกแƒขแƒแƒขแƒ˜แƒแƒก, แƒ•แƒ”แƒšแƒ˜ แƒ—แƒฅแƒ•แƒ”แƒœแƒก แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ”แƒ‘แƒก. แƒ™แƒแƒœแƒกแƒขแƒ แƒฃแƒฅแƒชแƒ˜แƒฃแƒšแƒ˜ แƒ™แƒ แƒ˜แƒขแƒ˜แƒ™แƒ˜แƒก แƒ˜แƒ›แƒ”แƒ“แƒ˜ แƒ›แƒแƒฅแƒ•แƒก.

แƒ’แƒ˜แƒกแƒฃแƒ แƒ•แƒ”แƒ‘แƒ— แƒฌแƒแƒ แƒ›แƒแƒขแƒ”แƒ‘แƒแƒก!

แƒฌแƒงแƒแƒ แƒ: www.habr.com

แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ