เด†เดฎเดธเต‹เตบ เด•เตˆเดจเดฟเดธเดฟเดธเตเดฎเดพเดฏเตเดณเตเดณ Aviasales API เดธเด‚เดฏเต‹เดœเดจเดตเตเด‚ เดธเต†เตผเดตเตผเดฒเต†เดธเตเดธเต เดฒเดพเดณเดฟเดคเตเดฏเดตเตเด‚

เดนเต‡ เดนเดฌเตผ!

เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดชเดฑเด•เตเด•เตเดจเตเดจ เดตเดฟเดฎเดพเดจเด™เตเด™เตพ เด‡เดทเตเดŸเดฎเดพเดฃเต‹? เดŽเดจเดฟเด•เตเด•เดฟเดคเต เด‡เดทเตโ€ŒเดŸเดฎเดพเดฃเต, เดชเด•เตเดทเต‡ เดธเตเดตเดฏเด‚ เด’เดฑเตเดฑเดชเตเดชเต†เดŸเตเดฎเตเดชเต‹เตพ, เด…เดฑเดฟเดฏเดชเตเดชเต†เดŸเตเดจเตเดจ เด’เดฐเต เดฑเดฟเดธเต‹เดดเตโ€Œเดธเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดŽเดฏเตผ เดŸเดฟเด•เตเด•เดฑเตเดฑเตเด•เดณเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดกเดพเดฑเตเดฑ เดตเดฟเดถเด•เดฒเดจเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดฒเตเด‚ เดžเดพเตป เดชเตเดฐเดฃเดฏเดคเตเดคเดฟเดฒเดพเดฏเดฟ - Aviasales.

เด‡เดจเตเดจเต เดžเด™เตเด™เตพ Amazon Kinesis-เดจเตเดฑเต† เดชเตเดฐเดตเตผเดคเตเดคเดจเด‚ เดตเดฟเดถเด•เดฒเดจเด‚ เดšเต†เดฏเตเดฏเตเด‚, เดคเดคเตเดธเดฎเดฏ เด…เดจเดฒเดฟเดฑเตเดฑเดฟเด•เตโ€Œเดธเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด’เดฐเต เดธเตเดŸเตเดฐเต€เดฎเดฟเด‚เด—เต เดธเดฟเดธเตเดฑเตเดฑเด‚ เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเด‚, เดชเตเดฐเดงเดพเดจ เดกเดพเดฑเตเดฑ เดธเด‚เดญเดฐเดฃเดฎเดพเดฏเดฟ Amazon DynamoDB NoSQL เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเด‚, เดฐเดธเด•เดฐเดฎเดพเดฏ เดŸเดฟเด•เตเด•เดฑเตเดฑเตเด•เตพเด•เตเด•เดพเดฏเดฟ SMS เด…เดฑเดฟเดฏเดฟเดชเตเดชเตเด•เตพ เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเด‚.

เดŽเดฒเตเดฒเดพ เดตเดฟเดถเดฆเดพเด‚เดถเด™เตเด™เดณเตเด‚ เดตเต†เดŸเตเดŸเดฟเด•เตเด•เตเดฑเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต! เดชเต‹เด•เต‚!

เด†เดฎเดธเต‹เตบ เด•เตˆเดจเดฟเดธเดฟเดธเตเดฎเดพเดฏเตเดณเตเดณ Aviasales API เดธเด‚เดฏเต‹เดœเดจเดตเตเด‚ เดธเต†เตผเดตเตผเดฒเต†เดธเตเดธเต เดฒเดพเดณเดฟเดคเตเดฏเดตเตเด‚

เด†เดฎเตเด–เด‚

เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดžเด™เตเด™เตพเด•เตเด•เต เด†เด•เตเดธเดธเต เด†เดตเดถเตเดฏเดฎเดพเดฃเต Aviasales API. เด…เดคเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เด†เด•เตโ€Œเดธเดธเต เดธเต—เดœเดจเตเดฏเดฎเดพเดฏเตเด‚ เดจเดฟเดฏเดจเตเดคเตเดฐเดฃเด™เตเด™เดณเดฟเดฒเตเดฒเดพเดคเต†เดฏเตเด‚ เดจเตฝเด•เตเดจเตเดจเต; เดกเดพเดฑเตเดฑ เด†เด•เตโ€Œเดธเดธเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต เดจเดฟเด™เตเด™เดณเตเดŸเต† API เดŸเต‹เด•เตเด•เตบ เดฒเดญเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดจเดฟเด™เตเด™เตพ "เดกเต†เดตเดฒเดชเตเดชเตผเดฎเดพเตผ" เดตเดฟเดญเดพเด—เดคเตเดคเดฟเตฝ เดฐเดœเดฟเดธเตเดฑเตเดฑเตผ เดšเต†เดฏเตเดคเดพเตฝ เดฎเดคเดฟ.

เดˆ เดฒเต‡เด–เดจเดคเตเดคเดฟเดจเตเดฑเต† เดชเตเดฐเดงเดพเดจ เดฒเด•เตเดทเตเดฏเด‚ AWS-เตฝ เดตเดฟเดตเดฐ เดธเตเดŸเตเดฐเต€เดฎเดฟเด‚เด—เดฟเดจเตเดฑเต† เด‰เดชเดฏเต‹เด—เดคเตเดคเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดชเตŠเดคเตเดตเดพเดฏ เด’เดฐเต เดงเดพเดฐเดฃ เดจเตฝเด•เตเด• เดŽเดจเตเดจเดคเดพเดฃเต; เด‰เดชเดฏเต‹เด—เดฟเดšเตเดš API เดจเตฝเด•เตเดจเตเดจ เดกเดพเดฑเตเดฑ เด•เตผเดถเดจเดฎเดพเดฏเดฟ เด•เดพเดฒเดฟเด•เดฎเดฒเตเดฒเต†เดจเตเดจเตเด‚ เด•เดพเดทเต†เดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เด•เตˆเดฎเดพเดฑเตเดฑเด‚ เดšเต†เดฏเตเดฏเดชเตเดชเต†เดŸเตเดจเตเดจเตเดตเต†เดจเตเดจเตเด‚ เดžเด™เตเด™เตพ เด•เดฃเด•เตเด•เดฟเดฒเต†เดŸเตเด•เตเด•เตเดจเตเดจเต. เด•เดดเดฟเดžเตเดž 48 เดฎเดฃเดฟเด•เตเด•เต‚เดฑเดพเดฏเดฟ Aviasales.ru, Jetradar.com เดธเตˆเดฑเตเดฑเตเด•เดณเตเดŸเต† เด‰เดชเดฏเต‹เด•เตเดคเดพเด•เตเด•เตพ เดจเดŸเดคเตเดคเดฟเดฏ เดคเดฟเดฐเดฏเดฒเตเด•เดณเต† เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเด•เตเด•เดฟ เดฐเต‚เดชเต€เด•เดฐเดฟเดšเตเดšเดคเต.

เด‰เตฝเดชเตเดชเดพเดฆเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจ เดฎเต†เดทเต€เดจเดฟเตฝ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดคเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ, API เดตเดดเดฟ เดฒเดญเดฟเด•เตเด•เตเดจเตเดจ Kinesis-เดเดœเตปเดฑเต, Kinesis Data Analytics เดตเดดเดฟ เด†เดตเดถเตเดฏเดฎเตเดณเตเดณ เดธเตเดŸเตเดฐเต€เดฎเดฟเดฒเต‡เด•เตเด•เต เดกเดพเดฑเตเดฑ เดธเตเดตเดฏเดฎเต‡เดต เดชเดพเดดเตเดธเต เดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ เดŸเตเดฐเดพเตปเดธเตเดฎเดฟเดฑเตเดฑเต เดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเด‚. เดˆ เดธเตโ€ŒเดŸเตเดฐเต€เดฎเดฟเดจเตเดฑเต† เด…เดธเด‚เดธเตโ€Œเด•เตƒเดค เดชเดคเดฟเดชเตเดชเต เดธเตเดฑเตเดฑเต‹เดฑเดฟเดฒเต‡เด•เตเด•เต เดจเต‡เดฐเดฟเดŸเตเดŸเต เดŽเดดเตเดคเดชเตเดชเต†เดŸเตเด‚. DynamoDB-เดฏเดฟเตฝ เดตเดฟเดจเตเดฏเดธเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เดฑเต‹ เดกเดพเดฑเตเดฑ เดธเตเดฑเตเดฑเต‹เดฑเต‡เดœเต, AWS เด•เตเดตเดฟเด•เตเด•เต เดธเตˆเดฑเตเดฑเต เดชเต‹เดฒเตเดณเตเดณ BI เดŸเต‚เดณเตเด•เตพ เดตเดดเดฟ เด†เดดเดคเตเดคเดฟเดฒเตเดณเตเดณ เดŸเดฟเด•เตเด•เดฑเตเดฑเต เดตเดฟเดถเด•เดฒเดจเด‚ เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเด‚.

เดฎเตเดดเตเดตเตป เด…เดŸเดฟเดธเตเดฅเดพเดจ เดธเต—เด•เดฐเตเดฏเด™เตเด™เดณเตเด‚ เดตเดฟเดจเตเดฏเดธเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดฐเดฃเตเดŸเต เด“เดชเตเดทเดจเตเด•เตพ เดžเด™เตเด™เตพ เดชเดฐเดฟเด—เดฃเดฟเด•เตเด•เตเด‚:

  • เดฎเดพเดจเตเดตเตฝ - AWS เดฎเดพเดจเต‡เดœเตเดฎเต†เดจเตเดฑเต เด•เตบเดธเต‹เตพ เดตเดดเดฟ;
  • เดŸเต†เดฑเดพเดซเต‹เด‚ เด•เต‹เดกเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เด‡เตปเดซเตเดฐเดพเดธเตเดŸเตเดฐเด•เตเดšเตผ เด…เดฒเดธเดฐเดพเดฏ เด“เดŸเตเดŸเต‹เดฎเต‡เดฑเตเดฑเตผเดฎเดพเตผเด•เตเด•เตเดณเตเดณเดคเดพเดฃเต;

เดตเดฟเด•เดธเดฟเดค เดธเด‚เดตเดฟเดงเดพเดจเดคเตเดคเดฟเดจเตเดฑเต† เดตเดพเดธเตเดคเตเดตเดฟเดฆเตเดฏ

