Amazon Kinesis เจ…เจคเฉ‡ เจธเจฐเจตเจฐ เจฐเจนเจฟเจค เจธเจพเจฆเจ—เฉ€ เจฆเฉ‡ เจจเจพเจฒ Aviasales API เจเจ•เฉ€เจ•เจฐเจฃ

เจนเฉ‡ เจนเจฌเจฐ!

เจ•เฉ€ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‰เฉฑเจกเจฆเฉ‡ เจนเจตเจพเจˆ เจœเจนเจพเจœเจผ เจชเจธเฉฐเจฆ เจนเจจ? เจฎเฉˆเจจเฉ‚เฉฐ เจ‡เจน เจชเจธเฉฐเจฆ เจนเฉˆ, เจชเจฐ เจธเจตเฉˆ-เจ…เจฒเฉฑเจ—-เจฅเจฒเฉฑเจ— เจนเฉ‹เจฃ เจฆเฉ‡ เจฆเฉŒเจฐเจพเจจ เจฎเฉˆเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจœเจพเจฃเฉ‡-เจชเจ›เจพเจฃเฉ‡ เจธเจฐเฉ‹เจค - Aviasales เจคเฉ‹เจ‚ เจนเจตเจพเจˆ เจŸเจฟเจ•เจŸเจพเจ‚ เจฆเฉ‡ เจกเฉ‡เจŸเจพ เจฆเจพ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจ•เจฐเจจ เจจเจพเจฒ เจตเฉ€ เจชเจฟเจ†เจฐ เจนเฉ‹ เจ—เจฟเจ†เฅค

เจ…เฉฑเจœ เจ…เจธเฉ€เจ‚ Amazon Kinesis เจฆเฉ‡ เจ•เฉฐเจฎ เจฆเจพ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจ•เจฐเจพเจ‚เจ—เฉ‡, เจฐเฉ€เจ…เจฒ-เจŸเจพเจˆเจฎ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจฆเฉ‡ เจจเจพเจฒ เจ‡เฉฑเจ• เจธเจŸเฉเจฐเฉ€เจฎเจฟเฉฐเจ— เจธเจฟเจธเจŸเจฎ เจฌเจฃเจพเจตเจพเจ‚เจ—เฉ‡, Amazon DynamoDB NoSQL เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจจเฉ‚เฉฐ เจฎเฉเฉฑเจ– เจกเจพเจŸเจพ เจธเจŸเฉ‹เจฐเฉ‡เจœ เจตเจœเฉ‹เจ‚ เจธเจฅเจพเจชเจฟเจค เจ•เจฐเจพเจ‚เจ—เฉ‡, เจ…เจคเฉ‡ เจฆเจฟเจฒเจšเจธเจช เจŸเจฟเจ•เจŸเจพเจ‚ เจฒเจˆ SMS เจธเฉ‚เจšเจจเจพเจตเจพเจ‚ เจธเฉˆเจŸ เจ…เจช เจ•เจฐเจพเจ‚เจ—เฉ‡เฅค

เจธเจพเจฐเฉ‡ เจตเฉ‡เจฐเจตเฉ‡ เจ•เฉฑเจŸ เจฆเฉ‡ เจ…เจงเฉ€เจจ เจนเจจ! เจœเจพเจฃเจพ!

Amazon Kinesis เจ…เจคเฉ‡ เจธเจฐเจตเจฐ เจฐเจนเจฟเจค เจธเจพเจฆเจ—เฉ€ เจฆเฉ‡ เจจเจพเจฒ Aviasales API เจเจ•เฉ€เจ•เจฐเจฃ

เจœเจพเจฃ เจชเจ›เจพเจฃ

เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจธเจพเจจเฉ‚เฉฐ เจคเฉฑเจ• เจชเจนเฉเฉฐเจš เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ Aviasales API. เจ‡เจธ เจคเฉฑเจ• เจชเจนเฉเฉฐเจš เจฎเฉเจซเจค เจ…เจคเฉ‡ เจชเจพเจฌเฉฐเจฆเฉ€เจ†เจ‚ เจคเฉ‹เจ‚ เจฌเจฟเจจเจพเจ‚ เจชเฉเจฐเจฆเจพเจจ เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ; เจคเฉเจนเจพเจจเฉ‚เฉฐ เจกเฉ‡เจŸเจพ เจคเฉฑเจ• เจชเจนเฉเฉฐเจš เจ•เจฐเจจ เจฒเจˆ เจ†เจชเจฃเจพ API เจŸเฉ‹เจ•เจจ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจ เจฒเจˆ "เจกเจฟเจตเฉˆเจฒเจชเจฐ" เจญเจพเจ— เจตเจฟเฉฑเจš เจฐเจœเจฟเจธเจŸเจฐ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆเฅค

เจ‡เจธ เจฒเฉ‡เจ– เจฆเจพ เจฎเฉเฉฑเจ– เจ‰เจฆเฉ‡เจธเจผ AWS เจตเจฟเฉฑเจš เจœเจพเจฃเจ•เจพเจฐเฉ€ เจธเจŸเฉเจฐเฉ€เจฎเจฟเฉฐเจ— เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจฌเจพเจฐเฉ‡ เจ‡เฉฑเจ• เจ†เจฎ เจธเจฎเจ เจฆเฉ‡เจฃเจพ เจนเฉˆ; เจ…เจธเฉ€เจ‚ เจ‡เจธ เจ—เฉฑเจฒ เจจเฉ‚เฉฐ เจงเจฟเจ†เจจ เจตเจฟเฉฑเจš เจฐเฉฑเจ–เจฆเฉ‡ เจนเจพเจ‚ เจ•เจฟ เจตเจฐเจคเฉ‡ เจ—เจ API เจฆเฉเจ†เจฐเจพ เจตเจพเจชเจธ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจกเฉ‡เจŸเจพ เจธเจ–เจคเฉ€ เจจเจพเจฒ เจ…เฉฑเจช-เจŸเฉ‚-เจกเฉ‡เจŸ เจจเจนเฉ€เจ‚ เจนเฉˆ เจ…เจคเฉ‡ เจ•เฉˆเจธเจผ เจคเฉ‹เจ‚ เจชเฉเจฐเจธเจพเจฐเจฟเจค เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ, เจœเฉ‹ เจ•เจฟ เจชเจฟเจ›เจฒเฉ‡ 48 เจ˜เฉฐเจŸเจฟเจ†เจ‚ เจฒเจˆ Aviasales.ru เจ…เจคเฉ‡ Jetradar.com เจธเจพเจˆเจŸเจพเจ‚ เจฆเฉ‡ เจ‰เจชเจญเฉ‹เจ—เจคเจพเจตเจพเจ‚ เจฆเฉเจ†เจฐเจพ เจ–เฉ‹เจœเจพเจ‚ เจฆเฉ‡ เจ…เจงเจพเจฐ เจคเฉ‡ เจฌเจฃเจพเจˆ เจ—เจˆ เจนเฉˆเฅค

เจ•เจพเจ‡เจจเฉ‡เจธเจฟเจธ-เจเจœเฉฐเจŸ, เจชเฉเจฐเฉ‹เจกเจฟเจŠเจธเจฟเฉฐเจ— เจฎเจธเจผเฉ€เจจ 'เจคเฉ‡ เจธเจฅเจพเจชเจฟเจค, API เจฆเฉเจ†เจฐเจพ เจชเฉเจฐเจพเจชเจค เจ•เฉ€เจคเจพ เจ—เจฟเจ†, Kinesis เจกเฉ‡เจŸเจพ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจฆเฉเจ†เจฐเจพ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ‡ เจธเจŸเฉเจฐเฉ€เจฎ เจตเจฟเฉฑเจš เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจ†เจชเจฃเฉ‡ เจ†เจช เจชเจพเจฐเจธ เจ…เจคเฉ‡ เจชเฉเจฐเจธเจพเจฐเจฟเจค เจ•เจฐเฉ‡เจ—เจพเฅค เจ‡เจธ เจธเจŸเฉเจฐเฉ€เจฎ เจฆเจพ เจ•เฉฑเจšเจพ เจธเฉฐเจธเจ•เจฐเจฃ เจธเจŸเฉ‹เจฐ 'เจคเฉ‡ เจธเจฟเฉฑเจงเจพ เจฒเจฟเจ–เจฟเจ† เจœเจพเจตเฉ‡เจ—เจพเฅค DynamoDB เจตเจฟเฉฑเจš เจคเฉˆเจจเจพเจค เจ•เฉฑเจšเจพ เจกเฉ‡เจŸเจพ เจธเจŸเฉ‹เจฐเฉ‡เจœ BI เจŸเฉ‚เจฒเจธ, เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ AWS Quick Sight เจฆเฉเจ†เจฐเจพ เจกเฉ‚เฉฐเจ˜เฉ‡ เจŸเจฟเจ•เจŸ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจฆเฉ€ เจ†เจ—เจฟเจ† เจฆเฉ‡เจตเฉ‡เจ—เฉ€เฅค

เจ…เจธเฉ€เจ‚ เจชเฉ‚เจฐเฉ‡ เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจขเจพเจ‚เจšเฉ‡ เจจเฉ‚เฉฐ เจคเฉˆเจจเจพเจค เจ•เจฐเจจ เจฒเจˆ เจฆเฉ‹ เจตเจฟเจ•เจฒเจชเจพเจ‚ 'เจคเฉ‡ เจตเจฟเจšเจพเจฐ เจ•เจฐเจพเจ‚เจ—เฉ‡:

  • เจฎเฉˆเจจเฉเจ…เจฒ - AWS เจชเฉเจฐเจฌเฉฐเจงเจจ เจ•เฉฐเจธเฉ‹เจฒ เจฆเฉเจ†เจฐเจพ;
  • เจŸเฉˆเจฐเจพเจซเจพเจฐเจฎ เจ•เฉ‹เจก เจคเฉ‹เจ‚ เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจขเจพเจ‚เจšเจพ เจ†เจฒเจธเฉ€ เจ†เจŸเฉ‹เจฎเฉ‡เจŸเจฐเจพเจ‚ เจฒเจˆ เจนเฉˆ;

เจตเจฟเจ•เจธเจค เจธเจฟเจธเจŸเจฎ เจฆเจพ เจ†เจฐเจ•เฉ€เจŸเฉˆเจ•เจšเจฐ