เด†เดฎเดธเต‹เตบ เด•เตˆเดจเดฟเดธเดฟเดธเตเดฎเดพเดฏเตเดณเตเดณ Aviasales API เดธเด‚เดฏเต‹เดœเดจเดตเตเด‚ เดธเต†เตผเดตเตผเดฒเต†เดธเตเดธเต เดฒเดพเดณเดฟเดคเตเดฏเดตเตเด‚
เด‰เดชเดฏเต‹เด—เดฟเดšเตเดš เด˜เดŸเด•เด™เตเด™เตพ:

  • Aviasales API - เดˆ API เดจเตฝเด•เตเดจเตเดจ เดกเดพเดฑเตเดฑ เดคเตเดŸเตผเดจเตเดจเตเดณเตเดณ เดŽเดฒเตเดฒเดพ เดœเต‹เดฒเดฟเด•เตพเด•เตเด•เตเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด‚;
  • EC2 เดชเตเดฐเตŠเดกเตเดฏเต‚เดธเตผ เด‰เดฆเดพเดนเดฐเดฃเด‚ โ€” เด‡เตปเดชเตเดŸเตเดŸเต เดกเดพเดฑเตเดฑ เดธเตเดŸเตเดฐเต€เด‚ เดœเดจเดฑเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดฏเตเดจเตเดจ เด•เตเดฒเต—เดกเดฟเดฒเต† เด’เดฐเต เดธเดพเดงเดพเดฐเดฃ เดตเต†เตผเดšเตเดตเตฝ เดฎเต†เดทเต€เตป:
    • เด•เดฟเดจเดฟเดธเดฟเดธเต เดเดœเดจเตเดฑเต เดฎเต†เดทเต€เดจเดฟเตฝ เดชเตเดฐเดพเดฆเต‡เดถเดฟเด•เดฎเดพเดฏเดฟ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดคเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต เดœเดพเดต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเดพเดฃเต, เด…เดคเต เด•เตˆเดจเดธเดฟเดธเต (เด•เตˆเดจเดธเดฟเดธเต เดกเดพเดฑเตเดฑ เดธเตเดŸเตเดฐเต€เด‚เดธเต เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เด•เดฟเดจเดฟเดธเดฟเดธเต เดซเดฏเตผเดนเต‹เดธเต) เดฒเต‡เด•เตเด•เต เดกเดพเดฑเตเดฑ เดถเต‡เด–เดฐเดฟเด•เตเด•เดพเดจเตเด‚ เด…เดฏเดฏเตเด•เตเด•เดพเดจเตเด‚ เดŽเดณเตเดชเตเดชเดฎเตเดณเตเดณ เดฎเดพเตผเด—เด‚ เดจเตฝเด•เตเดจเตเดจเต. เดจเดฟเตผเดฆเตเดฆเดฟเดทเตโ€ŒเดŸ เดกเดฏเดฑเด•เตโ€ŒเดŸเดฑเดฟเด•เดณเดฟเดฒเต† เด’เดฐเต เด•เต‚เดŸเตเดŸเด‚ เดซเดฏเดฒเตเด•เตพ เดเดœเดจเตเดฑเต เดจเดฟเดฐเดจเตเดคเดฐเด‚ เดจเดฟเดฐเต€เด•เตเดทเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดชเตเดคเดฟเดฏ เดกเดพเดฑเตเดฑ Kinesis-เดฒเต‡เด•เตเด•เต เด…เดฏเดฏเตเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต;
    • API เด•เต‹เดณเตผ เดธเตโ€Œเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต - API-เดฏเดฟเดฒเต‡เด•เตเด•เต เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เตพ เดจเดŸเดคเตเดคเตเด•เดฏเตเด‚ เดชเตเดฐเดคเดฟเด•เดฐเดฃเด‚ Kinesis เดเดœเดจเตเดฑเต เดจเดฟเดฐเต€เด•เตเดทเดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต เดซเต‹เตพเดกเดฑเดฟเดฒเต‡เด•เตเด•เต เด‡เดŸเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจ เด’เดฐเต เดชเตˆเดคเตเดคเตบ เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต;
  • Kinesis เดกเดพเดฑเตเดฑ เดธเตเดŸเตเดฐเต€เดฎเตเด•เตพ - เดตเดฟเดถเดพเดฒเดฎเดพเดฏ เดธเตเด•เต†เดฏเดฟเดฒเดฟเด‚เด—เต เด•เดดเดฟเดตเตเด•เดณเตเดณเตเดณ เดคเดคเตเดธเดฎเดฏ เดกเดพเดฑเตเดฑ เดธเตเดŸเตเดฐเต€เดฎเดฟเด‚เด—เต เดธเต‡เดตเดจเด‚;
  • เด•เดฟเดจเดฟเดธเดฟเดธเต เด…เดจเดฒเดฟเดฑเตเดฑเดฟเด•เตเดธเต เดคเดคเตเดธเดฎเดฏเด‚ เดธเตเดŸเตเดฐเต€เดฎเดฟเด‚เด—เต เดกเดพเดฑเตเดฑเดฏเตเดŸเต† เดตเดฟเดถเด•เดฒเดจเด‚ เดฒเดณเดฟเดคเดฎเดพเด•เตเด•เตเดจเตเดจ เด’เดฐเต เดธเต†เตผเดตเตผเดฒเต†เดธเต เดธเต‡เดตเดจเดฎเดพเดฃเต. เด†เดฎเดธเต‹เตบ เด•เตˆเดจเดธเดฟเดธเต เดกเดพเดฑเตเดฑเดพ เด…เดจเดฒเดฟเดฑเตเดฑเดฟเด•เตโ€Œเดธเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เด‰เดฑเดตเดฟเดŸเด™เตเด™เตพ เด•เต‹เตบเดซเดฟเด—เตผ เดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ เด‡เตปเด•เดฎเดฟเด‚เด—เต เดกเดพเดฑเตเดฑเดฏเตเดŸเต† เดเดคเต เดตเต‹เดณเดฟเดฏเดตเตเด‚ เด•เตˆเด•เดพเดฐเตเดฏเด‚ เดšเต†เดฏเตเดฏเดพเตป เดธเตเดตเดฏเดฎเต‡เดต เดธเตเด•เต†เดฏเดฟเดฒเตเดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต;
  • AWS Lambda โ€” เดฌเดพเด•เตเด•เดชเตเดชเต เดšเต†เดฏเตเดฏเดพเดคเต†เดฏเตเด‚ เดธเต†เตผเดตเดฑเตเด•เตพ เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เดพเดคเต†เดฏเตเด‚ เด•เต‹เดกเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เดพเตป เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต เดธเต‡เดตเดจเด‚. เด“เดฐเต‹ เด•เต‹เดณเดฟเดจเตเด‚ เดŽเดฒเตเดฒเดพ เด•เดฎเตเดชเตเดฏเต‚เดŸเตเดŸเดฟเด‚เด—เต เดชเดตเดฑเตเด‚ เดธเตเดตเดฏเดฎเต‡เดต เดธเตเด•เต†เดฏเดฟเตฝ เดšเต†เดฏเตเดฏเดชเตเดชเต†เดŸเตเดจเตเดจเต;
  • เด†เดฎเดธเต‹เตบ เดกเตˆเดจเดพเดฎเต‹เดกเดฟเดฌเดฟ - เดเดคเต เดธเตเด•เต†เดฏเดฟเดฒเดฟเดฒเตเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ 10 เดฎเดฟเดฒเตเดฒเดฟเดธเต†เด•เตเด•เตปเดกเดฟเตฝ เดคเดพเดดเต†เดฏเตเดณเตเดณ เด•เดพเดฒเดคเดพเดฎเดธเด‚ เดจเตฝเด•เตเดจเตเดจ เด•เต€-เดตเดพเดฒเตเดฏเต‚ เดœเต‹เดกเดฟเด•เดณเตเดŸเต†เดฏเตเด‚ เดกเต‹เด•เตเดฏเตเดฎเต†เดจเตเดฑเตเด•เดณเตเดŸเต†เดฏเตเด‚ เด’เดฐเต เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต. DynamoDB เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, เดจเดฟเด™เตเด™เตพ เดเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เดธเต†เตผเดตเดฑเตเด•เตพ เดชเตเดฐเตŠเดตเดฟเดทเตป เดšเต†เดฏเตเดฏเตเด•เดฏเต‹ เดชเดพเดšเตเดšเต เดšเต†เดฏเตเดฏเตเด•เดฏเต‹ เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเด•เตเด•เตเด•เดฏเต‹ เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเดฟเดฒเตเดฒ. เดฒเดญเตเดฏเดฎเดพเดฏ เดตเดฟเดญเดตเด™เตเด™เดณเตเดŸเต† เด…เดณเดตเต เด•เตเดฐเดฎเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเด‚ เด‰เดฏเตผเดจเตเดจ เดชเตเดฐเด•เดŸเดจเด‚ เดจเดฟเดฒเดจเดฟเตผเดคเตเดคเตเดจเตเดจเดคเดฟเดจเตเด‚ DynamoDB เดชเดŸเตเดŸเดฟเด•เด•เตพ เดธเตเดตเดฏเดฎเต‡เดต เดธเตเด•เต†เดฏเดฟเตฝ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เดธเดฟเดธเตเดฑเตเดฑเด‚ เด…เดกเตเดฎเดฟเดจเดฟเดธเตเดŸเตเดฐเต‡เดทเตป เด†เดตเดถเตเดฏเดฎเดฟเดฒเตเดฒ;
  • เด†เดฎเดธเต‹เตบ เดŽเดธเตเดŽเตปเดŽเดธเต - เดชเดฌเตเดฒเดฟเดทเตผ-เดธเดฌเตโ€Œเดธเตโ€Œเด•เตเดฐเตˆเดฌเตผ (เดชเดฌเต/เดธเดฌเต) เดฎเต‹เดกเตฝ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดธเดจเตเดฆเต‡เดถเด™เตเด™เตพ เด…เดฏเดฏเตโ€Œเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดชเต‚เตผเดฃเตเดฃเดฎเดพเดฏเดฟ เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเดค เดธเต‡เดตเดจเด‚, เด…เดคเดฟเดฒเต‚เดŸเต† เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดฎเตˆเด•เตเดฐเต‹เดธเตผเดตเต€เดธเตเด•เดณเตเด‚ เดกเดฟเดธเตเดŸเตเดฐเดฟเดฌเตเดฏเต‚เดŸเตเดŸเดกเต เดธเดฟเดธเตเดฑเตเดฑเด™เตเด™เดณเตเด‚ เดธเต†เตผเดตเตผเดฒเต†เดธเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เดณเตเด‚ เดตเต‡เตผเดคเดฟเดฐเดฟเด•เตเด•เดพเดจเดพเด•เตเด‚. เดฎเตŠเดฌเตˆเตฝ เดชเตเดทเต เด…เดฑเดฟเดฏเดฟเดชเตเดชเตเด•เตพ, SMS เดธเดจเตเดฆเต‡เดถเด™เตเด™เตพ, เด‡เดฎเต†เดฏเดฟเดฒเตเด•เตพ เดŽเดจเตเดจเดฟเดตเดฏเดฟเดฒเต‚เดŸเต† เด…เดจเตเดคเดฟเดฎ เด‰เดชเดฏเต‹เด•เตเดคเดพเด•เตเด•เตพเด•เตเด•เต เดตเดฟเดตเดฐเด™เตเด™เตพ เด…เดฏเดฏเตเด•เตเด•เดพเตป SNS เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเด‚.

เดชเตเดฐเดพเดฐเด‚เดญ เดชเดฐเดฟเดถเต€เดฒเดจเด‚

เดกเดพเดฑเตเดฑเดพ เดซเตเดฒเต‹ เด…เดจเตเด•เดฐเดฟเด•เตเด•เดพเตป, 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, lambda เดซเด‚เด—เตโ€Œเดทเดจเตเด•เตพ เดธเต—เดœเดจเตเดฏเดฎเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเด‚. เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, DynamoDB-เดฏเตโ€Œเด•เตเด•เต: 25 GB เดธเด‚เดญเดฐเดฃเด‚, 25 WCU/RCU, 100 เดฆเดถเดฒเด•เตเดทเด‚ เด…เดจเตเดตเต‡เดทเดฃเด™เตเด™เตพ. เด•เต‚เดŸเดพเดคเต† เดชเตเดฐเดคเดฟเดฎเดพเดธเด‚ เด’เดฐเต เดฆเดถเดฒเด•เตเดทเด‚ เดฒเดพเด‚เดก เดซเด‚เด—เตโ€Œเดทเตป เด•เต‹เดณเตเด•เดณเตเด‚.

เดฎเดพเดจเตเดตเตฝ เดธเดฟเดธเตเดฑเตเดฑเด‚ เดตเดฟเดจเตเดฏเดพเดธเด‚

Kinesis เดกเดพเดฑเตเดฑ เดธเตเดŸเตเดฐเต€เดฎเตเด•เตพ เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเต

เดจเดฎเตเด•เตเด•เต Kinesis เดกเดพเดฑเตเดฑ เดธเตเดŸเตเดฐเต€เด‚ เดธเต‡เดตเดจเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เดฏเดฟ เดฐเดฃเตเดŸเต เดชเตเดคเดฟเดฏ เดธเตเดŸเตเดฐเต€เดฎเตเด•เตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดพเด‚, เด“เดฐเต‹เดจเตเดจเดฟเดจเตเด‚ เด’เดฐเต เดทเดพเตผเดกเต.

เด’เดฐเต เดทเดพเตผเดกเต เดŽเดจเตเดคเดพเดฃเต?
เด†เดฎเดธเต‹เตบ เด•เตˆเดจเดธเดฟเดธเต เดธเตเดŸเตเดฐเต€เดฎเดฟเดจเตเดฑเต† เด…เดŸเดฟเดธเตเดฅเดพเดจ เดกเดพเดฑเตเดฑเดพ เดŸเตเดฐเดพเตปเดธเตเดซเตผ เดฏเต‚เดฃเดฟเดฑเตเดฑเดพเดฃเต เดทเดพเตผเดกเต. เด’เดฐเต เดธเต†เด—เตโ€Œเดฎเต†เดจเตเดฑเต เด‡เตปเดชเตเดŸเตเดŸเต เดกเดพเดฑเตเดฑ เด•เตˆเดฎเดพเดฑเตเดฑเด‚ 1 MB/s เดตเต‡เด—เดคเดฏเดฟเดฒเตเด‚ เด”เดŸเตเดŸเตโ€ŒเดชเตเดŸเตเดŸเต เดกเดพเดฑเตเดฑเดพ เด•เตˆเดฎเดพเดฑเตเดฑเด‚ 2 MB/s เดตเต‡เด—เดคเดฏเดฟเดฒเตเด‚ เดจเตฝเด•เตเดจเตเดจเต. เด’เดฐเต เดธเต†เด—เตโ€Œเดฎเต†เดจเตเดฑเต เดธเต†เด•เตเด•เตปเดกเดฟเตฝ 1000 PUT เดŽเตปเดŸเตเดฐเดฟเด•เตพ เดตเดฐเต† เดชเดฟเดจเตเดคเตเดฃเดฏเตเด•เตเด•เตเดจเตเดจเต. เด’เดฐเต เดกเดพเดฑเตเดฑ เดธเตเดŸเตเดฐเต€เด‚ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, เด†เดตเดถเตเดฏเดฎเดพเดฏ เดธเต†เด—เตเดฎเต†เดจเตเดฑเตเด•เดณเตเดŸเต† เดŽเดฃเตเดฃเด‚ เดจเดฟเด™เตเด™เตพ เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต. เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดฐเดฃเตเดŸเต เดธเต†เด—เตเดฎเต†เดจเตเดฑเตเด•เดณเตเดณเตเดณ เด’เดฐเต เดกเดพเดฑเตเดฑ เดธเตเดŸเตเดฐเต€เด‚ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚. เดˆ เดกเดพเดฑเตเดฑ เดธเตเดŸเตเดฐเต€เด‚ 2 MB/s-เตฝ เด‡เตปเดชเตเดŸเตเดŸเต เดกเดพเดฑเตเดฑ เด•เตˆเดฎเดพเดฑเตเดฑเดตเตเด‚ 4 MB/s-เตฝ เด”เดŸเตเดŸเตเดชเตเดŸเตเดŸเต เดกเดพเดฑเตเดฑ เด•เตˆเดฎเดพเดฑเตเดฑเดตเตเด‚ เดจเตฝเด•เตเด‚, เด‡เดคเต เดธเต†เด•เตเด•เตปเดกเดฟเตฝ 2000 PUT เดฑเต†เด•เตเด•เต‹เตผเดกเตเด•เตพ เดตเดฐเต† เดชเดฟเดจเตเดคเตเดฃเดฏเตเด•เตเด•เตเดจเตเดจเต.