Amazon Kinesis เจ…เจคเฉ‡ เจธเจฐเจตเจฐ เจฐเจนเจฟเจค เจธเจพเจฆเจ—เฉ€ เจฆเฉ‡ เจจเจพเจฒ Aviasales API เจเจ•เฉ€เจ•เจฐเจฃ
เจตเจฐเจคเฉ‡ เจ—เจ เจนเจฟเฉฑเจธเฉ‡:

  • Aviasales API - เจ‡เจธ API เจฆเฉเจ†เจฐเจพ เจตเจพเจชเจธ เจ•เฉ€เจคเฉ‡ เจ—เจ เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจ…เจ—เจฒเฉ‡ เจธเจพเจฐเฉ‡ เจ•เฉฐเจฎ เจฒเจˆ เจตเจฐเจคเจฟเจ† เจœเจพเจตเฉ‡เจ—เจพ;
  • EC2 เจจเจฟเจฐเจฎเจพเจคเจพ เจ‰เจฆเจพเจนเจฐเจฃ โ€” เจ•เจฒเจพเจ‰เจก เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจจเจฟเจฏเจฎเจค เจตเจฐเจšเฉเจ…เจฒ เจฎเจธเจผเฉ€เจจ เจœเจฟเจธ เจ‰เฉฑเจคเฉ‡ เจ‡เจจเจชเฉเจŸ เจกเฉ‡เจŸเจพ เจธเจŸเฉเจฐเฉ€เจฎ เจคเจฟเจ†เจฐ เจ•เฉ€เจคเจพ เจœเจพเจตเฉ‡เจ—เจพ:
    • เจ•เฉ€เจจเฉ‡เจธเจฟเจธ เจเจœเฉฐเจŸ เจฎเจธเจผเฉ€เจจ 'เจคเฉ‡ เจธเจฅเจพเจจเจ• เจคเฉŒเจฐ 'เจคเฉ‡ เจธเจฅเจพเจชเจค เจ•เฉ€เจคเฉ€ เจœเจพเจตเจพ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจนเฉˆ เจœเฉ‹ เจ•เจฟเจจเฉ‡เจธเจฟเจธ (เจ•เจฟเจจเฉ‡เจธเจฟเจธ เจกเฉ‡เจŸเจพ เจธเจŸเฉเจฐเฉ€เจฎเจœเจผ เจœเจพเจ‚ เจ•เจพเจ‡เจจเฉ‡เจธเจฟเจธ เจซเจพเจ‡เจฐเจนเฉ‹เจœเจผ) เจจเฉ‚เฉฐ เจกเจพเจŸเจพ เจ‡เจ•เฉฑเจ เจพ เจ•เจฐเจจ เจ…เจคเฉ‡ เจญเฉ‡เจœเจฃ เจฆเจพ เจ†เจธเจพเจจ เจคเจฐเฉ€เจ•เจพ เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจฆเฉ€ เจนเฉˆเฅค เจเจœเฉฐเจŸ เจฒเจ—เจพเจคเจพเจฐ เจจเจฟเจฐเจงเจพเจฐเจฟเจค เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€เจ†เจ‚ เจตเจฟเฉฑเจš เจซเจพเจˆเจฒเจพเจ‚ เจฆเฉ‡ เจ‡เฉฑเจ• เจธเจฎเฉ‚เจน เจฆเฉ€ เจจเจฟเจ—เจฐเจพเจจเฉ€ เจ•เจฐเจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ Kinesis เจจเฉ‚เฉฐ เจจเจตเจพเจ‚ เจกเฉ‡เจŸเจพ เจญเฉ‡เจœเจฆเจพ เจนเฉˆ;
    • API เจ•เจพเจฒเจฐ เจธเจ•เฉเจฐเจฟเจชเจŸ โ€” เจ‡เฉฑเจ• เจชเจพเจˆเจฅเจจ เจธเจ•เฉเจฐเจฟเจชเจŸ เจœเฉ‹ API เจจเฉ‚เฉฐ เจฌเฉ‡เจจเจคเฉ€เจ†เจ‚ เจ•เจฐเจฆเฉ€ เจนเฉˆ เจ…เจคเฉ‡ เจœเจตเจพเจฌ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจซเฉ‹เจฒเจกเจฐ เจตเจฟเฉฑเจš เจฐเฉฑเจ–เจฆเฉ€ เจนเฉˆ เจœเจฟเจธเจฆเฉ€ เจ•เจฟเจจเฉ‡เจธเจฟเจธ เจเจœเฉฐเจŸ เจฆเฉเจ†เจฐเจพ เจจเจฟเจ—เจฐเจพเจจเฉ€ เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ;
  • Kinesis เจกเจพเจŸเจพ เจธเจŸเฉเจฐเฉ€เจฎเจœเจผ - เจตเจฟเจ†เจชเจ• เจธเจ•เฉ‡เจฒเจฟเฉฐเจ— เจธเจฎเจฐเฉฑเจฅเจพเจตเจพเจ‚ เจตเจพเจฒเฉ€ เจฐเฉ€เจ…เจฒ-เจŸเจพเจˆเจฎ เจกเจพเจŸเจพ เจธเจŸเฉเจฐเฉ€เจฎเจฟเฉฐเจ— เจธเฉ‡เจตเจพ;
  • Kinesis เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจ‡เฉฑเจ• เจธเจฐเจตเจฐ เจฐเจนเจฟเจค เจธเฉ‡เจตเจพ เจนเฉˆ เจœเฉ‹ เจฐเฉ€เจ…เจฒ เจŸเจพเจˆเจฎ เจตเจฟเฉฑเจš เจธเจŸเฉเจฐเฉ€เจฎเจฟเฉฐเจ— เจกเฉ‡เจŸเจพ เจฆเฉ‡ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจจเฉ‚เฉฐ เจธเจฐเจฒ เจฌเจฃเจพเจ‰เจ‚เจฆเฉ€ เจนเฉˆเฅค เจเจฎเจพเจœเจผเจพเจจ เจ•เจพเจ‡เจจเฉ‡เจธเจฟเจธ เจกเฉ‡เจŸเจพ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจธเจฐเฉ‹เจคเจพเจ‚ เจจเฉ‚เฉฐ เจ•เฉŒเจ‚เจซเจฟเจ—เจฐ เจ•เจฐเจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจ†เจ‰เจฃ เจตเจพเจฒเฉ‡ เจกเฉ‡เจŸเจพ เจฆเฉ€ เจ•เจฟเจธเฉ‡ เจตเฉ€ เจฎเจพเจคเจฐเจพ เจจเฉ‚เฉฐ เจธเฉฐเจญเจพเจฒเจฃ เจฒเจˆ เจ†เจชเจฃเฉ‡ เจ†เจช เจธเจ•เฉ‡เจฒ เจ•เจฐเจฆเจพ เจนเฉˆ;
  • AWS Lambda โ€” เจ‡เฉฑเจ• เจธเฉ‡เจตเจพ เจœเฉ‹ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจธเจฐเจตเจฐ เจฆเจพ เจฌเฉˆเจ•เจ…เฉฑเจช เจฒเจ เจœเจพเจ‚ เจธเฉˆเฉฑเจŸเจ…เฉฑเจช เจ•เฉ€เจคเฉ‡ เจฌเจฟเจจเจพเจ‚ เจ•เฉ‹เจก เจšเจฒเจพเจ‰เจฃ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเจฟเฉฐเจฆเฉ€ เจนเฉˆเฅค เจนเจฐเฉ‡เจ• เจ•เจพเจฒ เจฒเจˆ เจธเจพเจฐเฉ€ เจ•เฉฐเจชเจฟเจŠเจŸเจฟเฉฐเจ— เจชเจพเจตเจฐ เจ†เจŸเฉ‹เจฎเฉˆเจŸเจฟเจ• เจนเฉ€ เจธเจ•เฉ‡เจฒ เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ;
  • เจเจฎเจพเจœเจผเจพเจจ เจกเจพเจ‡เจจเจพเจฎเฉ‹เจกเฉ€เจฌเฉ€ - เจฎเฉเฉฑเจ–-เจฎเฉเฉฑเจฒ เจฆเฉ‡ เจœเฉ‹เฉœเจฟเจ†เจ‚ เจ…เจคเฉ‡ เจฆเจธเจคเจพเจตเฉ‡เจœเจผเจพเจ‚ เจฆเจพ เจ‡เฉฑเจ• เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจœเฉ‹ เจ•เจฟเจธเฉ‡ เจตเฉ€ เจชเฉˆเจฎเจพเจจเฉ‡ 'เจคเฉ‡ เจšเฉฑเจฒเจฃ เจตเฉ‡เจฒเฉ‡ 10 เจฎเจฟเจฒเฉ€เจธเจ•เจฟเฉฐเจŸ เจคเฉ‹เจ‚ เจ˜เฉฑเจŸ เจฆเฉ€ เจฒเฉ‡เจŸเฉˆเจ‚เจธเฉ€ เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจฆเจพ เจนเฉˆเฅค DynamoDB เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจธเจฎเฉ‡เจ‚, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ•เจฟเจธเฉ‡ เจธเจฐเจตเจฐ เจฆเจพ เจชเฉเจฐเจฌเฉฐเจง, เจชเฉˆเจš เจœเจพเจ‚ เจชเฉเจฐเจฌเฉฐเจงเจจ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจจเจนเฉ€เจ‚ เจนเฉˆเฅค DynamoDB เจ‰เจชเจฒเจฌเจง เจธเจฐเฉ‹เจคเจพเจ‚ เจฆเฉ€ เจฎเจพเจคเจฐเจพ เจจเฉ‚เฉฐ เจตเจฟเจตเจธเจฅเจฟเจค เจ•เจฐเจจ เจ…เจคเฉ‡ เจ‰เฉฑเจš เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจจเฉ‚เฉฐ เจฌเจฐเจ•เจฐเจพเจฐ เจฐเฉฑเจ–เจฃ เจฒเจˆ เจ†เจชเจฃเฉ‡ เจ†เจช เจŸเฉ‡เจฌเจฒ เจจเฉ‚เฉฐ เจธเจ•เฉ‡เจฒ เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจ•เฉ‹เจˆ เจธเจฟเจธเจŸเจฎ เจชเฉเจฐเจธเจผเจพเจธเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจจเจนเฉ€เจ‚ เจนเฉˆ;
  • เจเจฎเจพเจœเจผเจพเจจ SNS - เจชเฉเจฐเจ•เจพเจธเจผเจ•-เจธเจฌเจธเจ•เฉเจฐเจพเจˆเจฌเจฐ (Pub/Sub) เจฎเจพเจกเจฒ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ เจธเฉเจจเฉ‡เจนเฉ‡ เจญเฉ‡เจœเจฃ เจฒเจˆ เจ‡เฉฑเจ• เจชเฉ‚เจฐเฉ€ เจคเจฐเฉเจนเจพเจ‚ เจชเฉเจฐเจฌเฉฐเจงเจฟเจค เจธเฉ‡เจตเจพ, เจœเจฟเจธ เจจเจพเจฒ เจคเฉเจธเฉ€เจ‚ เจฎเจพเจˆเจ•เฉเจฐเฉ‹เจธเฉ‡เจตเจพเจตเจพเจ‚, เจตเฉฐเจกเฉ€เจ†เจ‚ เจชเฉเจฐเจฃเจพเจฒเฉ€เจ†เจ‚ เจ…เจคเฉ‡ เจธเจฐเจตเจฐ เจฐเจนเจฟเจค เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจจเฉ‚เฉฐ เจ…เจฒเฉฑเจ— เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค SNS เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจฎเฉ‹เจฌเจพเจˆเจฒ เจชเฉเจธเจผ เจธเฉ‚เจšเจจเจพเจตเจพเจ‚, 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 เจ…เจคเฉ‡ lambda เจซเฉฐเจ•เจธเจผเจจ เจธเจพเจกเฉ‡ เจฒเจˆ เจฎเฉเจซเจค เจนเฉ‹เจฃเจ—เฉ‡ เจœเฉ‡เจ•เจฐ เจ…เจธเฉ€เจ‚ เจ†เจชเจฃเฉ€เจ†เจ‚ เจฎเจนเฉ€เจจเจพเจตเจพเจฐ เจฎเฉเจซเจค เจธเฉ€เจฎเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจชเฉ‚เจฐเจพ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚เฅค เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, DynamoDB เจฒเจˆ: 25 GB เจธเจŸเฉ‹เจฐเฉ‡เจœ, 25 WCU/RCU เจ…เจคเฉ‡ 100 เจฎเจฟเจฒเฉ€เจ…เจจ เจธเจตเจพเจฒเฅค เจ…เจคเฉ‡ เจชเฉเจฐเจคเฉ€ เจฎเจนเฉ€เจจเจพ เจ‡เฉฑเจ• เจฎเจฟเจฒเฉ€เจ…เจจ เจฒเจพเจ‚เจฌเจกเจพ เจซเฉฐเจ•เจธเจผเจจ เจ•เจพเจฒเจพเจ‚เฅค

เจฎเฉˆเจจเฉเจ…เจฒ เจธเจฟเจธเจŸเจฎ เจคเฉˆเจจเจพเจคเฉ€

เจ•เจพเจ‡เจจเฉ‡เจธเจฟเจธ เจกเจพเจŸเจพ เจธเจŸเฉเจฐเฉ€เจฎเจœเจผ เจธเฉˆเจŸ เจ…เจช เจ•เจฐเจจเจพ

เจšเจฒเฉ‹ เจ•เฉ€เจจเฉ‡เจธเจฟเจธ เจกเจพเจŸเจพ เจธเจŸเฉเจฐเฉ€เจฎเจœเจผ เจธเฉ‡เจตเจพ 'เจคเฉ‡ เจšเฉฑเจฒเฉ€เจ เจ…เจคเฉ‡ เจฆเฉ‹ เจจเจตเฉ€เจ†เจ‚ เจธเจŸเฉเจฐเฉ€เจฎเจพเจ‚ เจฌเจฃเจพเจˆเจ, เจนเจฐเฉ‡เจ• เจฒเจˆ เจ‡เฉฑเจ• เจธเจผเจพเจฐเจกเฅค

เจ‡เฉฑเจ• เจธเจผเจพเจฐเจก เจ•เฉ€ เจนเฉˆ?
เจ‡เฉฑเจ• เจธเจผเจพเจฐเจก เจ‡เฉฑเจ• เจเจฎเจพเจœเจผเจพเจจ เจ•เจพเจ‡เจจเฉ‡เจธเจฟเจธ เจธเจŸเฉเจฐเฉ€เจฎ เจฆเฉ€ เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจกเฉ‡เจŸเจพ เจŸเฉเจฐเจพเจ‚เจธเจซเจฐ เจฏเฉ‚เจจเจฟเจŸ เจนเฉˆเฅค เจ‡เฉฑเจ• เจ–เฉฐเจก 1 MB/s เจฆเฉ€ เจ—เจคเฉ€ เจจเจพเจฒ เจ‡เจจเจชเฉเจŸ เจกเจพเจŸเจพ เจŸเฉเจฐเจพเจ‚เจธเจซเจฐ เจ…เจคเฉ‡ 2 MB/s เจฆเฉ€ เจ—เจคเฉ€ เจจเจพเจฒ เจ†เจ‰เจŸเจชเฉเฉฑเจŸ เจกเจพเจŸเจพ เจŸเฉเจฐเจพเจ‚เจธเจซเจฐ เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจ‡เฉฑเจ• เจ–เฉฐเจก เจชเฉเจฐเจคเฉ€ เจธเจ•เจฟเฉฐเจŸ 1000 PUT เจเจ‚เจŸเจฐเฉ€เจ†เจ‚ เจฆเจพ เจธเจฎเจฐเจฅเจจ เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจกเจพเจŸเจพ เจธเจŸเฉเจฐเฉ€เจฎ เจฌเจฃเจพเจ‰เจ‚เจฆเฉ‡ เจธเจฎเฉ‡เจ‚, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ‡ เจ–เฉฐเจกเจพเจ‚ เจฆเฉ€ เจ—เจฟเจฃเจคเฉ€ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆเฅค เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจคเฉเจธเฉ€เจ‚ เจฆเฉ‹ เจนเจฟเฉฑเจธเจฟเจ†เจ‚ เจฆเฉ‡ เจจเจพเจฒ เจ‡เฉฑเจ• เจกเจพเจŸเจพ เจธเจŸเฉเจฐเฉ€เจฎ เจฌเจฃเจพ เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค เจ‡เจน เจกเจพเจŸเจพ เจธเจŸเฉเจฐเฉ€เจฎ 2 MB/s 'เจคเฉ‡ เจ‡เจจเจชเฉเจŸ เจกเจพเจŸเจพ เจŸเฉเจฐเจพเจ‚เจธเจซเจฐ เจ…เจคเฉ‡ 4 MB/s 'เจคเฉ‡ เจ†เจ‰เจŸเจชเฉเฉฑเจŸ เจกเจพเจŸเจพ เจŸเฉเจฐเจพเจ‚เจธเจซเจฐ เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเฉ‡เจ—เจพ, 2000 PUT เจฐเจฟเจ•เจพเจฐเจก เจชเฉเจฐเจคเฉ€ เจธเจ•เจฟเฉฐเจŸ เจคเฉฑเจ• เจฆเจพ เจธเจฎเจฐเจฅเจจ เจ•เจฐเฉ‡เจ—เจพเฅค

เจคเฉเจนเจพเจกเฉ€ เจธเจŸเฉเจฐเฉ€เจฎ เจตเจฟเฉฑเจš เจœเจฟเฉฐเจจเฉ‡ เจœเจผเจฟเจ†เจฆเจพ เจธเจผเจพเจฐเจกเจธ, เจ‡เจธเจฆเจพ เจฅเฉเจฐเฉ‹เจชเฉเฉฑเจŸ เจ“เจจเจพ เจนเฉ€ เจตเฉฑเจกเจพ เจนเฉˆเฅค เจธเจฟเจงเจพเจ‚เจค เจตเจฟเฉฑเจš, เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจตเจนเจพเจ… เจจเฉ‚เฉฐ เจธเจ•เฉ‡เจฒ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ - เจธเจผเจพเจฐเจกเจœเจผ เจœเฉ‹เฉœ เจ•เฉ‡เฅค เจชเจฐ เจคเฉเจนเจพเจกเฉ‡ เจ•เฉ‹เจฒ เจœเจฟเฉฐเจจเฉ‡ เจœเจผเจฟเจ†เจฆเจพ เจธเจผเจพเจฐเจก เจนเฉ‹เจฃเจ—เฉ‡, เจ•เฉ€เจฎเจค เจ“เจจเฉ€ เจนเฉ€ เจœเจผเจฟเจ†เจฆเจพ เจนเฉ‹เจตเฉ‡เจ—เฉ€เฅค เจนเจฐเฉ‡เจ• เจธเจผเจพเจฐเจก เจฆเฉ€ เจ•เฉ€เจฎเจค 1,5 เจธเฉˆเจ‚เจŸ เจชเฉเจฐเจคเฉ€ เจ˜เฉฐเจŸเจพ เจนเฉˆ เจ…เจคเฉ‡ เจนเจฐเฉ‡เจ• เจฎเจฟเจฒเฉ€เจ…เจจ PUT เจชเฉ‡เจฒเฉ‹เจก เจฏเฉ‚เจจเจฟเจŸเจพเจ‚ เจฒเจˆ เจ‡เฉฑเจ• เจตเจพเจงเฉ‚ 1.4 เจธเฉˆเจ‚เจŸ เจนเฉˆเฅค

เจ†เจ“ เจจเจพเจฎ เจจเจพเจฒ เจ‡เฉฑเจ• เจจเจตเฉ€เจ‚ เจงเจพเจฐเจพ เจฌเจฃเจพเจˆเจ เจเจ…เจฐเจฒเจพเจˆเจจ_เจŸเจฟเจ•เจŸเจพเจ‚, 1 เจธเจผเจพเจฐเจก เจ‰เจธ เจฒเจˆ เจ•เจพเจซเฉ€ เจนเฉ‹เจตเฉ‡เจ—เจพ:

Amazon Kinesis เจ…เจคเฉ‡ เจธเจฐเจตเจฐ เจฐเจนเจฟเจค เจธเจพเจฆเจ—เฉ€ เจฆเฉ‡ เจจเจพเจฒ Aviasales API เจเจ•เฉ€เจ•เจฐเจฃ
เจนเฉเจฃ เจจเจพเจฎ เจฆเฉ‡ เจจเจพเจฒ เจ‡เฉฑเจ• เจนเฉ‹เจฐ เจฅเจฐเจฟเฉฑเจก เจฌเจฃเจพเจ‰เจ‚เจฆเฉ‡ เจนเจพเจ‚ เจตเจฟเจธเจผเฉ‡เจธเจผ_เจธเจŸเฉเจฐเฉ€เจฎ:

Amazon Kinesis เจ…เจคเฉ‡ เจธเจฐเจตเจฐ เจฐเจนเจฟเจค เจธเจพเจฆเจ—เฉ€ เจฆเฉ‡ เจจเจพเจฒ Aviasales API เจเจ•เฉ€เจ•เจฐเจฃ

เจจเจฟเจฐเจฎเจพเจคเจพ เจธเฉˆเฉฑเจŸเจ…เฉฑเจช

เจ•เจฟเจธเฉ‡ เจ•เฉฐเจฎ เจฆเจพ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจ•เจฐเจจ เจฒเจˆ, เจกเฉ‡เจŸเจพ เจ‰เจคเจชเจพเจฆเจ• เจตเจœเฉ‹เจ‚ เจ‡เฉฑเจ• เจจเจฟเจฏเจฎเจค EC2 เจ‰เจฆเจพเจนเจฐเจฃ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจเจพ เจ•เจพเจซเจผเฉ€ เจนเฉˆเฅค เจ‡เจน เจ‡เฉฑเจ• เจธเจผเจ•เจคเฉ€เจธเจผเจพเจฒเฉ€, เจฎเจนเจฟเฉฐเจ—เฉ€ เจตเจฐเจšเฉเจ…เจฒ เจฎเจธเจผเฉ€เจจ เจจเจนเฉ€เจ‚ เจนเฉ‹เจฃเฉ€ เจšเจพเจนเฉ€เจฆเฉ€; เจ‡เฉฑเจ• เจธเจชเจพเจŸ t2.micro เจฌเจฟเจฒเจ•เฉเจฒ เจ เฉ€เจ• เจ•เจฐเฉ‡เจ—เจพเฅค

เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจจเฉ‹เจŸ: เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจšเจฟเฉฑเจคเจฐ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจเฉ€ เจšเจพเจนเฉ€เจฆเฉ€ เจนเฉˆ - Amazon Linux AMI 2018.03.0, เจ‡เจธ เจตเจฟเฉฑเจš เจ•เจพเจ‡เจจเฉ‡เจธเจฟเจธ เจเจœเฉฐเจŸ เจจเฉ‚เฉฐ เจคเฉ‡เจœเจผเฉ€ เจจเจพเจฒ เจฒเจพเจ‚เจš เจ•เจฐเจจ เจฒเจˆ เจ˜เฉฑเจŸ เจธเฉˆเจŸเจฟเฉฐเจ—เจพเจ‚ เจนเจจเฅค

EC2 เจธเฉ‡เจตเจพ 'เจคเฉ‡ เจœเจพเจ“, เจ‡เฉฑเจ• เจจเจตเฉ€เจ‚ เจตเจฐเจšเฉเจ…เจฒ เจฎเจธเจผเฉ€เจจ เจฌเจฃเจพเจ“, เจŸเจพเจˆเจช t2.micro เจจเจพเจฒ เจฒเฉ‹เฉœเฉ€เจฆเจพ AMI เจšเฉเจฃเฉ‹, เจœเฉ‹ เจ•เจฟ เจฎเฉเจซเจค เจŸเฉ€เจ…เจฐ เจตเจฟเฉฑเจš เจธเจผเจพเจฎเจฒ เจนเฉˆ:

Amazon Kinesis เจ…เจคเฉ‡ เจธเจฐเจตเจฐ เจฐเจนเจฟเจค เจธเจพเจฆเจ—เฉ€ เจฆเฉ‡ เจจเจพเจฒ Aviasales API เจเจ•เฉ€เจ•เจฐเจฃ
เจจเจตเฉ€เจ‚ เจฌเจฃเฉ€ เจตเจฐเจšเฉเจ…เจฒ เจฎเจธเจผเฉ€เจจ เจจเฉ‚เฉฐ เจ•เจพเจ‡เจจเฉ‡เจธเจฟเจธ เจธเฉ‡เจตเจพ เจจเจพเจฒ เจ‡เฉฐเจŸเจฐเฉˆเจ•เจŸ เจ•เจฐเจจ เจฆเฉ‡ เจฏเฉ‹เจ— เจนเฉ‹เจฃ เจฒเจˆ, เจ‡เจธ เจจเฉ‚เฉฐ เจ…เจœเจฟเจนเจพ เจ•เจฐเจจ เจฆเฉ‡ เจ…เจงเจฟเจ•เจพเจฐ เจฆเจฟเฉฑเจคเฉ‡ เจœเจพเจฃเฉ‡ เจšเจพเจนเฉ€เจฆเฉ‡ เจนเจจเฅค เจ…เจœเจฟเจนเจพ เจ•เจฐเจจ เจฆเจพ เจธเจญ เจคเฉ‹เจ‚ เจตเจงเฉ€เจ† เจคเจฐเฉ€เจ•เจพ เจนเฉˆ เจ‡เฉฑเจ• IAM เจฐเฉ‹เจฒ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เจฐเจจเจพเฅค เจ‡เจธ เจฒเจˆ, เจธเจŸเฉˆเจช 3 'เจคเฉ‡: เจ‡เฉฐเจธเจŸเฉˆเจ‚เจธ เจกเจฟเจŸเฉ‡เจฒ เจธเจ•เฉเจฐเฉ€เจจ เจจเฉ‚เฉฐ เจ•เฉŒเจ‚เจซเจฟเจ—เจฐ เจ•เจฐเฉ‹, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจšเฉเจฃเจจเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ เจจเจตเฉ€เจ‚ IAM เจฐเฉ‹เจฒ เจฌเจฃเจพเจ“:

EC2 เจฒเจˆ เจ‡เฉฑเจ• IAM เจฐเฉ‹เจฒ เจฌเจฃเจพเจ‰เจฃเจพ
Amazon Kinesis เจ…เจคเฉ‡ เจธเจฐเจตเจฐ เจฐเจนเจฟเจค เจธเจพเจฆเจ—เฉ€ เจฆเฉ‡ เจจเจพเจฒ Aviasales API เจเจ•เฉ€เจ•เจฐเจฃ
เจ–เฉเฉฑเจฒเจฃ เจตเจพเจฒเฉ€ เจตเจฟเฉฐเจกเฉ‹ เจตเจฟเฉฑเจš, เจšเฉเจฃเฉ‹ เจ•เจฟ เจ…เจธเฉ€เจ‚ EC2 เจฒเจˆ เจ‡เฉฑเจ• เจจเจตเฉ€เจ‚ เจญเฉ‚เจฎเจฟเจ•เจพ เจฌเจฃเจพ เจฐเจนเฉ‡ เจนเจพเจ‚ เจ…เจคเฉ‡ เจ…เจจเฉเจฎเจคเฉ€เจ†เจ‚ เจญเจพเจ— เจตเจฟเฉฑเจš เจœเจพเจ“:

Amazon Kinesis เจ…เจคเฉ‡ เจธเจฐเจตเจฐ เจฐเจนเจฟเจค เจธเจพเจฆเจ—เฉ€ เจฆเฉ‡ เจจเจพเจฒ Aviasales API เจเจ•เฉ€เจ•เจฐเจฃ
เจธเจฟเจ–เจฒเจพเจˆ เจฆเฉ€ เจ‰เจฆเจพเจนเจฐเจจ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ, เจธเจพเจจเฉ‚เฉฐ เจธเจฐเฉ‹เจค เจ…เจงเจฟเจ•เจพเจฐเจพเจ‚ เจฆเฉ‡ เจฆเจพเจฃเฉ‡เจฆเจพเจฐ เจธเฉฐเจฐเจšเจจเจพ เจฆเฉ€เจ†เจ‚ เจธเจพเจฐเฉ€เจ†เจ‚ เจชเฉ‡เจšเฉ€เจฆเจ—เฉ€เจ†เจ‚ เจตเจฟเฉฑเจš เจœเจพเจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจจเจนเฉ€เจ‚ เจนเฉˆ, เจ‡เจธเจฒเจˆ เจ…เจธเฉ€เจ‚ เจเจฎเจพเจœเจผเจพเจจ เจฆเฉเจ†เจฐเจพ เจชเจนเจฟเจฒเจพเจ‚ เจคเฉ‹เจ‚ เจธเฉฐเจฐเจšเจฟเจค เจ•เฉ€เจคเฉ€เจ†เจ‚ เจจเฉ€เจคเฉ€เจ†เจ‚ เจฆเฉ€ เจšเฉ‹เจฃ เจ•เจฐเจพเจ‚เจ—เฉ‡: AmazonKinesisFullAccess เจ…เจคเฉ‡ CloudWatchFullAccessเฅค

เจ†เจ“ เจ‡เจธ เจญเฉ‚เจฎเจฟเจ•เจพ เจฒเจˆ เจ•เฉเจ เจ…เจฐเจฅเจชเฉ‚เจฐเจจ เจจเจพเจฎ เจฆเฉ‡เจˆเจ, เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ: EC2-KinesisStreams-FullAccess. เจจเจคเฉ€เจœเจพ เจ‰เจนเฉ€ เจนเฉ‹เจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ เจœเฉ‹ เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเฉ€ เจคเจธเจตเฉ€เจฐ เจตเจฟเฉฑเจš เจฆเจฟเจ–เจพเจ‡เจ† เจ—เจฟเจ† เจนเฉˆ:

Amazon Kinesis เจ…เจคเฉ‡ เจธเจฐเจตเจฐ เจฐเจนเจฟเจค เจธเจพเจฆเจ—เฉ€ เจฆเฉ‡ เจจเจพเจฒ Aviasales API เจเจ•เฉ€เจ•เจฐเจฃ
เจ‡เจธ เจจเจตเฉ€เจ‚ เจญเฉ‚เจฎเจฟเจ•เจพ เจจเฉ‚เฉฐ เจฌเจฃเจพเจ‰เจฃ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจ‡เจธ เจจเฉ‚เฉฐ เจฌเจฃเจพเจˆ เจ—เจˆ เจตเจฐเจšเฉเจ…เจฒ เจฎเจธเจผเฉ€เจจ เจ‰เจฆเจพเจนเจฐเจฃ เจจเจพเจฒ เจœเฉ‹เฉœเจจเจพ เจจเจพ เจญเฉเฉฑเจฒเฉ‹:

Amazon Kinesis เจ…เจคเฉ‡ เจธเจฐเจตเจฐ เจฐเจนเจฟเจค เจธเจพเจฆเจ—เฉ€ เจฆเฉ‡ เจจเจพเจฒ Aviasales API เจเจ•เฉ€เจ•เจฐเจฃ
เจ…เจธเฉ€เจ‚ เจ‡เจธ เจธเจ•เฉเจฐเฉ€เจจ 'เจคเฉ‡ เจนเฉ‹เจฐ เจ•เฉเจ เจจเจนเฉ€เจ‚ เจฌเจฆเจฒเจฆเฉ‡ เจ…เจคเฉ‡ เจ…เจ—เจฒเฉ€เจ†เจ‚ เจตเจฟเฉฐเจกเฉ‹เจœเจผ 'เจคเฉ‡ เจšเจฒเฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจนเจพเจ‚เฅค

เจนเจพเจฐเจก เจกเจฐเจพเจˆเจต เจธเฉˆเจŸเจฟเฉฐเจ—เจพเจ‚ เจจเฉ‚เฉฐ เจกเจฟเจซเฉŒเจฒเจŸ เจฆเฉ‡ เจจเจพเจฒ-เจจเจพเจฒ เจŸเฉˆเจ—เจธ เจฆเฉ‡ เจคเฉŒเจฐ 'เจคเฉ‡ เจ›เฉฑเจกเจฟเจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ (เจนเจพเจฒเจพเจ‚เจ•เจฟ เจŸเฉˆเจ—เจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจเจพ เจšเฉฐเจ—เจพ เจ…เจญเจฟเจ†เจธ เจนเฉˆ, เจ˜เฉฑเจŸเฉ‹-เจ˜เฉฑเจŸ เจ‰เจฆเจพเจนเจฐเจฃ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจจเจพเจฎ เจฆเจฟเจ“ เจ…เจคเฉ‡ เจตเจพเจคเจพเจตเจฐเจฃ เจจเฉ‚เฉฐ เจฆเจฐเจธเจพเจ“)เฅค

เจนเฉเจฃ เจ…เจธเฉ€เจ‚ เจ•เจฆเจฎ 6 'เจคเฉ‡ เจนเจพเจ‚: เจธเฉเจฐเฉฑเจ–เจฟเจ† เจธเจฎเฉ‚เจน เจŸเฉˆเจฌ เจจเฉ‚เฉฐ เจ•เฉŒเจ‚เจซเจฟเจ—เจฐ เจ•เจฐเฉ‹, เจœเจฟเฉฑเจฅเฉ‡ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจจเจตเจพเจ‚ เจฌเจฃเจพเจ‰เจฃ เจœเจพเจ‚ เจ†เจชเจฃเจพ เจฎเฉŒเจœเฉ‚เจฆเจพ เจธเฉเจฐเฉฑเจ–เจฟเจ† เจธเจฎเฉ‚เจน เจจเจฟเจฐเจงเจพเจฐเจค เจ•เจฐเจจ เจฆเฉ€ เจœเจผเจฐเฉ‚เจฐเจค เจนเฉˆ, เจœเฉ‹ เจคเฉเจนเจพเจจเฉ‚เฉฐ ssh (เจชเฉ‹เจฐเจŸ 22) เจฆเฉเจ†เจฐเจพ เจ‰เจฆเจพเจนเจฐเจฃ เจจเจพเจฒ เจœเฉเฉœเจจ เจฆเฉ€ เจ†เจ—เจฟเจ† เจฆเจฟเฉฐเจฆเจพ เจนเฉˆเฅค เจธเจฐเฉ‹เจค -> เจฎเฉ‡เจฐเจพ เจ†เจˆเจชเฉ€ เจ‰เฉฑเจฅเฉ‡ เจšเฉเจฃเฉ‹ เจ…เจคเฉ‡ เจคเฉเจธเฉ€เจ‚ เจ‰เจฆเจพเจนเจฐเจฃ เจจเฉ‚เฉฐ เจฒเจพเจ‚เจš เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹.

Amazon Kinesis เจ…เจคเฉ‡ เจธเจฐเจตเจฐ เจฐเจนเจฟเจค เจธเจพเจฆเจ—เฉ€ เจฆเฉ‡ เจจเจพเจฒ 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 เจเจ•เจธเจŸเฉˆเจ‚เจธเจผเจจ เจจเจพเจฒ เจซเจพเจˆเจฒเจพเจ‚ เจฆเฉ€ เจจเจฟเจ—เจฐเจพเจจเฉ€ เจ•เจฐเฉ‡เจ—เจพ, เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจชเจพเจฐเจธ เจ•เจฐเฉ‡เจ—เจพ เจ…เจคเฉ‡ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจเจ…เจฐเจฒเจพเจˆเจจ_เจŸเจฟเจ•เฉ‡เจŸ เจธเจŸเฉเจฐเฉ€เจฎ เจตเจฟเฉฑเจš เจŸเฉเจฐเจพเจ‚เจธเจซเจฐ เจ•เจฐเฉ‡เจ—เจพเฅค

เจ…เจธเฉ€เจ‚ เจธเฉ‡เจตเจพ เจจเฉ‚เฉฐ เจฎเฉเฉœ เจšเจพเจฒเฉ‚ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚ เจ…เจคเฉ‡ เจฏเจ•เฉ€เจจเฉ€ เจฌเจฃเจพเจ‰เจ‚เจฆเฉ‡ เจนเจพเจ‚ เจ•เจฟ เจ‡เจน เจšเจพเจฒเฉ‚ เจนเฉˆ เจ…เจคเฉ‡ เจšเฉฑเจฒ เจฐเจนเฉ€ เจนเฉˆ:

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

Amazon Kinesis เจ…เจคเฉ‡ เจธเจฐเจตเจฐ เจฐเจนเจฟเจค เจธเจพเจฆเจ—เฉ€ เจฆเฉ‡ เจจเจพเจฒ Aviasales API เจเจ•เฉ€เจ•เจฐเจฃ
เจ…เจคเฉ‡ เจ…เจธเฉ€เจ‚ เจเจœเฉฐเจŸ เจฒเฉŒเจ—เจธ เจ…เจคเฉ‡ เจเจ…เจฐเจฒเจพเจˆเจจ_เจŸเจฟเจ•เจŸเจธ เจกเฉ‡เจŸเจพ เจธเจŸเฉเจฐเฉ€เจฎ เจตเจฟเฉฑเจš เจจเจฟเจ—เจฐเจพเจจเฉ€ เจŸเฉˆเจฌ เจตเจฟเฉฑเจš เจ•เฉฐเจฎ เจฆเฉ‡ เจจเจคเฉ€เจœเฉ‡ เจจเฉ‚เฉฐ เจฆเฉ‡เจ–เจฆเฉ‡ เจนเจพเจ‚:

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

Amazon Kinesis เจ…เจคเฉ‡ เจธเจฐเจตเจฐ เจฐเจนเจฟเจค เจธเจพเจฆเจ—เฉ€ เจฆเฉ‡ เจจเจพเจฒ Aviasales API เจเจ•เฉ€เจ•เจฐเจฃ
Amazon Kinesis เจ…เจคเฉ‡ เจธเจฐเจตเจฐ เจฐเจนเจฟเจค เจธเจพเจฆเจ—เฉ€ เจฆเฉ‡ เจจเจพเจฒ Aviasales API เจเจ•เฉ€เจ•เจฐเจฃ
เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจคเฉเจธเฉ€เจ‚ เจฆเฉ‡เจ– เจธเจ•เจฆเฉ‡ เจนเฉ‹, เจธเจญ เจ•เฉเจ เจ•เฉฐเจฎ เจ•เจฐเจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจ•เจพเจ‡เจจเฉ‡เจธเจฟเจธ เจเจœเฉฐเจŸ เจธเจซเจฒเจคเจพเจชเฉ‚เจฐเจตเจ• เจธเจŸเฉเจฐเฉ€เจฎ เจจเฉ‚เฉฐ เจกเฉ‡เจŸเจพ เจญเฉ‡เจœเจฆเจพ เจนเฉˆ. เจ†เจ‰ เจนเฉเจฃ เจ–เจชเจคเจ•เจพเจฐ เจฆเฉ€ เจธเฉฐเจฐเจšเจจเจพ เจ•เจฐเฉ€เจเฅค

เจ•เจพเจ‡เจจเฉ‡เจธเจฟเจธ เจกเฉ‡เจŸเจพ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจธเจฅเจพเจชเจค เจ•เจฐเจจเจพ