เดจเดฟเด™เตเด™เดณเตเดŸเต† เดธเตเดŸเตเดฐเต€เดฎเดฟเตฝ เด•เต‚เดŸเตเดคเตฝ เด•เดทเดฃเด™เตเด™เตพ, เด…เดคเดฟเดจเตเดฑเต† เดคเตเดฐเต‚เดชเตเดŸเตเดŸเต เดตเตผเดฆเตเดงเดฟเด•เตเด•เตเด‚. เดคเดคเตเดตเดคเตเดคเดฟเตฝ, เดซเตเดฒเต‹เด•เตพ เดธเตเด•เต†เดฏเดฟเตฝ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต เด‡เด™เตเด™เดจเต†เดฏเดพเดฃเต - เด•เดทเดฃเด™เตเด™เตพ เดšเต‡เตผเดคเตเดคเต. เดŽเดจเตเดจเดพเตฝ เดจเดฟเด™เตเด™เดณเตเดŸเต† เดชเด•เตเด•เตฝ เด•เต‚เดŸเตเดคเตฝ เด•เดทเดฃเด™เตเด™เตพ, เด‰เดฏเตผเดจเตเดจ เดตเดฟเดฒ. เด“เดฐเต‹ เดทเดพเตผเดกเดฟเดจเตเด‚ เดฎเดฃเดฟเด•เตเด•เต‚เดฑเดฟเดจเต 1,5 เดธเต†เดจเตเดฑเตเด‚ เด“เดฐเต‹ เดฎเดฟเดฒเตเดฏเตบ PUT เดชเต‡เดฒเต‹เดกเต เดฏเต‚เดฃเดฟเดฑเตเดฑเตเด•เตพเด•เตเด•เต 1.4 เดธเต†เดจเตเดฑเตเด‚ เด…เดงเดฟเด•เดฎเดพเดฏเดฟ เดšเดฟเดฒเดตเดพเด•เตเด‚.

เดชเต‡เดฐเดฟเดจเตŠเดชเตเดชเด‚ เด’เดฐเต เดชเตเดคเดฟเดฏ เดธเตเดŸเตเดฐเต€เด‚ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดพเด‚ เดŽเดฏเตผเดฒเตˆเตป_เดŸเดฟเด•เตเด•เดฑเตเดฑเตเด•เตพ, เด’เดฐเต เด•เดทเตเดฃเด‚ เด…เดตเดจเต เดฎเดคเดฟเดฏเดพเด•เตเด‚:

เด†เดฎเดธเต‹เตบ เด•เตˆเดจเดฟเดธเดฟเดธเตเดฎเดพเดฏเตเดณเตเดณ Aviasales API เดธเด‚เดฏเต‹เดœเดจเดตเตเด‚ เดธเต†เตผเดตเตผเดฒเต†เดธเตเดธเต เดฒเดพเดณเดฟเดคเตเดฏเดตเตเด‚
เด‡เดจเดฟ เดชเต‡เดฐเดฟเดจเตŠเดชเตเดชเด‚ เดฎเดฑเตเดฑเตŠเดฐเต เดคเตเดฐเต†เดกเต เด‰เดฃเตเดŸเดพเด•เตเด•เดพเด‚ เดชเตเดฐเดคเตเดฏเต‡เด•_เดธเตเดŸเตเดฐเต€เด‚:

เด†เดฎเดธเต‹เตบ เด•เตˆเดจเดฟเดธเดฟเดธเตเดฎเดพเดฏเตเดณเตเดณ Aviasales API เดธเด‚เดฏเต‹เดœเดจเดตเตเด‚ เดธเต†เตผเดตเตผเดฒเต†เดธเตเดธเต เดฒเดพเดณเดฟเดคเตเดฏเดตเตเด‚

เดชเตเดฐเตŠเดกเตเดฏเต‚เดธเตผ เดธเต†เดฑเตเดฑเดชเตเดชเต

เด’เดฐเต เดŸเดพเดธเตโ€Œเด•เต เดตเดฟเดถเด•เดฒเดจเด‚ เดšเต†เดฏเตเดฏเดพเตป, เด’เดฐเต เดกเดพเดฑเตเดฑ เดชเตเดฐเตŠเดกเตเดฏเต‚เดธเตผ เดŽเดจเตเดจ เดจเดฟเดฒเดฏเดฟเตฝ เด’เดฐเต เดธเดพเดงเดพเดฐเดฃ EC2 เด‰เดฆเดพเดนเดฐเดฃเด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเดพเตฝ เดฎเดคเดฟ. เด‡เดคเต เดถเด•เตเดคเดตเตเด‚ เดšเต†เดฒเดตเต‡เดฑเดฟเดฏเดคเตเดฎเดพเดฏ เด’เดฐเต เดตเต†เตผเดšเตเดตเตฝ เดฎเต†เดทเต€เตป เด†เดฏเดฟเดฐเดฟเด•เตเด•เดฃเดฎเต†เดจเตเดจเดฟเดฒเตเดฒ; เด’เดฐเต เดธเตเดชเต‹เดŸเตเดŸเต t2.เดฎเตˆเด•เตเดฐเต‹ เดจเดจเตเดจเดพเดฏเดฟ เดšเต†เดฏเตเดฏเตเด‚.

เดชเตเดฐเดงเดพเดจ เด•เตเดฑเดฟเดชเตเดชเต: เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดจเดฟเด™เตเด™เตพ เดšเดฟเดคเตเดฐเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดฃเด‚ - Amazon Linux AMI 2018.03.0, Kinesis เดเดœเดจเตเดฑเต เดตเต‡เด—เดคเตเดคเดฟเตฝ เดธเดฎเดพเดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เด‡เดคเดฟเดจเต เด•เตเดฑเดšเตเดšเต เด•เตเดฐเดฎเต€เด•เดฐเดฃเด™เตเด™เดณเตเดฃเตเดŸเต.

EC2 เดธเต‡เดตเดจเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เด•เตเด•, เด’เดฐเต เดชเตเดคเดฟเดฏ เดตเต†เตผเดšเตเดตเตฝ เดฎเต†เดทเต€เตป เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เตเด•, เดซเตเดฐเต€ เดŸเดฏเดฑเดฟเตฝ เด‰เตพเดชเตเดชเต†เดŸเตเดคเตเดคเดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เดŸเตˆเดชเตเดชเต t2.micro เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด†เดตเดถเตเดฏเดฎเตเดณเตเดณ เดŽเดŽเด‚เด เดคเดฟเดฐเดžเตเดžเต†เดŸเตเด•เตเด•เตเด•:

เด†เดฎเดธเต‹เตบ เด•เตˆเดจเดฟเดธเดฟเดธเตเดฎเดพเดฏเตเดณเตเดณ Aviasales API เดธเด‚เดฏเต‹เดœเดจเดตเตเด‚ เดธเต†เตผเดตเตผเดฒเต†เดธเตเดธเต เดฒเดพเดณเดฟเดคเตเดฏเดตเตเด‚
เดชเตเดคเตเดคเดพเดฏเดฟ เดธเตƒเดทเตเดŸเดฟเดšเตเดš เดตเต†เตผเดšเตเดตเตฝ เดฎเต†เดทเต€เดจเต เด•เตˆเดจเดธเดฟเดธเต เดธเต‡เดตเดจเดตเตเดฎเดพเดฏเดฟ เดธเด‚เดตเดฆเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเดฃเดฎเต†เด™เตเด•เดฟเตฝ, เด…เดคเดฟเดจเตเดณเตเดณ เด…เดตเด•เดพเดถเด™เตเด™เตพ เดจเตฝเด•เดฃเด‚. เด’เดฐเต IAM เดฑเต‹เตพ เดจเดฟเดฏเต‹เด—เดฟเด•เตเด•เตเด• เดŽเดจเตเดจเดคเดพเดฃเต เด‡เดคเดฟเดจเตเดณเตเดณ เดเดฑเตเดฑเดตเตเด‚ เดจเดฒเตเดฒ เดฎเดพเตผเด—เด‚. เด…เดคเดฟเดจเดพเตฝ, เดธเตเดฑเตเดฑเต†เดชเตเดชเต 3: เด•เต‹เตบเดซเดฟเด—เตผ เด‡เตปเดธเตเดฑเตเดฑเตปเดธเต เดกเต€เดฑเตเดฑเต†เดฏเดฟเตฝเดธเต เดธเตเด•เตเดฐเต€เดจเดฟเตฝ, เดจเดฟเด™เตเด™เตพ เดคเดฟเดฐเดžเตเดžเต†เดŸเตเด•เตเด•เดฃเด‚ เดชเตเดคเดฟเดฏ IAM เดฑเต‹เตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด•:

EC2 เดจเดพเดฏเดฟ เด’เดฐเต IAM เดฑเต‹เตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเต
เด†เดฎเดธเต‹เตบ เด•เตˆเดจเดฟเดธเดฟเดธเตเดฎเดพเดฏเตเดณเตเดณ Aviasales API เดธเด‚เดฏเต‹เดœเดจเดตเตเด‚ เดธเต†เตผเดตเตผเดฒเต†เดธเตเดธเต เดฒเดพเดณเดฟเดคเตเดฏเดตเตเด‚
เดคเตเดฑเด•เตเด•เตเดจเตเดจ เดตเดฟเตปเดกเต‹เดฏเดฟเตฝ, เดžเด™เตเด™เตพ EC2 เดจเดพเดฏเดฟ เด’เดฐเต เดชเตเดคเดฟเดฏ เดฑเต‹เตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด•เดฏเดพเดฃเต†เดจเตเดจเต เดคเดฟเดฐเดžเตเดžเต†เดŸเตเดคเตเดคเต เด…เดจเตเดฎเดคเดฟ เดตเดฟเดญเดพเด—เดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เด•เตเด•:

เด†เดฎเดธเต‹เตบ เด•เตˆเดจเดฟเดธเดฟเดธเตเดฎเดพเดฏเตเดณเตเดณ Aviasales API เดธเด‚เดฏเต‹เดœเดจเดตเตเด‚ เดธเต†เตผเดตเตผเดฒเต†เดธเตเดธเต เดฒเดพเดณเดฟเดคเตเดฏเดตเตเด‚
เดชเดฐเดฟเดถเต€เดฒเดจ เด‰เดฆเดพเดนเดฐเดฃเด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต, เดฑเดฟเดธเต‹เดดเตโ€Œเดธเต เด…เดตเด•เดพเดถเด™เตเด™เดณเตเดŸเต† เด—เตเดฐเดพเดจเตเดฒเดพเตผ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเดจเตเดฑเต† เดŽเดฒเตเดฒเดพ เดธเด™เตเด•เต€เตผเดฃเดคเด•เดณเดฟเดฒเต‡เด•เตเด•เตเด‚ เดžเด™เตเด™เตพ เดชเต‹เด•เต‡เดฃเตเดŸเดคเดฟเดฒเตเดฒ, เด…เดคเดฟเดจเดพเตฝ AmazonKinesisFullAccess, CloudWatchFullAccess เดŽเดจเตเดจเดฟเดต เดฎเตเตปเด•เต‚เดŸเตเดŸเดฟ เด•เต‹เตบเดซเดฟเด—เตผ เดšเต†เดฏเตโ€Œเดค เดจเดฏเด™เตเด™เตพ เดžเด™เตเด™เตพ เดคเดฟเดฐเดžเตเดžเต†เดŸเตเด•เตเด•เตเด‚.

เดˆ เดฑเต‹เดณเดฟเดจเต เดšเดฟเดฒ เด…เตผเดคเตเดฅเดตเดคเตเดคเดพเดฏ เดชเต‡เดฐเต เดจเตฝเด•เดพเด‚, เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต: EC2-KinesisStreams-FullAccess. เดซเดฒเด‚ เดšเตเดตเดŸเต†เดฏเตเดณเตเดณ เดšเดฟเดคเตเดฐเดคเตเดคเดฟเตฝ เด•เดพเดฃเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเตเดชเต‹เดฒเต† เด†เดฏเดฟเดฐเดฟเด•เตเด•เดฃเด‚:

เด†เดฎเดธเต‹เตบ เด•เตˆเดจเดฟเดธเดฟเดธเตเดฎเดพเดฏเตเดณเตเดณ Aviasales API เดธเด‚เดฏเต‹เดœเดจเดตเตเด‚ เดธเต†เตผเดตเตผเดฒเต†เดธเตเดธเต เดฒเดพเดณเดฟเดคเตเดฏเดตเตเด‚
เดˆ เดชเตเดคเดฟเดฏ เดฑเต‹เตพ เดธเตƒเดทเตเดŸเดฟเดšเตเดšเดคเดฟเดจเต เดถเต‡เดทเด‚, เดธเตƒเดทเตเดŸเดฟเดšเตเดš เดตเต†เตผเดšเตเดตเตฝ เดฎเต†เดทเต€เตป เด‡เตปเดธเตโ€Œเดฑเตเดฑเตปเดธเดฟเดฒเต‡เด•เตเด•เต เด‡เดคเต เด…เดฑเตเดฑเดพเดšเตเดšเตเดšเต†เดฏเตเดฏเดพเตป เดฎเดฑเด•เตเด•เดฐเตเดคเต:

เด†เดฎเดธเต‹เตบ เด•เตˆเดจเดฟเดธเดฟเดธเตเดฎเดพเดฏเตเดณเตเดณ Aviasales API เดธเด‚เดฏเต‹เดœเดจเดตเตเด‚ เดธเต†เตผเดตเตผเดฒเต†เดธเตเดธเต เดฒเดพเดณเดฟเดคเตเดฏเดตเตเด‚
เดžเด™เตเด™เตพ เดˆ เดธเตเด•เตเดฐเต€เดจเดฟเตฝ เดฎเดฑเตเดฑเตŠเดจเตเดจเตเด‚ เดฎเดพเดฑเตเดฑเดฟเดฒเตเดฒ, เด…เดŸเตเดคเตเดค เดตเดฟเตปเดกเต‹เด•เดณเดฟเดฒเต‡เด•เตเด•เต เดจเต€เด™เตเด™เตเด•.

เดนเดพเตผเดกเต เดกเตเดฐเตˆเดตเต เด•เตเดฐเดฎเต€เด•เดฐเดฃเด™เตเด™เดณเตเด‚ เดŸเดพเด—เตเด•เดณเตเด‚ เดกเดฟเดซเต‹เตพเดŸเตเดŸเดพเดฏเดฟ เด…เดตเดถเต‡เดทเดฟเดชเตเดชเดฟเด•เตเด•เดพเด‚ (เดŸเดพเด—เตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเต เดจเดฒเตเดฒ เดฐเต€เดคเดฟเดฏเดพเดฃเต†เด™เตเด•เดฟเดฒเตเด‚, เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต เด’เดฐเต เดชเต‡เดฐเต†เด™เตเด•เดฟเดฒเตเด‚ เดจเตฝเด•เตเด•เดฏเตเด‚ เดชเดฐเดฟเดธเตเดฅเดฟเดคเดฟเดฏเต† เดธเต‚เดšเดฟเดชเตเดชเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเด•).

เด‡เดชเตเดชเต‹เตพ เดžเด™เตเด™เตพ เดธเตเดฑเตเดฑเต†เดชเตเดชเต 6-เดฒเดพเดฃเต: เดธเต†เด•เตเดฏเต‚เดฐเดฟเดฑเตเดฑเดฟ เด—เตเดฐเต‚เดชเตเดชเต เด•เต‹เตบเดซเดฟเด—เตผ เดšเต†เดฏเตเดฏเตเด•, เด…เดตเดฟเดŸเต† เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดชเตเดคเดฟเดฏเตŠเดฐเต†เดฃเตเดฃเด‚ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด•เดฏเต‹ เดจเดฟเดฒเดตเดฟเดฒเตเดณเตเดณ เดธเต†เด•เตเดฏเต‚เดฐเดฟเดฑเตเดฑเดฟ เด—เตเดฐเต‚เดชเตเดชเต เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เตเด•เดฏเต‹ เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต, เด‡เดคเต ssh (เดชเต‹เตผเดŸเตเดŸเต 22) เดตเดดเดฟ เดˆ เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เด•เดฃเด•เตเดฑเตเดฑเตเดšเต†เดฏเตเดฏเดพเตป เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต. เด…เดตเดฟเดŸเต† เด‰เดฑเดตเดฟเดŸเด‚ -> เดŽเดจเตเดฑเต† เดเดชเดฟ เดคเดฟเดฐเดžเตเดžเต†เดŸเตเด•เตเด•เตเด•, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด‰เดฆเดพเดนเดฐเดฃเด‚ เดธเดฎเดพเดฐเด‚เดญเดฟเด•เตเด•เดพเด‚.

เด†เดฎเดธเต‹เตบ เด•เตˆเดจเดฟเดธเดฟเดธเตเดฎเดพเดฏเตเดณเตเดณ Aviasales API เดธเด‚เดฏเต‹เดœเดจเดตเตเด‚ เดธเต†เตผเดตเตผเดฒเต†เดธเตเดธเต เดฒเดพเดณเดฟเดคเตเดฏเดตเตเด‚
เด‡เดคเต เดฑเดฃเตเดฃเดฟเด‚เด—เต เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดธเดฟเดฒเต‡เด•เตเด•เต เดฎเดพเดฑเตเดฎเตเดชเต‹เตพ, เดจเดฟเด™เตเด™เตพเด•เตเด•เต ssh เดตเดดเดฟ เด‡เดคเดฟเดฒเต‡เด•เตเด•เต เด•เดฃเด•เตเดฑเตเดฑเตเดšเต†เดฏเตเดฏเดพเตป เดถเตเดฐเดฎเดฟเด•เตเด•เดพเด‚.

เด•เตˆเดจเดธเดฟเดธเต เดเดœเดจเตเดฑเตเดฎเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเตป, เดฎเต†เดทเต€เดจเดฟเดฒเต‡เด•เตเด•เต เดตเดฟเดœเดฏเด•เดฐเดฎเดพเดฏเดฟ เด•เดฃเด•เตเดฑเตเดฑเตเดšเต†เดฏเตโ€Œเดคเดคเดฟเดจเต เดถเต‡เดทเด‚, เดจเดฟเด™เตเด™เตพ เดŸเต†เตผเดฎเดฟเดจเดฒเดฟเตฝ เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เด•เดฎเดพเตปเดกเตเด•เตพ เดจเตฝเด•เดฃเด‚:

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"]
         }
      ]
    }
  ]
}

เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดซเดฏเดฒเดฟเตฝ เดจเดฟเดจเตเดจเต เด•เดพเดฃเดพเดจเดพเด•เตเดจเตเดจเดคเตเดชเต‹เดฒเต†, /var/log/airline_tickets/ เดกเดฏเดฑเด•เตโ€ŒเดŸเดฑเดฟเดฏเดฟเดฒเต† .log เดŽเด•เตโ€Œเดธเตโ€Œเดฑเตเดฑเตปเดทเตป เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดเดœเดจเตเดฑเต เดซเดฏเดฒเตเด•เตพ เดจเดฟเดฐเต€เด•เตเดทเดฟเด•เตเด•เตเด•เดฏเตเด‚ เด…เดตเดฏเต† เดชเดพเดดเตโ€Œเดธเต เดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ 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 เดธเด‚เดฏเต‹เดœเดจเดตเตเด‚ เดธเต†เตผเดตเตผเดฒเต†เดธเตเดธเต เดฒเดพเดณเดฟเดคเตเดฏเดตเตเด‚
เดžเด™เตเด™เตพ เดเดœเดจเตเดฑเต เดฒเต‹เด—เตเด•เดณเดฟเดฒเตเด‚ เดŽเดฏเตผเดฒเตˆเตป_เดŸเดฟเด•เตเด•เดฑเตเดฑเต เดกเดพเดฑเตเดฑเดพ เดธเตเดŸเตเดฐเต€เดฎเดฟเดฒเต† เดฎเต‹เดฃเดฟเดฑเตเดฑเดฑเดฟเด‚เด—เต เดŸเดพเดฌเดฟเดฒเตเด‚ เดœเต‹เดฒเดฟเดฏเตเดŸเต† เดซเดฒเด‚ เดจเต‹เด•เตเด•เตเดจเตเดจเต:

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

เด†เดฎเดธเต‹เตบ เด•เตˆเดจเดฟเดธเดฟเดธเตเดฎเดพเดฏเตเดณเตเดณ Aviasales API เดธเด‚เดฏเต‹เดœเดจเดตเตเด‚ เดธเต†เตผเดตเตผเดฒเต†เดธเตเดธเต เดฒเดพเดณเดฟเดคเตเดฏเดตเตเด‚
เด†เดฎเดธเต‹เตบ เด•เตˆเดจเดฟเดธเดฟเดธเตเดฎเดพเดฏเตเดณเตเดณ Aviasales API เดธเด‚เดฏเต‹เดœเดจเดตเตเด‚ เดธเต†เตผเดตเตผเดฒเต†เดธเตเดธเต เดฒเดพเดณเดฟเดคเตเดฏเดตเตเด‚
เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด•เดพเดฃเดพเดจเดพเด•เตเดจเตเดจเดคเตเดชเต‹เดฒเต†, เดŽเดฒเตเดฒเดพเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต, Kinesis เดเดœเดจเตเดฑเต เดตเดฟเดœเดฏเด•เดฐเดฎเดพเดฏเดฟ เดธเตเดŸเตเดฐเต€เดฎเดฟเดฒเต‡เด•เตเด•เต เดกเดพเดฑเตเดฑ เด…เดฏเดฏเตเด•เตเด•เตเดจเตเดจเต. เด‡เดจเดฟ เดจเดฎเตเด•เตเด•เต เด•เตบเดธเตเดฏเต‚เดฎเตผ เด•เต‹เตบเดซเดฟเด—เตผ เดšเต†เดฏเตเดฏเดพเด‚.

Kinesis เดกเดพเดฑเตเดฑ เด…เดจเดฒเดฟเดฑเตเดฑเดฟเด•เตเดธเต เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเต

เดจเดฎเตเด•เตเด•เต เดฎเตเดดเตเดตเตป เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเดจเตเดฑเต†เดฏเตเด‚ เด•เต‡เดจเตเดฆเตเดฐ เด˜เดŸเด•เดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เด•เดพเด‚ - Kinesis Data Analytics-เตฝ kinesis_analytics_airlines_app เดŽเดจเตเดจ เดชเต‡เดฐเดฟเตฝ เด’เดฐเต เดชเตเดคเดฟเดฏ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด•:

เด†เดฎเดธเต‹เตบ เด•เตˆเดจเดฟเดธเดฟเดธเตเดฎเดพเดฏเตเดณเตเดณ Aviasales API เดธเด‚เดฏเต‹เดœเดจเดตเตเด‚ เดธเต†เตผเดตเตผเดฒเต†เดธเตเดธเต เดฒเดพเดณเดฟเดคเตเดฏเดตเตเด‚
SQL เดญเดพเดท เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต Kinesis เดธเตเดŸเตเดฐเต€เดฎเตเด•เดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดคเดคเตเดธเดฎเดฏ เดกเดพเดฑเตเดฑ เด…เดจเดฒเดฟเดฑเตเดฑเดฟเด•เตเดธเต เดจเดŸเดคเตเดคเดพเตป Kinesis เดกเดพเดฑเตเดฑ เด…เดจเดฒเดฟเดฑเตเดฑเดฟเด•เตเดธเต เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต. เด‡เดคเต เดชเต‚เตผเดฃเตเดฃเดฎเดพเดฏเตเด‚ เด“เดŸเตเดŸเต‹เดธเตโ€Œเด•เต‡เดฒเดฟเด‚เด—เต เดธเต‡เดตเดจเดฎเดพเดฃเต (เด•เดฟเดจเต†เดธเดฟเดธเต เดธเตเดŸเตเดฐเต€เดฎเตเด•เดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดตเตเดฏเดคเตเดฏเดธเตเดคเดฎเดพเดฏเดฟ):

  1. เด‰เดฑเดตเดฟเดŸ เดกเดพเดฑเตเดฑเดฏเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เดณเต† เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเด•เตเด•เดฟ เดชเตเดคเดฟเดฏ เดธเตเดŸเตเดฐเต€เดฎเตเด•เตพ (เด”เดŸเตเดŸเตเดชเตเดŸเตเดŸเต เดธเตเดŸเตเดฐเต€เด‚) เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดพเตป เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต;
  2. เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เดธเด‚เดญเดตเดฟเดšเตเดš เดชเดฟเดถเด•เตเด•เดณเตเดณเตเดณ เด’เดฐเต เดธเตเดŸเตเดฐเต€เด‚ เดจเตฝเด•เตเดจเตเดจเต (เดชเดฟเดถเด•เต เดธเตเดŸเตเดฐเต€เด‚);
  3. เด‡เตปเดชเตเดŸเตเดŸเต เดกเดพเดฑเตเดฑ เดธเตเด•เต€เด‚ เดธเตเดตเดฏเดฎเต‡เดต เดจเดฟเตผเดฃเตเดฃเดฏเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚ (เด†เดตเดถเตเดฏเดฎเต†เด™เตเด•เดฟเตฝ เด…เดคเต เดธเตเดตเดฎเต‡เดงเดฏเดพ เดชเตเดจเตผ เดจเดฟเตผเดตเดšเดฟเด•เตเด•เดพเดตเตเดจเตเดจเดคเดพเดฃเต).

เด‡เดคเตŠเดฐเต เดตเดฟเดฒเด•เตเดฑเดžเตเดž เดธเต‡เดตเดจเดฎเดฒเตเดฒ - เด’เดฐเต เดฎเดฃเดฟเด•เตเด•เต‚เดฑเดฟเดจเต 0.11 USD, เด…เดคเดฟเดจเดพเตฝ เดจเดฟเด™เตเด™เตพ เด‡เดคเต เดถเตเดฐเดฆเตเดงเดพเดชเต‚เตผเดตเตเดตเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด•เดฏเตเด‚ เดชเต‚เตผเดคเตเดคเดฟเดฏเดพเด•เตเด•เตเดฎเตเดชเต‹เตพ เด…เดคเต เด‡เดฒเตเดฒเดพเดคเดพเด•เตเด•เตเด•เดฏเตเด‚ เดตเต‡เดฃเด‚.

เดจเดฎเตเด•เตเด•เต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดกเดพเดฑเตเดฑ เด‰เดฑเดตเดฟเดŸเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดฌเดจเตเดงเดฟเดชเตเดชเดฟเด•เตเด•เดพเด‚:

เด†เดฎเดธเต‹เตบ เด•เตˆเดจเดฟเดธเดฟเดธเตเดฎเดพเดฏเตเดณเตเดณ Aviasales API เดธเด‚เดฏเต‹เดœเดจเดตเตเด‚ เดธเต†เตผเดตเตผเดฒเต†เดธเตเดธเต เดฒเดพเดณเดฟเดคเตเดฏเดตเตเด‚
เดžเด™เตเด™เตพ เดฌเดจเตเดงเดฟเดชเตเดชเดฟเด•เตเด•เดพเตป เดชเต‹เด•เตเดจเตเดจ เดธเตเดŸเตเดฐเต€เด‚ เดคเดฟเดฐเดžเตเดžเต†เดŸเตเด•เตเด•เตเด• (airline_tickets):

เด†เดฎเดธเต‹เตบ เด•เตˆเดจเดฟเดธเดฟเดธเตเดฎเดพเดฏเตเดณเตเดณ Aviasales API เดธเด‚เดฏเต‹เดœเดจเดตเตเด‚ เดธเต†เตผเดตเตผเดฒเต†เดธเตเดธเต เดฒเดพเดณเดฟเดคเตเดฏเดตเตเด‚
เด…เดŸเตเดคเตเดคเดคเดพเดฏเดฟ, เดจเดฟเด™เตเด™เตพ เด’เดฐเต เดชเตเดคเดฟเดฏ IAM เดฑเต‹เตพ เด…เดฑเตเดฑเดพเดšเตเดšเตเดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต, เด…เดคเตเดตเดดเดฟ เด…เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเต เดธเตเดŸเตเดฐเต€เดฎเดฟเตฝ เดจเดฟเดจเตเดจเต เดตเดพเดฏเดฟเด•เตเด•เดพเดจเตเด‚ เดธเตเดŸเตเดฐเต€เดฎเดฟเดฒเต‡เด•เตเด•เต เดŽเดดเตเดคเดพเดจเตเด‚ เด•เดดเดฟเดฏเตเด‚. เด‡เดคเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, เด†เด•เตโ€Œเดธเดธเต เดชเต†เตผเดฎเดฟเดทเตปเดธเต เดฌเตเดฒเต‹เด•เตเด•เดฟเตฝ เด’เดจเตเดจเตเด‚ เดฎเดพเดฑเตเดฑเดพเดคเดฟเดฐเตเดจเตเดจเดพเตฝ เดฎเดคเดฟ:

เด†เดฎเดธเต‹เตบ เด•เตˆเดจเดฟเดธเดฟเดธเตเดฎเดพเดฏเตเดณเตเดณ Aviasales API เดธเด‚เดฏเต‹เดœเดจเดตเตเด‚ เดธเต†เตผเดตเตผเดฒเต†เดธเตเดธเต เดฒเดพเดณเดฟเดคเตเดฏเดตเตเด‚
เด‡เดชเตเดชเต‹เตพ เดธเตเดŸเตเดฐเต€เดฎเดฟเดฒเต† เดกเดพเดฑเตเดฑเดพ เดธเตเด•เต€เดฎ เด•เดฃเตเดŸเต†เดคเตเดคเตเดจเตเดจเดคเดฟเดจเต เด…เดญเตเดฏเตผเดคเตเดฅเดฟเด•เตเด•เดพเด‚; เด‡เดคเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, "เดธเตเด•เต€เดฎ เด•เดฃเตเดŸเต†เดคเตเดคเตเด•" เดฌเดŸเตเดŸเดฃเดฟเตฝ เด•เตเดฒเดฟเด•เตเด•เตเดšเต†เดฏเตเดฏเตเด•. เดคเตฝเดซเดฒเดฎเดพเดฏเดฟ, IAM เดฑเต‹เตพ เด…เดชเตโ€Œเดกเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดฏเดชเตเดชเต†เดŸเตเด‚ (เดชเตเดคเดฟเดฏ เด’เดฐเต†เดฃเตเดฃเด‚ เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เตเด‚) เด•เต‚เดŸเดพเดคเต† เดธเตโ€ŒเดŸเตเดฐเต€เดฎเดฟเตฝ เด‡เดคเดฟเดจเด•เด‚ เดŽเดคเตเดคเดฟเดฏ เดกเดพเดฑเตเดฑเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เดธเตเด•เต€เดฎ เด•เดฃเตเดŸเต†เดคเตเดคเตฝ เดธเดฎเดพเดฐเด‚เดญเดฟเด•เตเด•เตเด‚:

เด†เดฎเดธเต‹เตบ เด•เตˆเดจเดฟเดธเดฟเดธเตเดฎเดพเดฏเตเดณเตเดณ Aviasales API เดธเด‚เดฏเต‹เดœเดจเดตเตเด‚ เดธเต†เตผเดตเตผเดฒเต†เดธเตเดธเต เดฒเดพเดณเดฟเดคเตเดฏเดตเตเด‚
เด‡เดชเตเดชเต‹เตพ เดจเดฟเด™เตเด™เตพ SQL เดŽเดกเดฟเดฑเตเดฑเดฑเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต. เดจเดฟเด™เตเด™เตพ เดˆ เดฌเดŸเตเดŸเดฃเดฟเตฝ เด•เตเดฒเดฟเด•เตเด•เตเดšเต†เดฏเตเดฏเตเดฎเตเดชเต‹เตพ, เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดธเดฎเดพเดฐเด‚เดญเดฟเด•เตเด•เดพเตป เด†เดตเดถเตเดฏเดชเตเดชเต†เดŸเตเดจเตเดจ เด’เดฐเต เดตเดฟเตปเดกเต‹ เดฆเตƒเดถเตเดฏเดฎเดพเด•เตเด‚ - เดจเดฟเด™เตเด™เตพ เดฒเต‹เดžเตเดšเต เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเต เดคเดฟเดฐเดžเตเดžเต†เดŸเตเด•เตเด•เตเด•:

เด†เดฎเดธเต‹เตบ เด•เตˆเดจเดฟเดธเดฟเดธเตเดฎเดพเดฏเตเดณเตเดณ Aviasales API เดธเด‚เดฏเต‹เดœเดจเดตเตเด‚ เดธเต†เตผเดตเตผเดฒเต†เดธเตเดธเต เดฒเดพเดณเดฟเดคเตเดฏเดตเตเด‚
เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดฒเดณเดฟเดคเดฎเดพเดฏ เดšเต‹เดฆเตเดฏเด‚ 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';

เดฑเดฟเดฒเต‡เดทเดฃเตฝ เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเตเด•เดณเดฟเตฝ, เดฑเต†เด•เตเด•เต‹เตผเดกเตเด•เตพ เดšเต‡เตผเด•เตเด•เดพเตป เด‡เตปเดธเต‡เตผเดŸเตเดŸเต เดธเตเดฑเตเดฑเต‡เดฑเตเดฑเตโ€Œเดฎเต†เดจเตเดฑเตเด•เดณเตเด‚ เดกเดพเดฑเตเดฑ เด…เดจเตเดตเต‡เดทเดฟเด•เตเด•เดพเตป เด’เดฐเต SELECT เดธเตเดฑเตเดฑเต‡เดฑเตเดฑเตโ€Œเดฎเต†เดจเตเดฑเตเด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดจเดฟเด™เตเด™เตพ เดชเดŸเตเดŸเดฟเด•เด•เดณเตเดฎเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต. Amazon Kinesis Data Analytics-เตฝ, เดจเดฟเด™เตเด™เตพ เดธเตเดŸเตเดฐเต€เดฎเตเด•เตพ (เดธเตเดŸเตเดฐเต€เดฎเตเด•เตพ), เดชเดฎเตเดชเตเด•เตพ (PUMP-เด•เตพ) เดŽเดจเตเดจเดฟเดตเดฏเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต - เด’เดฐเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเดฟเดฒเต† เด’เดฐเต เดธเตเดŸเตเดฐเต€เดฎเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดกเดพเดฑเตเดฑ เดฎเดฑเตเดฑเตŠเดฐเต เดธเตเดŸเตเดฐเต€เดฎเดฟเดฒเต‡เด•เตเด•เต เดšเต‡เตผเด•เตเด•เตเดจเตเดจ เดคเตเดŸเตผเดšเตเดšเดฏเดพเดฏ เดคเดฟเดฐเตเด•เตฝ เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เตพ.

เดฎเตเด•เดณเดฟเตฝ เด…เดตเดคเดฐเดฟเดชเตเดชเดฟเดšเตเดš SQL เดšเต‹เดฆเตเดฏเด‚ เด…เดฏเตเดฏเดพเดฏเดฟเดฐเด‚ เดฑเตเดฌเดฟเดณเดฟเตฝ เดคเดพเดดเต†เดฏเตเดณเตเดณ เดŽเดฏเดฑเต‹เดซเตเดฒเต‹เดŸเตเดŸเต เดŸเดฟเด•เตเด•เดฑเตเดฑเตเด•เตพเด•เตเด•เดพเดฏเตเดณเตเดณ เดคเดฟเดฐเดฏเดฒเตเด•เตพ. เดˆ เดตเตเดฏเดตเดธเตเดฅเด•เตพ เดชเดพเดฒเดฟเด•เตเด•เตเดจเตเดจ เดŽเดฒเตเดฒเดพ เดฑเต†เด•เตเด•เต‹เตผเดกเตเด•เดณเตเด‚ DESTINATION_SQL_STREAM เดธเตเดŸเตเดฐเต€เดฎเดฟเตฝ เดธเตเดฅเดพเดชเดฟเด•เตเด•เตเด‚.

เด†เดฎเดธเต‹เตบ เด•เตˆเดจเดฟเดธเดฟเดธเตเดฎเดพเดฏเตเดณเตเดณ Aviasales API เดธเด‚เดฏเต‹เดœเดจเดตเตเด‚ เดธเต†เตผเดตเตผเดฒเต†เดธเตเดธเต เดฒเดพเดณเดฟเดคเตเดฏเดตเตเด‚
เดกเต†เดธเตเดฑเตเดฑเดฟเดจเต‡เดทเตป เดฌเตเดฒเต‹เด•เตเด•เดฟเตฝ, เดธเตโ€Œเดชเต†เดทเตเดฏเตฝ_เดธเตเดŸเตเดฐเต€เด‚ เดธเตเดŸเตเดฐเต€เด‚ เดคเดฟเดฐเดžเตเดžเต†เดŸเตเด•เตเด•เตเด•, เด•เต‚เดŸเดพเดคเต† เด‡เตป-เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดธเตเดŸเตเดฐเต€เด‚ เดจเดพเดฎเดคเตเดคเดฟเตฝ DESTINATION_SQL_STREAM เดกเตเดฐเต‹เดชเตเดชเต-เดกเต—เตบ เดฒเดฟเดธเตเดฑเตเดฑเดฟเตฝ:

เด†เดฎเดธเต‹เตบ เด•เตˆเดจเดฟเดธเดฟเดธเตเดฎเดพเดฏเตเดณเตเดณ Aviasales API เดธเด‚เดฏเต‹เดœเดจเดตเตเด‚ เดธเต†เตผเดตเตผเดฒเต†เดธเตเดธเต เดฒเดพเดณเดฟเดคเตเดฏเดตเตเด‚
เดŽเดฒเตเดฒเดพ เด•เตƒเดคเตเดฐเดฟเดฎเดคเตเดตเด™เตเด™เดณเตเดŸเต†เดฏเตเด‚ เดซเดฒเด‚ เดšเตเดตเดŸเต†เดฏเตเดณเตเดณ เดšเดฟเดคเตเดฐเดคเตเดคเดฟเดจเต เดธเดฎเดพเดจเดฎเดพเดฏ เด’เดจเตเดจเดพเดฏเดฟเดฐเดฟเด•เตเด•เดฃเด‚:

เด†เดฎเดธเต‹เตบ เด•เตˆเดจเดฟเดธเดฟเดธเตเดฎเดพเดฏเตเดณเตเดณ Aviasales API เดธเด‚เดฏเต‹เดœเดจเดตเตเด‚ เดธเต†เตผเดตเตผเดฒเต†เดธเตเดธเต เดฒเดพเดณเดฟเดคเตเดฏเดตเตเด‚