เจ†เจ‰ เจชเฉ‚เจฐเฉ‡ เจธเจฟเจธเจŸเจฎ เจฆเฉ‡ เจ•เฉ‡เจ‚เจฆเจฐเฉ€ เจนเจฟเฉฑเจธเฉ‡ เจตเฉฑเจฒ เจตเจงเฉ€เจ - Kinesis_analytics_airlines_app เจจเจพเจฎเจ• Kinesis เจกเฉ‡เจŸเจพ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจจเจตเฉ€เจ‚ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฌเจฃเจพเจ“:

Amazon Kinesis เจ…เจคเฉ‡ เจธเจฐเจตเจฐ เจฐเจนเจฟเจค เจธเจพเจฆเจ—เฉ€ เจฆเฉ‡ เจจเจพเจฒ Aviasales API เจเจ•เฉ€เจ•เจฐเจฃ
Kinesis เจกเจพเจŸเจพ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจคเฉเจนเจพเจจเฉ‚เฉฐ SQL เจญเจพเจธเจผเจพ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ Kinesis เจธเจŸเฉเจฐเฉ€เจฎ เจคเฉ‹เจ‚ เจฐเฉ€เจ…เจฒ-เจŸเจพเจˆเจฎ เจกเจพเจŸเจพ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจ•เจฐเจจ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉˆเฅค เจ‡เจน เจ‡เฉฑเจ• เจชเฉ‚เจฐเฉ€ เจคเจฐเฉเจนเจพเจ‚ เจ†เจŸเฉ‹เจธเจ•เฉ‡เจฒเจฟเฉฐเจ— เจธเฉ‡เจตเจพ เจนเฉˆ (เจ•เจฟเจจเฉ‡เจธเจฟเจธ เจธเจŸเฉเจฐเฉ€เจฎเจœเจผ เจฆเฉ‡ เจ‰เจฒเจŸ) เจœเฉ‹:

  1. เจคเฉเจนเจพเจจเฉ‚เฉฐ เจธเจฐเฉ‹เจค เจกเฉ‡เจŸเจพ เจฒเจˆ เจฌเฉ‡เจจเจคเฉ€เจ†เจ‚ เจฆเฉ‡ เจ…เจงเจพเจฐ เจคเฉ‡ เจจเจตเฉ€เจ†เจ‚ เจธเจŸเฉเจฐเฉ€เจฎเจพเจ‚ (เจ†เจ‰เจŸเจชเฉเฉฑเจŸ เจธเจŸเฉเจฐเฉ€เจฎ) เจฌเจฃเจพเจ‰เจฃ เจฆเฉ€ เจ†เจ—เจฟเจ† เจฆเจฟเฉฐเจฆเจพ เจนเฉˆ;
  2. เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจฆเฉ‡ เจšเฉฑเจฒเจฆเฉ‡ เจธเจฎเฉ‡เจ‚ เจ†เจˆเจ†เจ‚ เจ—เจฒเจคเฉ€เจ†เจ‚ เจจเจพเจฒ เจ‡เฉฑเจ• เจธเจŸเฉเจฐเฉ€เจฎ เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจฆเจพ เจนเฉˆ (เจ—เจฒเจคเฉ€ เจธเจŸเฉเจฐเฉ€เจฎ);
  3. เจ‡เจจเจชเฉเจŸ เจกเฉ‡เจŸเจพ เจธเจ•เฉ€เจฎ เจจเฉ‚เฉฐ เจ†เจŸเฉ‹เจฎเฉˆเจŸเจฟเจ• เจนเฉ€ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เจฐ เจธเจ•เจฆเจพ เจนเฉˆ (เจœเฉ‡ เจฒเฉ‹เฉœ เจนเฉ‹เจตเฉ‡ เจคเจพเจ‚ เจ‡เจธเจจเฉ‚เฉฐ เจนเฉฑเจฅเฉ€เจ‚ เจฎเฉเฉœ เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ)เฅค

เจ‡เจน เจ•เฉ‹เจˆ เจธเจธเจคเฉ€ เจธเฉ‡เจตเจพ เจจเจนเฉ€เจ‚ เจนเฉˆ - 0.11 USD เจชเฉเจฐเจคเฉ€ เจ˜เฉฐเจŸเจพ เจ•เฉฐเจฎ, เจ‡เจธ เจฒเจˆ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เจธเจจเฉ‚เฉฐ เจงเจฟเจ†เจจ เจจเจพเจฒ เจตเจฐเจคเจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจœเจฆเฉ‹เจ‚ เจคเฉเจธเฉ€เจ‚ เจชเฉ‚เจฐเจพ เจ•เจฐ เจฒเฉˆเจ‚เจฆเฉ‡ เจนเฉ‹ เจคเจพเจ‚ เจ‡เจธเจจเฉ‚เฉฐ เจฎเจฟเจŸเจพเจ‰เจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆเฅค

เจ†เจ‰ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจจเฉ‚เฉฐ เจกเฉ‡เจŸเจพ เจธเจฐเฉ‹เจค เจจเจพเจฒ เจ•เจจเฉˆเจ•เจŸ เจ•เจฐเฉ€เจ:

Amazon Kinesis เจ…เจคเฉ‡ เจธเจฐเจตเจฐ เจฐเจนเจฟเจค เจธเจพเจฆเจ—เฉ€ เจฆเฉ‡ เจจเจพเจฒ Aviasales API เจเจ•เฉ€เจ•เจฐเจฃ
เจ‰เจน เจธเจŸเฉเจฐเฉ€เจฎ เจšเฉเจฃเฉ‹ เจœเจฟเจธ เจจเจพเจฒ เจ…เจธเฉ€เจ‚ เจœเฉเฉœเจจ เจœเจพ เจฐเจนเฉ‡ เจนเจพเจ‚ (airline_tickets):

Amazon Kinesis เจ…เจคเฉ‡ เจธเจฐเจตเจฐ เจฐเจนเจฟเจค เจธเจพเจฆเจ—เฉ€ เจฆเฉ‡ เจจเจพเจฒ Aviasales API เจเจ•เฉ€เจ•เจฐเจฃ
เจ…เฉฑเจ—เฉ‡, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจจเจตเฉ€เจ‚ IAM เจฐเฉ‹เจฒ เจจเฉฑเจฅเฉ€ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ เจคเจพเจ‚ เจœเฉ‹ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจธเจŸเฉเจฐเฉ€เจฎ เจคเฉ‹เจ‚ เจชเฉœเฉเจน เจธเจ•เฉ‡ เจ…เจคเฉ‡ เจธเจŸเฉเจฐเฉ€เจฎ เจตเจฟเฉฑเจš เจฒเจฟเจ– เจธเจ•เฉ‡เฅค เจ…เจœเจฟเจนเจพ เจ•เจฐเจจ เจฒเจˆ, เจชเจนเฉเฉฐเจš เจ…เจจเฉเจฎเจคเฉ€เจ†เจ‚ เจฌเจฒเจพเจ• เจตเจฟเฉฑเจš เจ•เฉเจ เจตเฉ€ เจจเจพ เจฌเจฆเจฒเจฃเจพ เจ•เจพเจซเจผเฉ€ เจนเฉˆ:

Amazon Kinesis เจ…เจคเฉ‡ เจธเจฐเจตเจฐ เจฐเจนเจฟเจค เจธเจพเจฆเจ—เฉ€ เจฆเฉ‡ เจจเจพเจฒ Aviasales API เจเจ•เฉ€เจ•เจฐเจฃ
เจนเฉเจฃ เจธเจŸเฉเจฐเฉ€เจฎ เจตเจฟเฉฑเจš เจกเฉ‡เจŸเจพ เจธเจ•เฉ€เจฎเจพ เจฆเฉ€ เจ–เฉ‹เจœ เจฒเจˆ เจฌเฉ‡เจจเจคเฉ€ เจ•เจฐเฉ€เจ; เจ…เจœเจฟเจนเจพ เจ•เจฐเจจ เจฒเจˆ, "เจกเจฟเจธเจ•เจตเจฐ เจธเจ•เฉ€เจฎเจพ" เจฌเจŸเจจ 'เจคเฉ‡ เจ•เจฒเจฟเฉฑเจ• เจ•เจฐเฉ‹เฅค เจจเจคเฉ€เจœเฉ‡ เจตเจœเฉ‹เจ‚, IAM เจญเฉ‚เจฎเจฟเจ•เจพ เจจเฉ‚เฉฐ เจ…เฉฑเจชเจกเฉ‡เจŸ เจ•เฉ€เจคเจพ เจœเจพเจตเฉ‡เจ—เจพ (เจ‡เฉฑเจ• เจจเจตเจพเจ‚ เจฌเจฃเจพเจ‡เจ† เจœเจพเจตเฉ‡เจ—เจพ) เจ…เจคเฉ‡ เจธเจ•เฉ€เจฎเจพ เจ–เฉ‹เจœ เจจเฉ‚เฉฐ เจ‰เจธ เจกเฉ‡เจŸเจพ เจคเฉ‹เจ‚ เจฒเจพเจ‚เจš เจ•เฉ€เจคเจพ เจœเจพเจตเฉ‡เจ—เจพ เจœเฉ‹ เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจธเจŸเฉเจฐเฉ€เจฎ เจตเจฟเฉฑเจš เจ† เจšเฉเฉฑเจ•เจพ เจนเฉˆ:

Amazon Kinesis เจ…เจคเฉ‡ เจธเจฐเจตเจฐ เจฐเจนเจฟเจค เจธเจพเจฆเจ—เฉ€ เจฆเฉ‡ เจจเจพเจฒ Aviasales API เจเจ•เฉ€เจ•เจฐเจฃ
เจนเฉเจฃ เจคเฉเจนเจพเจจเฉ‚เฉฐ SQL เจเจกเฉ€เจŸเจฐ 'เจคเฉ‡ เจœเจพเจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆเฅค เจœเจฆเฉ‹เจ‚ เจคเฉเจธเฉ€เจ‚ เจ‡เจธ เจฌเจŸเจจ 'เจคเฉ‡ เจ•เจฒเจฟเฉฑเจ• เจ•เจฐเจฆเฉ‡ เจนเฉ‹, เจคเจพเจ‚ เจ‡เฉฑเจ• เจตเจฟเฉฐเจกเฉ‹ เจฆเจฟเจ–เจพเจˆ เจฆเฉ‡เจตเฉ‡เจ—เฉ€ เจœเฉ‹ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฒเจพเจ‚เจš เจ•เจฐเจจ เจฒเจˆ เจ•เจนเฉ‡เจ—เฉ€ - เจšเฉเจฃเฉ‹ เจ•เจฟ เจคเฉเจธเฉ€เจ‚ เจ•เฉ€ เจฒเจพเจ‚เจš เจ•เจฐเจจเจพ เจšเจพเจนเฉเฉฐเจฆเฉ‡ เจนเฉ‹:

Amazon Kinesis เจ…เจคเฉ‡ เจธเจฐเจตเจฐ เจฐเจนเจฟเจค เจธเจพเจฆเจ—เฉ€ เจฆเฉ‡ เจจเจพเจฒ 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';

เจฐเจฟเจฒเฉ‡เจธเจผเจจเจฒ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจตเจฟเฉฑเจš, เจคเฉเจธเฉ€เจ‚ เจฐเจฟเจ•เจพเจฐเจกเจพเจ‚ เจจเฉ‚เฉฐ เจœเฉ‹เฉœเจจ เจฒเจˆ INSERT เจธเจŸเฉ‡เจŸเจฎเฉˆเจ‚เจŸเจพเจ‚ เจ…เจคเฉ‡ เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจกเฉ‡เจŸเจพ เจฒเจˆ เจ‡เฉฑเจ• SELECT เจธเจŸเฉ‡เจŸเจฎเฉˆเจ‚เจŸ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ เจŸเฉ‡เจฌเจฒเจพเจ‚ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เฅค เจเจฎเจพเจœเจผเจพเจจ เจ•เจพเจ‡เจจเฉ‡เจธเจฟเจธ เจกเฉ‡เจŸเจพ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจตเจฟเฉฑเจš, เจคเฉเจธเฉ€เจ‚ เจธเจŸเฉเจฐเฉ€เจฎเจœเจผ (เจธเจŸเฉเจฐเฉ€เจฎ) เจ…เจคเฉ‡ เจชเฉฐเจชเจพเจ‚ (เจชเฉฐเจชเจธ) เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจฆเฉ‡ เจนเฉ‹ - เจฒเจ—เจพเจคเจพเจฐ เจธเฉฐเจฎเจฟเจฒเจฟเจค เจ•เจฐเจจ เจฆเฉ€เจ†เจ‚ เจฌเฉ‡เจจเจคเฉ€เจ†เจ‚ เจœเฉ‹ เจ‡เฉฑเจ• เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจธเจŸเฉเจฐเฉ€เจฎ เจคเฉ‹เจ‚ เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจฆเฉ‚เจœเฉ€ เจธเจŸเฉเจฐเฉ€เจฎ เจตเจฟเฉฑเจš เจธเจผเจพเจฎเจฒ เจ•เจฐเจฆเฉ€เจ†เจ‚ เจนเจจเฅค

เจ‰เจชเจฐเฉ‹เจ•เจค เจชเฉ‡เจธเจผ เจ•เฉ€เจคเฉ€ SQL เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจชเฉฐเจœ เจนเจœเจผเจพเจฐ เจฐเฉ‚เจฌเจฒ เจคเฉ‹เจ‚ เจ˜เฉฑเจŸ เจ•เฉ€เจฎเจค 'เจคเฉ‡ เจเจฐเฉ‹เจซเจฒเฉ‹เจŸ เจŸเจฟเจ•เจŸเจพเจ‚ เจฆเฉ€ เจ–เฉ‹เจœ เจ•เจฐเจฆเฉ€ เจนเฉˆเฅค เจ‡เจนเจจเจพเจ‚ เจธเจผเจฐเจคเจพเจ‚ เจจเฉ‚เฉฐ เจชเฉ‚เจฐเจพ เจ•เจฐเจจ เจตเจพเจฒเฉ‡ เจธเจพเจฐเฉ‡ เจฐเจฟเจ•เจพเจฐเจกเจพเจ‚ เจจเฉ‚เฉฐ DESTINATION_SQL_STREAM เจธเจŸเฉเจฐเฉ€เจฎ เจตเจฟเฉฑเจš เจฐเฉฑเจ–เจฟเจ† เจœเจพเจตเฉ‡เจ—เจพเฅค

Amazon Kinesis เจ…เจคเฉ‡ เจธเจฐเจตเจฐ เจฐเจนเจฟเจค เจธเจพเจฆเจ—เฉ€ เจฆเฉ‡ เจจเจพเจฒ Aviasales API เจเจ•เฉ€เจ•เจฐเจฃ
เจฎเฉฐเจœเจผเจฟเจฒ เจฌเจฒเจพเจ• เจตเจฟเฉฑเจš, เจตเจฟเจธเจผเฉ‡เจธเจผ_เจธเจŸเฉเจฐเฉ€เจฎ เจธเจŸเฉเจฐเฉ€เจฎ เจฆเฉ€ เจšเฉ‹เจฃ เจ•เจฐเฉ‹, เจ…เจคเฉ‡ เจ‡เจจ-เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจธเจŸเฉเจฐเฉ€เจฎ เจจเจพเจฎ DESTINATION_SQL_STREAM เจกเฉเจฐเฉŒเจช-เจกเจพเจ‰เจจ เจธเฉ‚เจšเฉ€ เจตเจฟเฉฑเจš:

Amazon Kinesis เจ…เจคเฉ‡ เจธเจฐเจตเจฐ เจฐเจนเจฟเจค เจธเจพเจฆเจ—เฉ€ เจฆเฉ‡ เจจเจพเจฒ Aviasales API เจเจ•เฉ€เจ•เจฐเจฃ
เจธเจพเจฐเฉ€เจ†เจ‚ เจนเฉ‡เจฐเจพเจซเฉ‡เจฐเฉ€เจ†เจ‚ เจฆเจพ เจจเจคเฉ€เจœเจพ เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเฉ€ เจคเจธเจตเฉ€เจฐ เจฆเฉ‡ เจธเจฎเจพเจจ เจนเฉ‹เจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ:

Amazon Kinesis เจ…เจคเฉ‡ เจธเจฐเจตเจฐ เจฐเจนเจฟเจค เจธเจพเจฆเจ—เฉ€ เจฆเฉ‡ เจจเจพเจฒ Aviasales API เจเจ•เฉ€เจ•เจฐเจฃ

เจ‡เฉฑเจ• SNS เจตเจฟเจธเจผเฉ‡ เจจเฉ‚เฉฐ เจฌเจฃเจพเจ‰เจฃเจพ เจ…เจคเฉ‡ เจ—เจพเจนเจ•เฉ€ เจฒเฉˆเจฃเจพ

เจธเจงเจพเจฐเจจ เจธเฉ‚เจšเจจเจพ เจธเฉ‡เจตเจพ 'เจคเฉ‡ เจœเจพเจ“ เจ…เจคเฉ‡ เจ‰เฉฑเจฅเฉ‡ เจเจ…เจฐเจฒเจพเจˆเจจเจœเจผ เจจเจพเจฎ เจจเจพเจฒ เจ‡เฉฑเจ• เจจเจตเจพเจ‚ เจตเจฟเจธเจผเจพ เจฌเจฃเจพเจ“:

Amazon Kinesis เจ…เจคเฉ‡ เจธเจฐเจตเจฐ เจฐเจนเจฟเจค เจธเจพเจฆเจ—เฉ€ เจฆเฉ‡ เจจเจพเจฒ Aviasales API เจเจ•เฉ€เจ•เจฐเจฃ
เจ‡เจธ เจตเจฟเจธเจผเฉ‡ เจฆเฉ€ เจ—เจพเจนเจ•เฉ€ เจฒเจ“ เจ…เจคเฉ‡ เจฎเฉ‹เจฌเจพเจˆเจฒ เจซเจผเฉ‹เจจ เจจเฉฐเจฌเจฐ เจฆเฉฑเจธเฉ‹ เจœเจฟเจธ 'เจคเฉ‡ SMS เจธเฉ‚เจšเจจเจพเจตเจพเจ‚ เจญเฉ‡เจœเฉ€เจ†เจ‚ เจœเจพเจฃเจ—เฉ€เจ†เจ‚:

Amazon Kinesis เจ…เจคเฉ‡ เจธเจฐเจตเจฐ เจฐเจนเจฟเจค เจธเจพเจฆเจ—เฉ€ เจฆเฉ‡ เจจเจพเจฒ Aviasales API เจเจ•เฉ€เจ•เจฐเจฃ

DynamoDB เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจธเจพเจฐเจฃเฉ€ เจฌเจฃเจพเจ“

เจ‰เจนเจจเจพเจ‚ เจฆเฉ€ airline_tickets เจธเจŸเฉเจฐเฉ€เจฎ เจคเฉ‹เจ‚ เจ•เฉฑเจšเฉ‡ เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจธเจŸเฉ‹เจฐ เจ•เจฐเจจ เจฒเจˆ, เจšเจฒเฉ‹ เจ‰เจธเฉ‡ เจจเจพเจฎ เจจเจพเจฒ DynamoDB เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจธเจพเจฐเจฃเฉ€ เจฌเจฃเจพเจˆเจเฅค เจ…เจธเฉ€เจ‚ เจชเฉเจฐเจพเจ‡เจฎเจฐเฉ€ เจ•เฉเฉฐเจœเฉ€ เจตเจœเฉ‹เจ‚ record_id เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจพเจ‚เจ—เฉ‡:

Amazon Kinesis เจ…เจคเฉ‡ เจธเจฐเจตเจฐ เจฐเจนเจฟเจค เจธเจพเจฆเจ—เฉ€ เจฆเฉ‡ เจจเจพเจฒ Aviasales API เจเจ•เฉ€เจ•เจฐเจฃ

เจฒเจพเจ‚เจฌเจกเจพ เจซเฉฐเจ•เจธเจผเจจ เจ•เฉเจฒเฉˆเจ•เจŸเจฐ เจฌเจฃเจพเจ‰เจฃเจพ

เจšเจฒเฉ‹ เจ•เจฒเฉˆเจ•เจŸเจฐ เจจเจพเจฎเจ• เจ‡เฉฑเจ• เจฒเฉˆเจ‚เจฌเจกเจพ เจซเฉฐเจ•เจธเจผเจจ เจฌเจฃเจพเจ‰เจ‚เจฆเฉ‡ เจนเจพเจ‚, เจœเจฟเจธเจฆเจพ เจ•เฉฐเจฎ เจเจ…เจฐเจฒเจพเจˆเจจ_เจŸเจฟเจ•เจŸเจธ เจธเจŸเฉเจฐเฉ€เจฎ เจจเฉ‚เฉฐ เจชเฉ‹เจฒ เจ•เจฐเจจเจพ เจนเฉ‹เจตเฉ‡เจ—เจพ เจ…เจคเฉ‡, เจœเฉ‡เจ•เจฐ เจ‰เฉฑเจฅเฉ‡ เจจเจตเฉ‡เจ‚ เจฐเจฟเจ•เจพเจฐเจก เจฎเจฟเจฒเฉ‡ เจนเจจ, เจคเจพเจ‚ เจ‡เจนเจจเจพเจ‚ เจฐเจฟเจ•เจพเจฐเจกเจพเจ‚ เจจเฉ‚เฉฐ เจกเจพเจ‡เจจเจพเจฎเฉ‹เจกเฉ€เจฌเฉ€ เจŸเฉ‡เจฌเจฒ เจตเจฟเฉฑเจš เจธเจผเจพเจฎเจฒ เจ•เจฐเฉ‹เฅค เจธเจชเฉฑเจธเจผเจŸ เจคเฉŒเจฐ 'เจคเฉ‡, เจกเจฟเจซเฉŒเจฒเจŸ เจ…เจงเจฟเจ•เจพเจฐเจพเจ‚ เจคเฉ‹เจ‚ เจ‡เจฒเจพเจตเจพ, เจ‡เจธ เจฒเจพเจ‚เจฌเจกเจพ เจ•เฉ‹เจฒ เจ•เจพเจ‡เจจเฉ‡เจธเจฟเจธ เจกเฉ‡เจŸเจพ เจธเจŸเฉเจฐเฉ€เจฎ เจคเฉฑเจ• เจชเฉœเฉเจนเจจ เจฆเฉ€ เจชเจนเฉเฉฐเจš เจ…เจคเฉ‡ เจกเจพเจ‡เจจเจพเจฎเฉ‹เจกเฉ€เจฌเฉ€ เจคเฉฑเจ• เจฒเจฟเจ–เจฃ เจฆเฉ€ เจชเจนเฉเฉฐเจš เจนเฉ‹เจฃเฉ€ เจšเจพเจนเฉ€เจฆเฉ€ เจนเฉˆเฅค

เจ•เฉเจฒเฉˆเจ•เจŸเจฐ เจฒเจพเจ‚เจฌเจกเจพ เจซเฉฐเจ•เจธเจผเจจ เจฒเจˆ เจ‡เฉฑเจ• IAM เจฐเฉ‹เจฒ เจฌเจฃเจพเจ‰เจฃเจพ
เจชเจนเจฟเจฒเจพเจ‚, เจ†เจ“ เจฒเฉˆเจ‚เจฌเจกเจพ เจฒเจˆ เจ‡เฉฑเจ• เจจเจตเฉ€เจ‚ IAM เจญเฉ‚เจฎเจฟเจ•เจพ เจฌเจฃเจพเจˆเจ เจœเจฟเจธเจฆเจพ เจจเจพเจฎ Lambda-TicketsProcessingRole เจนเฉˆ:

Amazon Kinesis เจ…เจคเฉ‡ เจธเจฐเจตเจฐ เจฐเจนเจฟเจค เจธเจพเจฆเจ—เฉ€ เจฆเฉ‡ เจจเจพเจฒ Aviasales API เจเจ•เฉ€เจ•เจฐเจฃ
เจŸเฉˆเจธเจŸ เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจชเจนเจฟเจฒเจพเจ‚ เจคเฉ‹เจ‚ เจธเฉฐเจฐเจšเจฟเจค AmazonKinesisReadOnlyAccess เจ…เจคเฉ‡ AmazonDynamoDBFullAccess เจจเฉ€เจคเฉ€เจ†เจ‚ เจ•เจพเจซเจผเฉ€ เจขเฉเจ•เจตเฉ€เจ†เจ‚ เจนเจจ, เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจนเฉ‡เจ เจพเจ‚ เจคเจธเจตเฉ€เจฐ เจตเจฟเฉฑเจš เจฆเจฟเจ–เจพเจ‡เจ† เจ—เจฟเจ† เจนเฉˆ:

Amazon Kinesis เจ…เจคเฉ‡ เจธเจฐเจตเจฐ เจฐเจนเจฟเจค เจธเจพเจฆเจ—เฉ€ เจฆเฉ‡ เจจเจพเจฒ Aviasales API เจเจ•เฉ€เจ•เจฐเจฃ
Amazon Kinesis เจ…เจคเฉ‡ เจธเจฐเจตเจฐ เจฐเจนเจฟเจค เจธเจพเจฆเจ—เฉ€ เจฆเฉ‡ เจจเจพเจฒ Aviasales API เจเจ•เฉ€เจ•เจฐเจฃ

เจœเจฆเฉ‹เจ‚ เจจเจตเฉ€เจ†เจ‚ เจเจ‚เจŸเจฐเฉ€เจ†เจ‚ เจเจ…เจฐเจฒเจพเจˆเจจ_เจธเจŸเฉเจฐเฉ€เจฎ เจตเจฟเฉฑเจš เจฆเจพเจ–เจฒ เจนเฉเฉฐเจฆเฉ€เจ†เจ‚ เจนเจจ เจคเจพเจ‚ เจ‡เจธ เจฒเจพเจ‚เจฌเจกเจพ เจจเฉ‚เฉฐ เจ•เจฟเจจเฉ‡เจธเจฟเจธ เจคเฉ‹เจ‚ เจ‡เฉฑเจ• เจŸเจฐเจฟเฉฑเจ—เจฐ เจฆเฉเจ†เจฐเจพ เจฒเจพเจ‚เจš เจ•เฉ€เจคเจพ เจœเจพเจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ, เจ‡เจธ เจฒเจˆ เจธเจพเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจจเจตเจพเจ‚ เจŸเจฐเจฟเฉฑเจ—เจฐ เจœเฉ‹เฉœเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ:

Amazon Kinesis เจ…เจคเฉ‡ เจธเจฐเจตเจฐ เจฐเจนเจฟเจค เจธเจพเจฆเจ—เฉ€ เจฆเฉ‡ เจจเจพเจฒ Aviasales API เจเจ•เฉ€เจ•เจฐเจฃ
Amazon Kinesis เจ…เจคเฉ‡ เจธเจฐเจตเจฐ เจฐเจนเจฟเจค เจธเจพเจฆเจ—เฉ€ เจฆเฉ‡ เจจเจพเจฒ 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()

เจ‡เฉฑเจ• lambda เจซเฉฐเจ•เจธเจผเจจ เจจเฉ‹เจŸเฉ€เจซเจพเจ‡เจฐ เจฌเจฃเจพเจ‰เจฃเจพ

เจฆเฉ‚เจœเจพ เจฒเจพเจ‚เจฌเจกเจพ เจซเฉฐเจ•เจธเจผเจจ, เจœเฉ‹ เจฆเฉ‚เจœเฉ€ เจธเจŸเฉเจฐเฉ€เจฎ (เจตเจฟเจธเจผเฉ‡เจธเจผ_เจธเจŸเฉเจฐเฉ€เจฎ) เจฆเฉ€ เจจเจฟเจ—เจฐเจพเจจเฉ€ เจ•เจฐเฉ‡เจ—เจพ เจ…เจคเฉ‡ SNS เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจจเฉ‹เจŸเฉ€เจซเจฟเจ•เฉ‡เจธเจผเจจ เจญเฉ‡เจœเฉ‡เจ—เจพ, เจ‡เจธเฉ‡ เจคเจฐเฉเจนเจพเจ‚ เจฌเจฃเจพเจ‡เจ† เจ—เจฟเจ† เจนเฉˆเฅค เจ‡เจธ เจฒเจˆ, เจ‡เจธ เจฒเจพเจ‚เจฌเจกเจพ เจ•เฉ‹เจฒ เจ•เจพเจ‡เจจเฉ‡เจธเจฟเจธ เจคเฉ‹เจ‚ เจชเฉœเฉเจนเจจ เจ…เจคเฉ‡ เจฆเจฟเฉฑเจคเฉ‡ เจ—เจ SNS เจตเจฟเจธเจผเฉ‡ 'เจคเฉ‡ เจธเฉฐเจฆเฉ‡เจธเจผ เจญเฉ‡เจœเจฃ เจฒเจˆ เจชเจนเฉเฉฐเจš เจนเฉ‹เจฃเฉ€ เจšเจพเจนเฉ€เจฆเฉ€ เจนเฉˆ, เจœเฉ‹ เจซเจฟเจฐ SNS เจธเฉ‡เจตเจพ เจฆเฉเจ†เจฐเจพ เจ‡เจธ เจตเจฟเจธเจผเฉ‡ เจฆเฉ‡ เจธเจพเจฐเฉ‡ เจ—เจพเจนเจ•เจพเจ‚ (เจˆเจฎเฉ‡เจฒ, SMS, เจ†เจฆเจฟ) เจจเฉ‚เฉฐ เจญเฉ‡เจœเฉ‡ เจœเจพเจฃเจ—เฉ‡เฅค

เจ‡เฉฑเจ• IAM เจฐเฉ‹เจฒ เจฌเจฃเจพเจ‰เจฃเจพ
เจชเจนเจฟเจฒเจพเจ‚, เจ…เจธเฉ€เจ‚ เจ‡เจธ เจฒเจพเจ‚เจฌเจกเจพ เจฒเจˆ IAM เจฐเฉ‹เจฒ Lambda-KinesisAlarm เจฌเจฃเจพเจ‰เจ‚เจฆเฉ‡ เจนเจพเจ‚, เจ…เจคเฉ‡ เจซเจฟเจฐ เจ‡เจธ เจฐเฉ‹เจฒ เจจเฉ‚เฉฐ เจฌเจฃเจพเจ เจœเจพ เจฐเจนเฉ‡ เจ…เจฒเจพเจฐเจฎ_เจจเฉ‹เจŸเฉ€เจซเจพเจ‡เจฐ เจฒเจพเจ‚เจฌเจกเจพ เจจเฉ‚เฉฐ เจธเฉŒเจ‚เจชเจฆเฉ‡ เจนเจพเจ‚:

Amazon Kinesis เจ…เจคเฉ‡ เจธเจฐเจตเจฐ เจฐเจนเจฟเจค เจธเจพเจฆเจ—เฉ€ เจฆเฉ‡ เจจเจพเจฒ Aviasales API เจเจ•เฉ€เจ•เจฐเจฃ
Amazon Kinesis เจ…เจคเฉ‡ เจธเจฐเจตเจฐ เจฐเจนเจฟเจค เจธเจพเจฆเจ—เฉ€ เจฆเฉ‡ เจจเจพเจฒ Aviasales API เจเจ•เฉ€เจ•เจฐเจฃ

เจ‡เจธ เจฒเจพเจ‚เจฌเจกเจพ เจจเฉ‚เฉฐ เจตเจฟเจธเจผเฉ‡เจธเจผ_เจธเจŸเฉเจฐเฉ€เจฎ เจตเจฟเฉฑเจš เจฆเจพเจ–เจฒ เจนเฉ‹เจฃ เจฒเจˆ เจจเจตเฉ‡เจ‚ เจฐเจฟเจ•เจพเจฐเจกเจพเจ‚ เจฒเจˆ เจ‡เฉฑเจ• เจŸเฉเจฐเจฟเจ—เจฐ 'เจคเฉ‡ เจ•เฉฐเจฎ เจ•เจฐเจจเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ, เจ‡เจธเจฒเจˆ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจŸเฉเจฐเจฟเจ—เจฐ เจจเฉ‚เฉฐ เจ‰เจธเฉ‡ เจคเจฐเฉเจนเจพเจ‚ เจธเฉฐเจฐเจšเจฟเจค เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ เจœเจฟเจตเฉ‡เจ‚ เจ…เจธเฉ€เจ‚ เจ•เฉเจฒเฉˆเจ•เจŸเจฐ เจฒเจพเจ‚เจฌเจกเจพ เจฒเจˆ เจ•เฉ€เจคเจพ เจธเฉ€เฅค

เจ‡เจธ เจฒเจพเจ‚เจฌเจกเจพ เจจเฉ‚เฉฐ เจ•เฉŒเจ‚เจซเจฟเจ—เจฐ เจ•เจฐเจจเจพ เจ†เจธเจพเจจ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ, เจ†เจ“ เจ‡เฉฑเจ• เจจเจตเจพเจ‚ เจตเจพเจคเจพเจตเจฐเจฃ เจตเฉ‡เจฐเฉ€เจเจฌเจฒ เจชเฉ‡เจธเจผ เจ•เจฐเฉ€เจ - TOPIC_ARN, เจœเจฟเฉฑเจฅเฉ‡ เจ…เจธเฉ€เจ‚ เจเจ…เจฐเจฒเจพเจˆเจจเจœเจผ เจตเจฟเจธเจผเฉ‡ เจฆเจพ ANR (เจเจฎเจพเจœเจผเจพเจจ เจฐเจฟเจ•เฉ‹เจฐเจธ เจจเจพเจฎ) เจฐเฉฑเจ–เจฆเฉ‡ เจนเจพเจ‚:

Amazon Kinesis เจ…เจคเฉ‡ เจธเจฐเจตเจฐ เจฐเจนเจฟเจค เจธเจพเจฆเจ—เฉ€ เจฆเฉ‡ เจจเจพเจฒ 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

เจคเฉเจนเจพเจจเฉ‚เฉฐ เจธเฉ‚เจšเจจเจพเจตเจพเจ‚ เจญเฉ‡เจœเจฃ เจฒเจˆ เจ‡เฉฑเจ• เจซเจผเฉ‹เจจ เจจเฉฐเจฌเจฐ เจฆเจฐเจœ เจ•เจฐเจจ เจฒเจˆ เจ•เจฟเจนเจพ เจœเจพเจตเฉ‡เจ—เจพเฅค เจ‡เจธ เจชเฉœเจพเจ… 'เจคเฉ‡ เจ‡เจธ เจจเฉ‚เฉฐ เจฆเจพเจ–เจฒ เจ•เจฐเจจเจพ เจœเจผเจฐเฉ‚เจฐเฉ€ เจจเจนเฉ€เจ‚ เจนเฉˆ.

Amazon Kinesis เจ…เจคเฉ‡ เจธเจฐเจตเจฐ เจฐเจนเจฟเจค เจธเจพเจฆเจ—เฉ€ เจฆเฉ‡ เจจเจพเจฒ Aviasales API เจเจ•เฉ€เจ•เจฐเจฃ
เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจฆเฉ€ เจธเฉฐเจšเจพเจฒเจจ เจฏเฉ‹เจœเจจเจพ เจฆเจพ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจ•เจฐเจจ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจ…เจธเฉ€เจ‚ เจธเจฐเฉ‹เจค เจฌเจฃเจพเจ‰เจฃเจพ เจธเจผเฉเจฐเฉ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚:

terraform.exe apply

เจ‡เจธ เจ•เจฎเจพเจ‚เจก เจจเฉ‚เฉฐ เจญเฉ‡เจœเจฃ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจฆเฉเจฌเจพเจฐเจพ เจ‡เฉฑเจ• เจซเจผเฉ‹เจจ เจจเฉฐเจฌเจฐ เจฆเจฐเจœ เจ•เจฐเจจ เจฒเจˆ เจ•เจฟเจนเจพ เจœเจพเจตเฉ‡เจ—เจพ; เจœเจฆเฉ‹เจ‚ เจ…เจธเจฒ เจตเจฟเฉฑเจš เจ•เจพเจฐเจตเจพเจˆเจ†เจ‚ เจ•เจฐเจจ เจฌเจพเจฐเฉ‡ เจ•เฉ‹เจˆ เจธเจตเจพเจฒ เจชเฉเจฐเจฆเจฐเจธเจผเจฟเจค เจนเฉเฉฐเจฆเจพ เจนเฉˆ เจคเจพเจ‚ "เจนเจพเจ‚" เจกเจพเจ‡เจฒ เจ•เจฐเฉ‹เฅค เจ‡เจน เจคเฉเจนเจพเจจเฉ‚เฉฐ เจชเฉ‚เจฐเจพ เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจขเจพเจ‚เจšเจพ เจธเจฅเจพเจชเจค เจ•เจฐเจจ, EC2 เจฆเฉ€เจ†เจ‚ เจธเจพเจฐเฉ€เจ†เจ‚ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ€เจ†เจ‚ เจธเฉฐเจฐเจšเจจเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจชเฉ‚เจฐเจพ เจ•เจฐเจจ, เจฒเฉˆเจ‚เจฌเจกเจพ เจซเฉฐเจ•เจธเจผเจจเจพเจ‚ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจ, เจ†เจฆเจฟ เจฆเฉ€ เจ†เจ—เจฟเจ† เจฆเฉ‡เจตเฉ‡เจ—เจพเฅค