เด’เดฐเต SNS เดตเดฟเดทเดฏเด‚ เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดธเดฌเตโ€Œเดธเตโ€Œเด•เตเดฐเตˆเดฌเต เดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต

เดฒเดณเดฟเดคเดฎเดพเดฏ เด…เดฑเดฟเดฏเดฟเดชเตเดชเต เดธเต‡เดตเดจเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เดฏเดฟ เด…เดตเดฟเดŸเต† เดŽเดฏเตผเดฒเตˆเตปเดธเต เดŽเดจเตเดจ เดชเต‡เดฐเดฟเตฝ เด’เดฐเต เดชเตเดคเดฟเดฏ เดตเดฟเดทเดฏเด‚ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด•:

เด†เดฎเดธเต‹เตบ เด•เตˆเดจเดฟเดธเดฟเดธเตเดฎเดพเดฏเตเดณเตเดณ Aviasales API เดธเด‚เดฏเต‹เดœเดจเดตเตเด‚ เดธเต†เตผเดตเตผเดฒเต†เดธเตเดธเต เดฒเดพเดณเดฟเดคเตเดฏเดตเตเด‚
เดˆ เดตเดฟเดทเดฏเด‚ เดธเดฌเตโ€Œเดธเตโ€Œเด•เตเดฐเตˆเดฌเตเดšเต†เดฏเตโ€Œเดคเต SMS เด…เดฑเดฟเดฏเดฟเดชเตเดชเตเด•เตพ เด…เดฏเดฏเตโ€Œเด•เตเด•เตเดจเตเดจ เดฎเตŠเดฌเตˆเตฝ เดซเต‹เตบ เดจเดฎเตเดชเตผ เดธเต‚เดšเดฟเดชเตเดชเดฟเด•เตเด•เตเด•:

เด†เดฎเดธเต‹เตบ เด•เตˆเดจเดฟเดธเดฟเดธเตเดฎเดพเดฏเตเดณเตเดณ Aviasales API เดธเด‚เดฏเต‹เดœเดจเดตเตเด‚ เดธเต†เตผเดตเตผเดฒเต†เดธเตเดธเต เดฒเดพเดณเดฟเดคเตเดฏเดตเตเด‚

DynamoDB-เดฏเดฟเตฝ เด’เดฐเต เดชเดŸเตเดŸเดฟเด• เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด•

เด…เดตเดฐเตเดŸเต† airline_tickets เดธเตโ€ŒเดŸเตเดฐเต€เดฎเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เด…เดธเด‚เดธเตโ€Œเด•เตƒเดค เดกเดพเดฑเตเดฑ เดธเด‚เดญเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต, DynamoDB-เดฏเดฟเตฝ เด…เดคเต‡ เดชเต‡เดฐเดฟเตฝ เด’เดฐเต เดชเดŸเตเดŸเดฟเด• เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เดพเด‚. เดžเด™เตเด™เตพ เดฑเต†เด•เตเด•เต‹เตผเดกเต_เดเดกเดฟ เดชเตเดฐเดพเดฅเดฎเดฟเด• เด•เต€ เด†เดฏเดฟ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด‚:

เด†เดฎเดธเต‹เตบ เด•เตˆเดจเดฟเดธเดฟเดธเตเดฎเดพเดฏเตเดณเตเดณ Aviasales API เดธเด‚เดฏเต‹เดœเดจเดตเตเด‚ เดธเต†เตผเดตเตผเดฒเต†เดธเตเดธเต เดฒเดพเดณเดฟเดคเตเดฏเดตเตเด‚

เด’เดฐเต เดฒเดพเด‚เดก เดซเด‚เด—เตเดทเตป เด•เดณเด•เตเดŸเตผ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเต

เดจเดฎเตเด•เตเด•เต เด•เดณเด•เตเดŸเตผ เดŽเดจเตเดจ เดชเต‡เดฐเดฟเตฝ เด’เดฐเต เดฒเดพเด‚เดก เดซเด‚เด—เตโ€Œเดทเตป เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เดพเด‚, เดŽเดฏเตผเดฒเตˆเตป_เดŸเดฟเด•เตเด•เดฑเตเดฑเต เดธเตเดŸเตเดฐเต€เด‚ เดตเต‹เดŸเตเดŸเต†เดŸเตเดชเตเดชเต เดจเดŸเดคเตเดคเตเด•เดฏเตเด‚ เด…เดตเดฟเดŸเต† เดชเตเดคเดฟเดฏ เดฑเต†เด•เตเด•เต‹เตผเดกเตเด•เตพ เด•เดฃเตเดŸเต†เดคเตเดคเตเด•เดฏเดพเดฃเต†เด™เตเด•เดฟเตฝ, เดˆ เดฑเต†เด•เตเด•เต‹เตผเดกเตเด•เตพ DynamoDB เดŸเต‡เดฌเดฟเดณเดฟเตฝ เดšเต‡เตผเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเด• เดŽเดจเตเดจเดคเดพเดฃเต เด‡เดคเดฟเดจเตเดฑเต† เดšเตเดฎเดคเดฒ. เดตเตเดฏเด•เตเดคเดฎเดพเดฏเตเด‚, เดกเดฟเดซเต‹เตพเดŸเตเดŸเต เด…เดตเด•เดพเดถเด™เตเด™เตพเด•เตเด•เต เดชเตเดฑเดฎเต‡, เดˆ เดฒเดพเด‚เดกเดฏเตเด•เตเด•เต Kinesis เดกเดพเดฑเตเดฑ เดธเตโ€ŒเดŸเตเดฐเต€เดฎเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เดฑเต€เดกเต เด†เด•เตโ€Œเดธเดธเตเด‚ เดกเตˆเดจเดพเดฎเต‹เดกเดฟเดฌเดฟเดฏเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เดฑเตˆเดฑเตเดฑเต เด†เด•เตโ€Œเดธเดธเตเดธเตเด‚ เด‰เดฃเตเดŸเดพเดฏเดฟเดฐเดฟเด•เตเด•เดฃเด‚.

เด•เดณเด•เตเดŸเตผ เดฒเดพเด‚เดก เดซเด‚เด—เตโ€Œเดทเดจเตเดตเต‡เดฃเตเดŸเดฟ เด’เดฐเต IAM เดฑเต‹เตพ เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เตเดจเตเดจเต
เด†เดฆเตเดฏเด‚, Lambda-TicketsProcessingRole เดŽเดจเตเดจ เดชเต‡เดฐเดฟเตฝ เดฒเดพเด‚เดกเดฏเตโ€Œเด•เตเด•เดพเดฏเดฟ เด’เดฐเต เดชเตเดคเดฟเดฏ IAM เดฑเต‹เตพ เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เดพเด‚:

เด†เดฎเดธเต‹เตบ เด•เตˆเดจเดฟเดธเดฟเดธเตเดฎเดพเดฏเตเดณเตเดณ Aviasales API เดธเด‚เดฏเต‹เดœเดจเดตเตเด‚ เดธเต†เตผเดตเตผเดฒเต†เดธเตเดธเต เดฒเดพเดณเดฟเดคเตเดฏเดตเตเด‚
เดชเดฐเต€เด•เตเดทเดฃ เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดšเตเดตเดŸเต†เดฏเตเดณเตเดณ เดšเดฟเดคเตเดฐเดคเตเดคเดฟเตฝ เด•เดพเดฃเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเตเดชเต‹เดฒเต†, เดฎเตเตปเด•เต‚เดŸเตเดŸเดฟ เด•เตเดฐเดฎเต€เด•เดฐเดฟเดšเตเดš AmazonKinesisReadOnlyAccess, AmazonDynamoDBFullAccess เดจเดฏเด™เตเด™เตพ เดคเดฟเด•เดšเตเดšเตเด‚ เด…เดจเตเดฏเต‹เดœเตเดฏเดฎเดพเดฃเต:

เด†เดฎเดธเต‹เตบ เด•เตˆเดจเดฟเดธเดฟเดธเตเดฎเดพเดฏเตเดณเตเดณ Aviasales API เดธเด‚เดฏเต‹เดœเดจเดตเตเด‚ เดธเต†เตผเดตเตผเดฒเต†เดธเตเดธเต เดฒเดพเดณเดฟเดคเตเดฏเดตเตเด‚
เด†เดฎเดธเต‹เตบ เด•เตˆเดจเดฟเดธเดฟเดธเตเดฎเดพเดฏเตเดณเตเดณ Aviasales API เดธเด‚เดฏเต‹เดœเดจเดตเตเด‚ เดธเต†เตผเดตเตผเดฒเต†เดธเตเดธเต เดฒเดพเดณเดฟเดคเตเดฏเดตเตเด‚

เดŽเดฏเตผเดฒเตˆเตป_เดธเตเดŸเตเดฐเต€เดฎเดฟเตฝ เดชเตเดคเดฟเดฏ เดŽเตปเดŸเตเดฐเดฟเด•เตพ เดชเตเดฐเดตเต‡เดถเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ Kinesis-เตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เด’เดฐเต เดŸเตเดฐเดฟเด—เตผ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเดพเดฃเต เดˆ เดฒเดพเด‚เดก เดฒเต‹เดžเตเดšเต เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเต, เด…เดคเดฟเดจเดพเตฝ เดžเด™เตเด™เตพ เด’เดฐเต เดชเตเดคเดฟเดฏ เดŸเตเดฐเดฟเด—เตผ เดšเต‡เตผเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต:

เด†เดฎเดธเต‹เตบ เด•เตˆเดจเดฟเดธเดฟเดธเตเดฎเดพเดฏเตเดณเตเดณ Aviasales API เดธเด‚เดฏเต‹เดœเดจเดตเตเด‚ เดธเต†เตผเดตเตผเดฒเต†เดธเตเดธเต เดฒเดพเดณเดฟเดคเตเดฏเดตเตเด‚
เด†เดฎเดธเต‹เตบ เด•เตˆเดจเดฟเดธเดฟเดธเตเดฎเดพเดฏเตเดณเตเดณ Aviasales API เดธเด‚เดฏเต‹เดœเดจเดตเตเด‚ เดธเต†เตผเดตเตผเดฒเต†เดธเตเดธเต เดฒเดพเดณเดฟเดคเตเดฏเดตเตเด‚
เด•เต‹เดกเต เดคเดฟเดฐเตเด•เตเด•เดฏเตเด‚ เดฒเดพเด‚เดก เดธเด‚เดฐเด•เตเดทเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเด• เดฎเดพเดคเตเดฐเดฎเดพเดฃเต เด…เดตเดถเต‡เดทเดฟเด•เตเด•เตเดจเตเดจเดคเต.

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

เด’เดฐเต เดฒเดพเด‚เดก เดซเด‚เด—เตโ€Œเดทเตป เดจเต‹เดŸเตเดŸเดฟเดซเดฏเตผ เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เตเดจเตเดจเต

เดฐเดฃเตเดŸเดพเดฎเดคเตเดคเต† เดธเตเดŸเตเดฐเต€เด‚ (เดธเตเดชเต†เดทเตเดฏเตฝ_เดธเตเดŸเตเดฐเต€เด‚) เดจเดฟเดฐเต€เด•เตเดทเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดŽเดธเตเดŽเตปเดŽเดธเดฟเดฒเต‡เด•เตเด•เต เด’เดฐเต เด…เดฑเดฟเดฏเดฟเดชเตเดชเต เด…เดฏเดฏเตเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจ เดฐเดฃเตเดŸเดพเดฎเดคเตเดคเต† เดฒเดพเด‚เดก เดซเด‚เด—เตเดทเตป เดธเดฎเดพเดจเดฎเดพเดฏ เดฐเต€เดคเดฟเดฏเดฟเตฝ เดธเตƒเดทเตเดŸเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เด…เดคเดฟเดจเดพเตฝ, เดˆ เดฒเดพเด‚เดกเดฏเตเด•เตเด•เต Kinesis-เตฝ เดจเดฟเดจเตเดจเต เดตเดพเดฏเดฟเด•เตเด•เดพเดจเตเด‚ เดคเดจเตเดจเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต SNS เดตเดฟเดทเดฏเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดธเดจเตเดฆเต‡เดถเด™เตเด™เตพ เด…เดฏเดฏเตโ€Œเด•เตเด•เดพเดจเตเด‚ เด†เด•เตโ€Œเดธเดธเต เด‰เดฃเตเดŸเดพเดฏเดฟเดฐเดฟเด•เตเด•เดฃเด‚, เด…เดคเต เดˆ เดตเดฟเดทเดฏเดคเตเดคเดฟเดจเตเดฑเต† เดŽเดฒเตเดฒเดพ เดตเดฐเดฟเด•เตเด•เดพเตผเด•เตเด•เตเด‚ (เด‡เดฎเต†เดฏเดฟเตฝ, SMS, เดฎเตเดคเดฒเดพเดฏเดต) SNS เดธเต‡เดตเดจเด‚ เด…เดฏเดฏเตโ€Œเด•เตเด•เตเด‚.

เด’เดฐเต IAM เดฑเต‹เตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเต
เด†เดฆเตเดฏเด‚, เดˆ เดฒเดพเด‚เดกเดฏเตโ€Œเด•เตเด•เดพเดฏเดฟ เดžเด™เตเด™เตพ IAM เดฑเต‹เตพ Lambda-KinesisAlarm เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เตเดจเตเดจเต, เดคเตเดŸเตผเดจเตเดจเต เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เตเดจเตเดจ alarm_notifier lambda-เดฏเตโ€Œเด•เตเด•เต เดˆ เดฑเต‹เตพ เดจเดฟเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต:

เด†เดฎเดธเต‹เตบ เด•เตˆเดจเดฟเดธเดฟเดธเตเดฎเดพเดฏเตเดณเตเดณ Aviasales API เดธเด‚เดฏเต‹เดœเดจเดตเตเด‚ เดธเต†เตผเดตเตผเดฒเต†เดธเตเดธเต เดฒเดพเดณเดฟเดคเตเดฏเดตเตเด‚
เด†เดฎเดธเต‹เตบ เด•เตˆเดจเดฟเดธเดฟเดธเตเดฎเดพเดฏเตเดณเตเดณ Aviasales API เดธเด‚เดฏเต‹เดœเดจเดตเตเด‚ เดธเต†เตผเดตเตผเดฒเต†เดธเตเดธเต เดฒเดพเดณเดฟเดคเตเดฏเดตเตเด‚

เดธเตโ€Œเดชเต†เดทเตเดฏเตฝ_เดธเตเดŸเตเดฐเต€เดฎเดฟเตฝ เดชเตเดฐเดตเต‡เดถเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดชเตเดคเดฟเดฏ เดฑเต†เด•เตเด•เต‹เตผเดกเตเด•เตพเด•เตเด•เดพเดฏเดฟ เดˆ เดฒเดพเด‚เดก เด’เดฐเต เดŸเตเดฐเดฟเด—เดฑเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดฃเด‚, เด…เดคเดฟเดจเดพเตฝ เด•เดณเด•เตเดŸเตผ เดฒเดพเด‚เดกเดฏเตโ€Œเด•เตเด•เดพเดฏเดฟ เดžเด™เตเด™เตพ เดšเต†เดฏเตโ€Œเดคเดคเตเดชเต‹เดฒเต† เดจเดฟเด™เตเด™เตพ เดŸเตเดฐเดฟเด—เตผ เด•เต‹เตบเดซเดฟเด—เตผ เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต.

เดˆ เดฒเดพเด‚เดก เด•เต‹เตบเดซเดฟเด—เตผ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต เดŽเดณเตเดชเตเดชเดฎเดพเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต, เดจเดฎเตเด•เตเด•เต เด’เดฐเต เดชเตเดคเดฟเดฏ เดŽเตปเดตเดฏเต‹เตบเดฎเต†เดจเตเดฑเต เดตเต‡เดฐเดฟเดฏเดฌเดฟเตพ เด…เดตเดคเดฐเดฟเดชเตเดชเดฟเด•เตเด•เดพเด‚ - TOPIC_ARN, เด…เดตเดฟเดŸเต† เดžเด™เตเด™เตพ เดŽเดฏเตผเดฒเตˆเตปเดธเต เดตเดฟเดทเดฏเดคเตเดคเดฟเดจเตเดฑเต† ANR (เด†เดฎเดธเต‹เตบ เดฑเดฟเดธเต‹เดดเตเดธเต เดจเดพเดฎเด™เตเด™เตพ) เดธเตเดฅเดพเดชเดฟเด•เตเด•เตเดจเตเดจเต:

เด†เดฎเดธเต‹เตบ เด•เตˆเดจเดฟเดธเดฟเดธเตเดฎเดพเดฏเตเดณเตเดณ Aviasales API เดธเด‚เดฏเต‹เดœเดจเดตเตเด‚ เดธเต†เตผเดตเตผเดฒเต†เดธเตเดธเต เดฒเดพเดณเดฟเดคเตเดฏเดตเตเด‚
เดฒเดพเด‚เดก เด•เต‹เดกเต เดšเต‡เตผเด•เตเด•เตเด•, เด‡เดคเต เด’เดŸเตเดŸเตเด‚ เดธเด™เตเด•เต€เตผเดฃเตเดฃเดฎเดฒเตเดฒ:

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

เด‡เดตเดฟเดŸเต†เดฏเดพเดฃเต เดฎเดพเดจเตเดตเตฝ เดธเดฟเดธเตเดฑเตเดฑเด‚ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดชเต‚เตผเดคเตเดคเดฟเดฏเดพเด•เตเด•เดฟเดฏเดคเต†เดจเตเดจเต เดคเต‹เดจเตเดจเตเดจเตเดจเต. เดžเด™เตเด™เตพ เดŽเดฒเตเดฒเดพเด‚ เดถเดฐเดฟเดฏเดพเดฏเดฟ เด•เตเดฐเดฎเต€เด•เดฐเดฟเดšเตเดšเดฟเดŸเตเดŸเตเดฃเตเดŸเต†เดจเตเดจเต เดชเดฐเดฟเดถเต‹เดงเดฟเดšเตเดšเต เด‰เดฑเดชเตเดชเดพเด•เตเด•เตเด• เดฎเดพเดคเตเดฐเดฎเดพเดฃเต เด…เดตเดถเต‡เดทเดฟเด•เตเด•เตเดจเตเดจเดคเต.

เดŸเต†เดฑเดพเดซเต‹เด‚ เด•เต‹เดกเดฟเตฝ เดจเดฟเดจเตเดจเต เดตเดฟเดจเตเดฏเดธเดฟเด•เตเด•เตเด•

เด†เดตเดถเตเดฏเดฎเดพเดฏ เดคเดฏเตเดฏเดพเดฑเต†เดŸเตเดชเตเดชเต

เดŸเต†เดฑเดซเต‹เด‚ เด•เต‹เดกเดฟเตฝ เดจเดฟเดจเตเดจเต เด‡เตปเดซเตเดฐเดพเดธเตเดŸเตเดฐเด•เตเดšเตผ เดตเดฟเดจเตเดฏเดธเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดตเดณเดฐเต† เดธเต—เด•เดฐเตเดฏเดชเตเดฐเดฆเดฎเดพเดฏ เด’เดฐเต เด“เดชเตเดชเตบ เดธเต‹เดดเตเดธเต เดŸเต‚เดณเดพเดฃเต. เด‡เดคเดฟเดจเต เด…เดคเดฟเดจเตเดฑเต‡เดคเดพเดฏ เดตเดพเด•เตเดฏเด˜เดŸเดจเดฏเตเดฃเตเดŸเต, เด…เดคเต เดชเด เดฟเด•เตเด•เดพเตป เดŽเดณเตเดชเตเดชเดฎเดพเดฃเต เด’เดชเตเดชเด‚ เดŽเด™เตเด™เดจเต†, เดŽเดจเตเดคเต เดตเดฟเดจเตเดฏเดธเดฟเด•เตเด•เดฃเด‚ เดŽเดจเตเดจเดคเดฟเดจเต เดจเดฟเดฐเดตเดงเดฟ เด‰เดฆเดพเดนเดฐเดฃเด™เตเด™เดณเตเดฃเตเดŸเต. เด†เดฑเตเดฑเด‚ เดŽเดกเดฟเดฑเตเดฑเดฑเดฟเดจเต‹ เดตเดฟเดทเตเดตเตฝ เดธเตเดฑเตเดฑเตเดกเดฟเดฏเต‹ เด•เต‹เดกเดฟเดจเต‹ เดŸเต†เดฑเดพเดซเต‹เดฎเดฟเดจเตŠเดชเตเดชเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเต เดŽเดณเตเดชเตเดชเดฎเดพเด•เตเด•เตเดจเตเดจ เดจเดฟเดฐเดตเดงเดฟ เดนเดพเตปเดกเดฟ เดชเตเดฒเด—เดฟเดจเตเด•เตพ เด‰เดฃเตเดŸเต.

เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดตเดฟเดคเดฐเดฃเด‚ เดกเต—เตบเดฒเต‹เดกเต เดšเต†เดฏเตเดฏเดพเด‚ เด‡เดตเดฟเดŸเต† เดจเดฟเดจเตเดจเต. เดŽเดฒเตเดฒเดพ เดŸเต†เดฑเดพเดซเต‹เด‚ เด•เดดเดฟเดตเตเด•เดณเตเดŸเต†เดฏเตเด‚ เดตเดฟเดถเดฆเดฎเดพเดฏ เดตเดฟเดถเด•เดฒเดจเด‚ เดˆ เดฒเต‡เด–เดจเดคเตเดคเดฟเดจเตเดฑเต† เดชเดฐเดฟเดงเดฟเด•เตเด•เดชเตเดชเตเดฑเดฎเดพเดฃเต, เด…เดคเดฟเดจเดพเตฝ เดžเด™เตเด™เตพ เดชเตเดฐเดงเดพเดจ เดชเต‹เดฏเดฟเดจเตเดฑเตเด•เดณเดฟเดฒเต‡เด•เตเด•เต เดธเตเดตเดฏเด‚ เดชเดฐเดฟเดฎเดฟเดคเดชเตเดชเต†เดŸเตเดคเตเดคเตเด‚.

เดŽเด™เตเด™เดจเต† เด†เดฐเด‚เดญเดฟเด•เตเด•เดพเด‚

เดชเดฆเตเดงเดคเดฟเดฏเตเดŸเต† เดชเต‚เตผเดฃเตเดฃ เด•เต‹เดกเต เดŽเดจเตเดฑเต† เดถเต‡เด–เดฐเดคเตเดคเดฟเตฝ. เดžเด™เตเด™เตพ เดธเตเดตเดฏเด‚ เดถเต‡เด–เดฐเด‚ เด•เตเดฒเต‹เตบ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดฎเตเดฎเตเดชเต, เดจเดฟเด™เตเด™เตพ AWS CLI เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ เด•เต‹เตบเดซเดฟเด—เตผ เดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดคเดฟเดŸเตเดŸเตเดฃเตเดŸเต†เดจเตเดจเต เด‰เดฑเดชเตเดชเดพเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต, เด•เดพเดฐเดฃเด‚... Terraform ~/.aws/credentials เดซเดฏเดฒเดฟเตฝ เด•เตเดฐเต†เดกเตปเดทเตเดฏเดฒเตเด•เตพเด•เตเด•เดพเดฏเดฟ เดจเต‹เด•เตเด•เตเด‚.

เด•เตเดฒเต—เดกเดฟเตฝ เดจเดฟเดฒเดตเดฟเตฝ เดŸเต†เดฑเดพเดซเต‹เด‚ เดŽเดจเตเดคเดพเดฃเต เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เตเดจเตเดจเดคเต†เดจเตเดจเต เด•เดพเดฃเตเดจเตเดจเดคเดฟเดจเต เดฎเตเดดเตเดตเตป เด‡เตปเดซเตเดฐเดพเดธเตเดŸเตเดฐเด•เตเดšเดฑเตเด‚ เดตเดฟเดจเตเดฏเดธเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดฎเตเดฎเตเดชเต เดชเตเดฒเดพเตป เด•เดฎเดพเตปเดกเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเด• เดŽเดจเตเดจเดคเดพเดฃเต เด’เดฐเต เดจเดฒเตเดฒ เดธเดฎเตเดชเตเดฐเดฆเดพเดฏเด‚:

terraform.exe plan

เด…เดฑเดฟเดฏเดฟเดชเตเดชเตเด•เตพ เด…เดฏเดฏเตเด•เตเด•เดพเตป เด’เดฐเต เดซเต‹เตบ เดจเดฎเตเดชเตผ เดจเตฝเด•เดพเตป เดจเดฟเด™เตเด™เดณเต‹เดŸเต เด†เดตเดถเตเดฏเดชเตเดชเต†เดŸเตเด‚. เดˆ เด˜เดŸเตเดŸเดคเตเดคเดฟเตฝ เด…เดคเต เดจเตฝเด•เต‡เดฃเตเดŸเดคเดฟเดฒเตเดฒ.

เด†เดฎเดธเต‹เตบ เด•เตˆเดจเดฟเดธเดฟเดธเตเดฎเดพเดฏเตเดณเตเดณ Aviasales API เดธเด‚เดฏเต‹เดœเดจเดตเตเด‚ เดธเต†เตผเดตเตผเดฒเต†เดธเตเดธเต เดฒเดพเดณเดฟเดคเตเดฏเดตเตเด‚
เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเดฟเดจเตเดฑเต† เด“เดชเตเดชเดฑเต‡เดทเตป เดชเตเดฒเดพเตป เดตเดฟเดถเด•เดฒเดจเด‚ เดšเต†เดฏเตเดค เดถเต‡เดทเด‚, เดจเดฎเตเด•เตเด•เต เด‰เดฑเดตเดฟเดŸเด™เตเด™เตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดพเตป เดคเตเดŸเด™เตเด™เดพเด‚:

terraform.exe apply