เจŸเฉˆเจฐเจพเจซเจพเจฐเจฎ เจ•เฉ‹เจก เจฆเฉเจ†เจฐเจพ เจธเจพเจฐเฉ‡ เจธเจฐเฉ‹เจคเจพเจ‚ เจจเฉ‚เฉฐ เจธเจซเจฒเจคเจพเจชเฉ‚เจฐเจตเจ• เจฌเจฃเจพเจ เจœเจพเจฃ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ•เจพเจ‡เจจเฉ‡เจธเจฟเจธ เจเจจเจพเจฒเจฟเจŸเจฟเจ•เจธ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฆเฉ‡ เจตเฉ‡เจฐเจตเจฟเจ†เจ‚ เจตเจฟเฉฑเจš เจœเจพเจฃ เจฆเฉ€ เจœเจผเจฐเฉ‚เจฐเจค เจนเฉˆ (เจฌเจฆเจ•เจฟเจธเจฎเจคเฉ€ เจจเจพเจฒ, เจฎเฉˆเจจเฉ‚เฉฐ เจ‡เจน เจจเจนเฉ€เจ‚ เจชเจคเจพ เจฒเฉฑเจ—เจพ เจ•เจฟ เจ‡เจน เจ•เฉ‹เจก เจคเฉ‹เจ‚ เจธเจฟเฉฑเจงเจพ เจ•เจฟเจตเฉ‡เจ‚ เจ•เจฐเจจเจพ เจนเฉˆ)เฅค

เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฒเจพเจ‚เจš เจ•เจฐเฉ‹:

Amazon Kinesis เจ…เจคเฉ‡ เจธเจฐเจตเจฐ เจฐเจนเจฟเจค เจธเจพเจฆเจ—เฉ€ เจฆเฉ‡ เจจเจพเจฒ Aviasales API เจเจ•เฉ€เจ•เจฐเจฃ
เจ‡เจธ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจกเฉเจฐเฉŒเจช-เจกเจพเจ‰เจจ เจธเฉ‚เจšเฉ€ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจšเฉเจฃ เจ•เฉ‡ เจธเจชเฉฑเจธเจผเจŸ เจคเฉŒเจฐ 'เจคเฉ‡ เจ‡เจจ-เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจธเจŸเฉเจฐเฉ€เจฎ เจจเจพเจฎ เจธเฉˆเฉฑเจŸ เจ•เจฐเจจเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ:

Amazon Kinesis เจ…เจคเฉ‡ เจธเจฐเจตเจฐ เจฐเจนเจฟเจค เจธเจพเจฆเจ—เฉ€ เจฆเฉ‡ เจจเจพเจฒ Aviasales API เจเจ•เฉ€เจ•เจฐเจฃ
Amazon Kinesis เจ…เจคเฉ‡ เจธเจฐเจตเจฐ เจฐเจนเจฟเจค เจธเจพเจฆเจ—เฉ€ เจฆเฉ‡ เจจเจพเจฒ Aviasales API เจเจ•เฉ€เจ•เจฐเจฃ
เจนเฉเจฃ เจธเจญ เจ•เฉเจ เจœเจพเจฃ เจฒเจˆ เจคเจฟเจ†เจฐ เจนเฉˆ.

เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฆเฉ€ เจœเจพเจ‚เจš เจ•เจฐ เจฐเจฟเจนเจพ เจนเฉˆ

เจšเจพเจนเฉ‡ เจคเฉเจธเฉ€เจ‚ เจธเจฟเจธเจŸเจฎ เจจเฉ‚เฉฐ เจนเฉฑเจฅเฉ€เจ‚ เจœเจพเจ‚ เจŸเฉˆเจฐเจพเจซเจพเจฐเจฎ เจ•เฉ‹เจก เจฐเจพเจนเฉ€เจ‚ เจคเฉˆเจจเจพเจค เจ•เฉ€เจคเจพ เจนเฉ‹เจตเฉ‡, เจ‡เจน เจ‰เจนเฉ€ เจ•เฉฐเจฎ เจ•เจฐเฉ‡เจ—เจพเฅค

เจ…เจธเฉ€เจ‚ SSH เจฐเจพเจนเฉ€เจ‚ EC2 เจตเจฐเจšเฉเจ…เจฒ เจฎเจธเจผเฉ€เจจ เจตเจฟเฉฑเจš เจฒเฉŒเจ—เจ‡เจจ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚ เจœเจฟเฉฑเจฅเฉ‡ เจ•เจฟเจจเฉ‡เจธเจฟเจธ เจเจœเฉฐเจŸ เจธเจฅเจพเจชเจค เจนเฉˆ เจ…เจคเฉ‡ api_caller.py เจธเจ•เฉเจฐเจฟเจชเจŸ เจšเจฒเจพเจ‰เจ‚เจฆเจพ เจนเฉˆ

sudo ./api_caller.py TOKEN

เจคเฉเจนเจพเจจเฉ‚เฉฐ เจธเจฟเจฐเจซเจผ เจ†เจชเจฃเฉ‡ เจจเฉฐเจฌเจฐ 'เจคเฉ‡ เจ‡เฉฑเจ• SMS เจฆเฉ€ เจ‰เจกเฉ€เจ• เจ•เจฐเจจเฉ€ เจชเจตเฉ‡เจ—เฉ€:

Amazon Kinesis เจ…เจคเฉ‡ เจธเจฐเจตเจฐ เจฐเจนเจฟเจค เจธเจพเจฆเจ—เฉ€ เจฆเฉ‡ เจจเจพเจฒ Aviasales API เจเจ•เฉ€เจ•เจฐเจฃ
SMS - เจฒเจ—เจญเจ— 1 เจฎเจฟเฉฐเจŸ เจตเจฟเฉฑเจš เจคเฉเจนเจพเจกเฉ‡ เจซเจผเฉ‹เจจ 'เจคเฉ‡ เจ‡เฉฑเจ• เจธเฉเจจเฉ‡เจนเจพ เจ†เจ‰เจ‚เจฆเจพ เจนเฉˆ:

Amazon Kinesis เจ…เจคเฉ‡ เจธเจฐเจตเจฐ เจฐเจนเจฟเจค เจธเจพเจฆเจ—เฉ€ เจฆเฉ‡ เจจเจพเจฒ Aviasales API เจเจ•เฉ€เจ•เจฐเจฃ
เจ‡เจน เจฆเฉ‡เจ–เจฃเจพ เจฌเจพเจ•เฉ€ เจนเฉˆ เจ•เจฟ เจ•เฉ€ เจฐเจฟเจ•เจพเจฐเจกเจพเจ‚ เจจเฉ‚เฉฐ เจฌเจพเจ…เจฆ เจฆเฉ‡, เจตเจงเฉ‡เจฐเฉ‡ เจตเจฟเจธเจคเฉเจฐเจฟเจค เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจฒเจˆ เจกเจพเจ‡เจจเจพเจฎเฉ‹เจกเฉ€เจฌเฉ€ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจตเจฟเฉฑเจš เจธเฉเจฐเฉฑเจ–เจฟเจ…เจค เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจธเฉ€เฅค เจเจ…เจฐเจฒเจพเจˆเจจ_เจŸเจฟเจ•เจŸ เจธเจพเจฐเจฃเฉ€ เจตเจฟเฉฑเจš เจฒเจ—เจญเจ— เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเฉ‡ เจกเฉ‡เจŸเจพ เจธเจผเจพเจฎเจฒ เจนเจจ:

Amazon Kinesis เจ…เจคเฉ‡ เจธเจฐเจตเจฐ เจฐเจนเจฟเจค เจธเจพเจฆเจ—เฉ€ เจฆเฉ‡ เจจเจพเจฒ Aviasales API เจเจ•เฉ€เจ•เจฐเจฃ

เจธเจฟเฉฑเจŸเจพ

เจ•เฉ€เจคเฉ‡ เจ—เจ เจ•เฉฐเจฎ เจฆเฉ‡ เจฆเฉŒเจฐเจพเจจ, Amazon Kinesis 'เจคเฉ‡ เจ†เจงเจพเจฐเจฟเจค เจ‡เฉฑเจ• เจ”เจจเจฒเจพเจˆเจจ เจกเจพเจŸเจพ เจชเฉเจฐเฉ‹เจธเฉˆเจธเจฟเฉฐเจ— เจธเจฟเจธเจŸเจฎ เจฌเจฃเจพเจ‡เจ† เจ—เจฟเจ† เจธเฉ€เฅค เจ•เจพเจ‡เจจเฉ‡เจธเจฟเจธ เจกเฉ‡เจŸเจพ เจธเจŸเฉเจฐเฉ€เจฎเจœเจผ เจ…เจคเฉ‡ SQL เจ•เจฎเจพเจ‚เจกเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ เจ…เจธเจฒ-เจธเจฎเฉ‡เจ‚ เจฆเฉ‡ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจ•เจพเจ‡เจจเฉ‡เจธเจฟเจธ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจฆเฉ‡ เจจเจพเจฒ เจจเจพเจฒ เจ•เจฟเจจเฉ‡เจธเจฟเจธ เจเจœเฉฐเจŸ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฆเฉ‡ เจตเจฟเจ•เจฒเจชเจพเจ‚ เจฆเฉ‡ เจจเจพเจฒ-เจจเจพเจฒ เจนเฉ‹เจฐ AWS เจธเฉ‡เจตเจพเจตเจพเจ‚ เจฆเฉ‡ เจจเจพเจฒ เจเจฎเจพเจœเจผเจพเจจ เจ•เจพเจ‡เจจเฉ‡เจธเจฟเจธ เจฆเฉ‡ เจชเจฐเจธเจชเจฐ เจชเฉเจฐเจญเจพเจต เจจเฉ‚เฉฐ เจตเจฟเจšเจพเจฐเจฟเจ† เจ—เจฟเจ† เจธเฉ€เฅค

เจ…เจธเฉ€เจ‚ เจ‰เจชเจฐเฉ‹เจ•เจค เจธเจฟเจธเจŸเจฎ เจจเฉ‚เฉฐ เจฆเฉ‹ เจคเจฐเฉ€เจ•เจฟเจ†เจ‚ เจจเจพเจฒ เจคเฉˆเจจเจพเจค เจ•เฉ€เจคเจพ เจนเฉˆ: เจ‡เฉฑเจ• เจฒเฉฐเจฎเจพ เจฎเฉˆเจจเฉ‚เจ…เจฒ เจ…เจคเฉ‡ เจŸเฉˆเจฐเจพเจซเจพเจฐเจฎ เจ•เฉ‹เจก เจคเฉ‹เจ‚ เจ‡เฉฑเจ• เจคเฉ‡เจœเจผเฅค

เจธเจพเจฐเจพ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจธเจฐเฉ‹เจค เจ•เฉ‹เจก เจ‰เจชเจฒเจฌเจง เจนเฉˆ เจฎเฉ‡เจฐเฉ‡ GitHub เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ เจตเจฟเฉฑเจš, เจฎเฉˆเจ‚ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เจธ เจจเจพเจฒ เจ†เจชเจฃเฉ‡ เจ†เจช เจจเฉ‚เฉฐ เจœเจพเจฃเฉ‚ เจ•เจฐเจตเจพเจ‰เจฃ เจฆเจพ เจธเฉเจเจพเจ… เจฆเจฟเฉฐเจฆเจพ เจนเจพเจ‚เฅค

เจฎเฉˆเจ‚ เจฒเฉ‡เจ– 'เจคเฉ‡ เจšเจฐเจšเจพ เจ•เจฐเจ•เฉ‡ เจ–เฉเจธเจผ เจนเจพเจ‚, เจฎเฉˆเจ‚ เจคเฉเจนเจพเจกเฉ€เจ†เจ‚ เจŸเจฟเฉฑเจชเจฃเฉ€เจ†เจ‚ เจฆเฉ€ เจ‰เจฎเฉ€เจฆ เจ•เจฐเจฆเจพ เจนเจพเจ‚. เจฎเฉˆเจ‚ เจ‰เจธเจพเจฐเฉ‚ เจ†เจฒเฉ‹เจšเจจเจพ เจฆเฉ€ เจ‰เจฎเฉ€เจฆ เจ•เจฐเจฆเจพ เจนเจพเจ‚เฅค

เจฎเฉˆเจ‚ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจธเจซเจฒเจคเจพ เจฆเฉ€ เจ•เจพเจฎเจจเจพ เจ•เจฐเจฆเจพ เจนเจพเจ‚!

เจธเจฐเฉ‹เจค: www.habr.com

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