เดˆ เด•เดฎเดพเตปเดกเต เด…เดฏเดšเตเดšเดคเดฟเดจเต เดถเต‡เดทเด‚, เด’เดฐเต เดซเต‹เตบ เดจเดฎเตเดชเตผ เดจเตฝเด•เดพเตป เดจเดฟเด™เตเด™เดณเต‹เดŸเต เดตเต€เดฃเตเดŸเตเด‚ เด†เดตเดถเตเดฏเดชเตเดชเต†เดŸเตเด‚; เดฏเดฅเดพเตผเดคเตเดฅเดคเตเดคเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เตพ เดจเดŸเดคเตเดคเตเดจเตเดจเดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เด’เดฐเต เดšเต‹เดฆเตเดฏเด‚ เดชเตเดฐเดฆเตผเดถเดฟเดชเตเดชเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ "เด…เดคเต†" เดŽเดจเตเดจเต เดกเดฏเตฝ เดšเต†เดฏเตเดฏเตเด•. เดฎเตเดดเตเดตเตป เด‡เตปเดซเตเดฐเดพเดธเตเดŸเตเดฐเด•เตเดšเดฑเตเด‚ เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เดพเดจเตเด‚ EC2 เดจเตเดฑเต† เด†เดตเดถเตเดฏเดฎเดพเดฏ เดŽเดฒเตเดฒเดพ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเดจเตเด•เดณเตเด‚ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เดพเดจเตเด‚ เดฒเดพเด‚เดก เดซเด‚เด—เตเดทเดจเตเด•เตพ เดตเดฟเดจเตเดฏเดธเดฟเด•เตเด•เดพเดจเตเด‚ เด‡เดคเต เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเด‚.

เดŸเต†เดฑเดพเดซเต‹เด‚ เด•เต‹เดกเดฟเดฒเต‚เดŸเต† เดŽเดฒเตเดฒเดพ เด‰เดฑเดตเดฟเดŸเด™เตเด™เดณเตเด‚ เดตเดฟเดœเดฏเด•เดฐเดฎเดพเดฏเดฟ เดธเตƒเดทเตเดŸเดฟเดšเตเดšเดคเดฟเดจเต เดถเต‡เดทเด‚, เดจเดฟเด™เตเด™เตพ Kinesis Analytics เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเดฑเต† เดตเดฟเดถเดฆเดพเด‚เดถเด™เตเด™เดณเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต (เดจเดฟเตผเดญเดพเด—เตเดฏเดตเดถเดพเตฝ, เด•เต‹เดกเดฟเตฝ เดจเดฟเดจเตเดจเต เด‡เดคเต เดŽเด™เตเด™เดจเต† เดจเต‡เดฐเดฟเดŸเตเดŸเต เดšเต†เดฏเตเดฏเดฃเดฎเต†เดจเตเดจเต เดžเดพเตป เด•เดฃเตเดŸเต†เดคเตเดคเดฟเดฏเดฟเดฒเตเดฒ).

เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดธเดฎเดพเดฐเด‚เดญเดฟเด•เตเด•เตเด•:

เด†เดฎเดธเต‹เตบ เด•เตˆเดจเดฟเดธเดฟเดธเตเดฎเดพเดฏเตเดณเตเดณ Aviasales API เดธเด‚เดฏเต‹เดœเดจเดตเตเด‚ เดธเต†เตผเดตเตผเดฒเต†เดธเตเดธเต เดฒเดพเดณเดฟเดคเตเดฏเดตเตเด‚
เด‡เดคเดฟเดจเตเดถเต‡เดทเด‚, เดกเตเดฐเต‹เดชเตเดชเต-เดกเต—เตบ เดฒเดฟเดธเตเดฑเตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต เดคเดฟเดฐเดžเตเดžเต†เดŸเตเดคเตเดคเต เดจเดฟเด™เตเด™เตพ เด‡เตป-เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดธเตเดŸเตเดฐเต€เด‚ เดจเดพเดฎเด‚ เดตเตเดฏเด•เตเดคเดฎเดพเดฏเดฟ เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เดฃเด‚:

เด†เดฎเดธเต‹เตบ เด•เตˆเดจเดฟเดธเดฟเดธเตเดฎเดพเดฏเตเดณเตเดณ Aviasales API เดธเด‚เดฏเต‹เดœเดจเดตเตเด‚ เดธเต†เตผเดตเตผเดฒเต†เดธเตเดธเต เดฒเดพเดณเดฟเดคเตเดฏเดตเตเด‚
เด†เดฎเดธเต‹เตบ เด•เตˆเดจเดฟเดธเดฟเดธเตเดฎเดพเดฏเตเดณเตเดณ Aviasales API เดธเด‚เดฏเต‹เดœเดจเดตเตเด‚ เดธเต†เตผเดตเตผเดฒเต†เดธเตเดธเต เดฒเดพเดณเดฟเดคเตเดฏเดตเตเด‚
เด‡เดชเตเดชเต‹เตพ เดŽเดฒเตเดฒเดพเด‚ เดชเต‹เด•เดพเตป เดคเดฏเตเดฏเดพเดฑเดพเดฃเต.

เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเดจเตเดจเต

เดจเดฟเด™เตเด™เตพ เดŽเด™เตเด™เดจเต†เดฏเดพเดฃเต เดธเดฟเดธเตเดฑเตเดฑเด‚ เดตเดฟเดจเตเดฏเดธเดฟเดšเตเดšเดคเต†เดจเตเดจเดคเต เดชเดฐเดฟเด—เดฃเดฟเด•เตเด•เดพเดคเต† เดคเดจเตเดจเต†, เดธเตเดตเดฎเต‡เดงเดฏเดพ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดŸเต†เดฑเดพเดซเต‹เด‚ เด•เต‹เดกเต เดฎเตเด–เต‡เดจ, เด…เดคเต เด’เดฐเต‡เดชเต‹เดฒเต† เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเด‚.

Kinesis Agent เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดคเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ EC2 เดตเต†เตผเดšเตเดตเตฝ เดฎเต†เดทเต€เดจเดฟเดฒเต‡เด•เตเด•เต SSH เดตเดดเดฟ เดฒเต‹เด—เดฟเตป เดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ api_caller.py เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต.

sudo ./api_caller.py TOKEN

เดจเดฟเด™เตเด™เตพ เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเต เดจเดฟเด™เตเด™เดณเตเดŸเต† เดจเดฎเตเดชเดฑเดฟเดฒเต‡เด•เตเด•เต เด’เดฐเต SMS เดฒเดญเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเดพเดฏเดฟ เด•เดพเดคเตเดคเดฟเดฐเดฟเด•เตเด•เตเด•:

เด†เดฎเดธเต‹เตบ เด•เตˆเดจเดฟเดธเดฟเดธเตเดฎเดพเดฏเตเดณเตเดณ Aviasales API เดธเด‚เดฏเต‹เดœเดจเดตเตเด‚ เดธเต†เตผเดตเตผเดฒเต†เดธเตเดธเต เดฒเดพเดณเดฟเดคเตเดฏเดตเตเด‚
SMS - เดเด•เดฆเต‡เดถเด‚ 1 เดฎเดฟเดจเดฟเดฑเตเดฑเดฟเดจเตเดณเตเดณเดฟเตฝ เดจเดฟเด™เตเด™เดณเตเดŸเต† เดซเต‹เดฃเดฟเตฝ เด’เดฐเต เดธเดจเตเดฆเต‡เดถเด‚ เดŽเดคเตเดคเตเดจเตเดจเต:

เด†เดฎเดธเต‹เตบ เด•เตˆเดจเดฟเดธเดฟเดธเตเดฎเดพเดฏเตเดณเตเดณ Aviasales API เดธเด‚เดฏเต‹เดœเดจเดตเตเด‚ เดธเต†เตผเดตเตผเดฒเต†เดธเตเดธเต เดฒเดพเดณเดฟเดคเตเดฏเดตเตเด‚
เดคเตเดŸเตผเดจเตเดจเตเดณเตเดณ เด•เต‚เดŸเตเดคเตฝ เดตเดฟเดถเดฆเดฎเดพเดฏ เดตเดฟเดถเด•เดฒเดจเดคเตเดคเดฟเดจเดพเดฏเดฟ เดฐเต‡เด–เด•เตพ DynamoDB เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเดฟเตฝ เดธเด‚เดฐเด•เตเดทเดฟเดšเตเดšเดฟเดŸเตเดŸเตเดฃเตเดŸเต‹ เดŽเดจเตเดจเดฑเดฟเดฏเดพเตป เด…เดตเดถเต‡เดทเดฟเด•เตเด•เตเดจเตเดจเต. airline_tickets เดชเดŸเตเดŸเดฟเด•เดฏเดฟเตฝ เดเด•เดฆเต‡เดถเด‚ เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดกเดพเดฑเตเดฑ เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต:

เด†เดฎเดธเต‹เตบ เด•เตˆเดจเดฟเดธเดฟเดธเตเดฎเดพเดฏเตเดณเตเดณ Aviasales API เดธเด‚เดฏเต‹เดœเดจเดตเตเด‚ เดธเต†เตผเดตเตผเดฒเต†เดธเตเดธเต เดฒเดพเดณเดฟเดคเตเดฏเดตเตเด‚

เดคเต€เดฐเตเดฎเดพเดจเด‚

เดšเต†เดฏเตเดค เดœเต‹เดฒเดฟเดฏเตเดŸเต† เดธเดฎเดฏเดคเตเดคเต, เด†เดฎเดธเต‹เตบ เด•เดฟเดจเดฟเดธเดฟเดธเต เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเด•เตเด•เดฟ เด’เดฐเต เด“เตบเดฒเตˆเตป เดกเดพเดฑเตเดฑ เดชเตเดฐเต‹เดธเดธเตเดธเดฟเด‚เด—เต เดธเดฟเดธเตเดฑเตเดฑเด‚ เดจเดฟเตผเดฎเตเดฎเดฟเดšเตเดšเต. Kinesis เดกเดพเดฑเตเดฑ เดธเตเดŸเตเดฐเต€เดฎเตเด•เตพ, SQL เด•เดฎเดพเตปเดกเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดคเดคเตเดธเดฎเดฏ เด…เดจเดฒเดฟเดฑเตเดฑเดฟเด•เตเดธเต Kinesis Analytics เดŽเดจเตเดจเดฟเดตเดฏเตเดฎเดพเดฏเดฟ เดธเด‚เดฏเต‹เดœเดฟเดšเตเดšเต Kinesis เดเดœเดจเตเดฑเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด“เดชเตเดทเดจเตเด•เดณเตเด‚ เดฎเดฑเตเดฑเต AWS เดธเต‡เดตเดจเด™เตเด™เดณเตเดฎเดพเดฏเตเดณเตเดณ Amazon Kinesis-เดจเตเดฑเต† เด‡เดŸเดชเต†เดŸเดฒเตเด‚ เดชเดฐเดฟเด—เดฃเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเดŸเต.

เดฎเตเด•เดณเดฟเดฒเตเดณเตเดณ เดธเดฟเดธเตเดฑเตเดฑเด‚ เดžเด™เตเด™เตพ เดฐเดฃเตเดŸเต เดคเดฐเดคเตเดคเดฟเตฝ เดตเดฟเดจเตเดฏเดธเดฟเดšเตเดšเต: เดตเดณเดฐเต† เดฆเตˆเตผเด˜เตเดฏเดฎเต‡เดฑเดฟเดฏ เดฎเดพเดจเตเดตเตฝ, เดŸเต†เดฑเดพเดซเต‹เด‚ เด•เต‹เดกเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดตเต‡เด—เดคเตเดคเดฟเดฒเตเดณเตเดณ เด’เดจเตเดจเต.

เดŽเดฒเตเดฒเดพ เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เดธเต‹เดดเตโ€Œเดธเต เด•เต‹เดกเตเด‚ เดฒเดญเตเดฏเดฎเดพเดฃเต เดŽเดจเตเดฑเต† GitHub เดถเต‡เด–เดฐเดคเตเดคเดฟเตฝ, เด…เดคเต เดธเตเดตเดฏเด‚ เดชเดฐเดฟเดšเดฏเดชเตเดชเต†เดŸเดพเตป เดžเดพเตป เดจเดฟเตผเดฆเตเดฆเต‡เดถเดฟเด•เตเด•เตเดจเตเดจเต.

เดฒเต‡เด–เดจเด‚ เดšเตผเดšเตเดš เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเตฝ เดŽเดจเดฟเด•เตเด•เต เดธเดจเตเดคเต‹เดทเดฎเตเดฃเตเดŸเต, เดจเดฟเด™เตเด™เดณเตเดŸเต† เด…เดญเดฟเดชเตเดฐเดพเดฏเด™เตเด™เตพเด•เตเด•เดพเดฏเดฟ เดžเดพเตป เดชเตเดฐเดคเต€เด•เตเดทเดฟเด•เตเด•เตเดจเตเดจเต. เด•เตเดฐเดฟเดฏเดพเดคเตเดฎเด•เดฎเดพเดฏ เดตเดฟเดฎเตผเดถเดจเด‚ เดžเดพเตป เดชเตเดฐเดคเต€เด•เตเดทเดฟเด•เตเด•เตเดจเตเดจเต.

เดžเดพเตป เดจเดฟเดจเตเดจเต† เดตเดฟเดœเดฏเด‚ เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเต!

เด…เดตเดฒเด‚เดฌเด‚: www.habr.com

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•