āĻšā§ āĻšāĻžāĻŦāĻ°!
āĻāĻĒāĻ¨āĻŋ āĻāĻŋ āĻāĻĄāĻŧāĻ¨ā§āĻ¤ āĻŦāĻŋāĻŽāĻžāĻ¨ āĻĒāĻāĻ¨ā§āĻĻ āĻāĻ°ā§āĻ¨? āĻāĻŽāĻŋ āĻāĻāĻŋ āĻĒāĻāĻ¨ā§āĻĻ āĻāĻ°āĻŋ, āĻ¤āĻŦā§ āĻ¸ā§āĻŦ-āĻŦāĻŋāĻā§āĻāĻŋāĻ¨ā§āĻ¨āĻ¤āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻāĻŽāĻŋ āĻāĻāĻāĻŋ āĻ¸ā§āĻĒāĻ°āĻŋāĻāĻŋāĻ¤ āĻ¸āĻāĻ¸ā§āĻĨāĻžāĻ¨ - āĻ ā§āĻ¯āĻžāĻāĻŋāĻ¯āĻŧāĻžāĻ¸ā§āĻ˛āĻ¸ āĻĨā§āĻā§ āĻāĻ¯āĻŧāĻžāĻ° āĻāĻŋāĻāĻŋāĻā§āĻ° āĻĄā§āĻāĻž āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻŖā§āĻ° āĻĒā§āĻ°ā§āĻŽā§ āĻĒāĻĄāĻŧā§āĻāĻŋāĻ˛āĻžāĻŽāĨ¤
āĻāĻ āĻāĻŽāĻ°āĻž Amazon Kinesis-āĻāĻ° āĻāĻžāĻ āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻŖ āĻāĻ°āĻŦ, āĻ°āĻŋāĻ¯āĻŧā§āĻ˛-āĻāĻžāĻāĻŽ āĻ ā§āĻ¯āĻžāĻ¨āĻžāĻ˛āĻŋāĻāĻŋāĻā§āĻ¸ āĻ¸āĻš āĻāĻāĻāĻŋ āĻ¸ā§āĻā§āĻ°āĻŋāĻŽāĻŋāĻ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻŦ, Amazon DynamoDB NoSQL āĻĄāĻžāĻāĻžāĻŦā§āĻ¸āĻā§ āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻĄā§āĻāĻž āĻ¸ā§āĻā§āĻ°ā§āĻ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻŦ āĻāĻŦāĻ āĻāĻāĻ°ā§āĻˇāĻŖā§āĻ¯āĻŧ āĻāĻŋāĻāĻŋāĻā§āĻ° āĻāĻ¨ā§āĻ¯ SMS āĻŦāĻŋāĻā§āĻāĻĒā§āĻ¤āĻŋāĻā§āĻ˛āĻŋ āĻ¸ā§āĻ āĻāĻĒ āĻāĻ°āĻŦā§ˇ
āĻ¸āĻŦ āĻŦāĻŋāĻŦāĻ°āĻŖ āĻāĻžāĻāĻž āĻ āĻ§ā§āĻ¨ā§! āĻ¯āĻžāĻāĻ¯āĻŧāĻž!
āĻā§āĻŽāĻŋāĻāĻž
āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻāĻŽāĻžāĻĻā§āĻ° āĻ
ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻĻāĻ°āĻāĻžāĻ°
āĻāĻ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻāĻŋāĻ° āĻŽā§āĻ˛ āĻ˛āĻā§āĻˇā§āĻ¯ āĻšāĻ˛ AWS-āĻ āĻ¤āĻĨā§āĻ¯ āĻ¸ā§āĻā§āĻ°āĻŋāĻŽāĻŋāĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻāĻāĻāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻ§āĻžāĻ°āĻŖāĻž āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻāĻ°āĻž; āĻāĻŽāĻ°āĻž āĻŦāĻŋāĻŦā§āĻāĻ¨āĻž āĻāĻ°āĻŋ āĻ¯ā§ API āĻĻā§āĻŦāĻžāĻ°āĻž āĻĒā§āĻ°āĻ¤ā§āĻ¯āĻžāĻŦāĻ°ā§āĻ¤āĻŋāĻ¤ āĻĄā§āĻāĻž āĻāĻ ā§āĻ°āĻāĻžāĻŦā§ āĻāĻĒ-āĻā§-āĻĄā§āĻ āĻ¨āĻ¯āĻŧ āĻāĻŦāĻ āĻā§āĻ¯āĻžāĻļā§ āĻĨā§āĻā§ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ°āĻŋāĻ¤ āĻšāĻ¯āĻŧ, āĻ¯āĻž āĻāĻ¤ 48 āĻāĻ¨ā§āĻāĻž āĻ§āĻ°ā§ Aviasales.ru āĻāĻŦāĻ Jetradar.com āĻ¸āĻžāĻāĻā§āĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻĻā§āĻ° āĻ āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ā§āĻ° āĻāĻŋāĻ¤ā§āĻ¤āĻŋāĻ¤ā§ āĻāĻ āĻŋāĻ¤āĨ¤
āĻāĻžāĻāĻ¨ā§āĻ¸āĻŋāĻ¸-āĻāĻā§āĻ¨ā§āĻ, āĻāĻ¤ā§āĻĒāĻžāĻĻāĻ¨āĻāĻžāĻ°ā§ āĻŽā§āĻļāĻŋāĻ¨ā§ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻž, API-āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻĒā§āĻ°āĻžāĻĒā§āĻ¤, āĻ¸ā§āĻŦāĻ¯āĻŧāĻāĻā§āĻ°āĻŋāĻ¯āĻŧāĻāĻžāĻŦā§ āĻāĻžāĻāĻ¨ā§āĻ¸āĻŋāĻ¸ āĻĄā§āĻāĻž āĻ ā§āĻ¯āĻžāĻ¨āĻžāĻ˛āĻŋāĻāĻŋāĻā§āĻ¸ā§āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻĒāĻāĻ¨ā§āĻĻāĻ¸āĻ āĻ¸ā§āĻā§āĻ°ā§āĻŽā§ āĻĄā§āĻāĻž āĻĒāĻžāĻ°ā§āĻ¸ āĻāĻŦāĻ āĻĒā§āĻ°ā§āĻ°āĻŖ āĻāĻ°āĻŦā§āĨ¤ āĻāĻ āĻ¸ā§āĻā§āĻ°ā§āĻŽā§āĻ° āĻāĻžāĻāĻāĻž āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖāĻāĻŋ āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ āĻĻā§āĻāĻžāĻ¨ā§ āĻ˛ā§āĻāĻž āĻšāĻŦā§āĨ¤ DynamoDB-āĻ¤ā§ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻž āĻāĻžāĻāĻāĻž āĻĄā§āĻāĻž āĻ¸ā§āĻā§āĻ°ā§āĻ BI āĻā§āĻ˛ā§āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻāĻā§āĻ° āĻāĻŋāĻāĻŋāĻ āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻŖā§āĻ° āĻ āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§āĻŦā§, āĻ¯ā§āĻŽāĻ¨ AWS Quick SightāĨ¤
āĻāĻŽāĻ°āĻž āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻ āĻŦāĻāĻžāĻ āĻžāĻŽā§ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻĻā§āĻāĻŋ āĻŦāĻŋāĻāĻ˛ā§āĻĒ āĻŦāĻŋāĻŦā§āĻāĻ¨āĻž āĻāĻ°āĻŦ:
- āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¯āĻŧāĻžāĻ˛ - AWS āĻŽā§āĻ¯āĻžāĻ¨ā§āĻāĻŽā§āĻ¨ā§āĻ āĻāĻ¨āĻ¸ā§āĻ˛ā§āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§;
- Terraform āĻā§āĻĄ āĻĨā§āĻā§ āĻ āĻŦāĻāĻžāĻ āĻžāĻŽā§ āĻ āĻ˛āĻ¸ āĻ āĻā§āĻŽā§āĻāĻ°āĻĻā§āĻ° āĻāĻ¨ā§āĻ¯;
āĻāĻ¨ā§āĻ¨āĻ¤ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§āĻ° āĻāĻ°ā§āĻāĻŋāĻā§āĻāĻāĻžāĻ°
āĻŦā§āĻ¯āĻŦāĻšā§āĻ¤ āĻāĻĒāĻžāĻĻāĻžāĻ¨:
Aviasales API â āĻāĻ API āĻĻā§āĻŦāĻžāĻ°āĻž āĻĒā§āĻ°āĻ¤ā§āĻ¯āĻžāĻŦāĻ°ā§āĻ¤āĻŋāĻ¤ āĻĄā§āĻāĻž āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻāĻžāĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻšāĻŦā§;EC2 āĻĒā§āĻ°āĻ¯ā§āĻāĻ āĻāĻĻāĻžāĻšāĻ°āĻŖ â āĻā§āĻ˛āĻžāĻāĻĄā§ āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ¯āĻŧāĻŽāĻŋāĻ¤ āĻāĻžāĻ°ā§āĻā§āĻ¯āĻŧāĻžāĻ˛ āĻŽā§āĻļāĻŋāĻ¨ āĻ¯āĻžāĻ° āĻāĻĒāĻ° āĻāĻ¨āĻĒā§āĻ āĻĄā§āĻāĻž āĻ¸ā§āĻā§āĻ°āĻŋāĻŽ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻŦā§:āĻāĻžāĻāĻ¨ā§āĻ¸āĻŋāĻ¸ āĻāĻā§āĻ¨ā§āĻ āĻŽā§āĻļāĻŋāĻ¨ā§ āĻ¸ā§āĻĨāĻžāĻ¨ā§āĻ¯āĻŧāĻāĻžāĻŦā§ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻž āĻāĻāĻāĻŋ āĻāĻžāĻāĻž āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻ¯āĻž āĻāĻžāĻāĻ¨ā§āĻ¸āĻŋāĻ¸ (āĻāĻžāĻāĻ¨ā§āĻ¸āĻŋāĻ¸ āĻĄā§āĻāĻž āĻ¸ā§āĻā§āĻ°āĻŋāĻŽ āĻŦāĻž āĻāĻžāĻāĻ¨ā§āĻ¸āĻŋāĻ¸ āĻĢāĻžāĻ¯āĻŧāĻžāĻ°āĻšā§āĻ¸) āĻĄā§āĻāĻž āĻ¸āĻāĻā§āĻ°āĻš āĻ āĻĒāĻžāĻ āĻžāĻ¨ā§āĻ° āĻāĻāĻāĻŋ āĻ¸āĻšāĻ āĻāĻĒāĻžāĻ¯āĻŧ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻāĻ°ā§āĨ¤ āĻāĻā§āĻ¨ā§āĻ āĻā§āĻ°āĻŽāĻžāĻāĻ¤ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻĄāĻŋāĻ°ā§āĻā§āĻāĻ°āĻŋāĻ¤ā§ āĻĢāĻžāĻāĻ˛āĻā§āĻ˛āĻŋāĻ° āĻāĻāĻāĻŋ āĻ¸ā§āĻ āĻ¨āĻŋāĻ°ā§āĻā§āĻˇāĻŖ āĻāĻ°ā§ āĻāĻŦāĻ āĻāĻžāĻāĻ¨ā§āĻ¸āĻŋāĻ¸ā§ āĻ¨āĻ¤ā§āĻ¨ āĻĄā§āĻāĻž āĻĒāĻžāĻ āĻžāĻ¯āĻŧ;API āĻāĻ˛āĻžāĻ° āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ â āĻāĻāĻāĻŋ āĻĒāĻžāĻāĻĨāĻ¨ āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ āĻ¯āĻž API-āĻā§ āĻ āĻ¨ā§āĻ°ā§āĻ§ āĻāĻ°ā§ āĻāĻŦāĻ āĻĒā§āĻ°āĻ¤āĻŋāĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻāĻŋāĻā§ āĻāĻāĻāĻŋ āĻĢā§āĻ˛ā§āĻĄāĻžāĻ°ā§ āĻ°āĻžāĻā§ āĻ¯āĻž āĻāĻžāĻāĻ¨ā§āĻ¸āĻŋāĻ¸ āĻāĻā§āĻ¨ā§āĻ āĻĻā§āĻŦāĻžāĻ°āĻž āĻĒāĻ°ā§āĻ¯āĻŦā§āĻā§āĻˇāĻŖ āĻāĻ°āĻž āĻšāĻ¯āĻŧ;
āĻāĻžāĻāĻ¨ā§āĻ¸āĻŋāĻ¸ āĻĄā§āĻāĻž āĻ¸ā§āĻā§āĻ°ā§āĻŽ - āĻŦā§āĻ¯āĻžāĻĒāĻ āĻ¸ā§āĻā§āĻ˛āĻŋāĻ āĻā§āĻˇāĻŽāĻ¤āĻž āĻ¸āĻš āĻ°āĻŋāĻ¯āĻŧā§āĻ˛-āĻāĻžāĻāĻŽ āĻĄā§āĻāĻž āĻ¸ā§āĻā§āĻ°āĻŋāĻŽāĻŋāĻ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻž;āĻāĻžāĻāĻ¨ā§āĻ¸āĻŋāĻ¸ āĻ ā§āĻ¯āĻžāĻ¨āĻžāĻ˛āĻŋāĻāĻŋāĻā§āĻ¸ āĻāĻāĻāĻŋ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°āĻšā§āĻ¨ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻž āĻ¯āĻž āĻ°āĻŋāĻ¯āĻŧā§āĻ˛ āĻāĻžāĻāĻŽā§ āĻ¸ā§āĻā§āĻ°āĻŋāĻŽāĻŋāĻ āĻĄā§āĻāĻž āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻŖāĻā§ āĻ¸āĻšāĻ āĻāĻ°ā§āĨ¤ āĻ ā§āĻ¯āĻžāĻŽāĻžāĻāĻ¨ āĻāĻžāĻāĻ¨ā§āĻ¸āĻŋāĻ¸ āĻĄā§āĻāĻž āĻ ā§āĻ¯āĻžāĻ¨āĻžāĻ˛āĻŋāĻāĻŋāĻā§āĻ¸ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻ¸āĻāĻ¸ā§āĻĨāĻžāĻ¨āĻā§āĻ˛āĻŋ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ° āĻāĻ°ā§ āĻāĻŦāĻ āĻ¸ā§āĻŦāĻ¯āĻŧāĻāĻā§āĻ°āĻŋāĻ¯āĻŧāĻāĻžāĻŦā§ āĻāĻāĻ¤ āĻĄā§āĻāĻžāĻ° āĻ¯ā§ āĻā§āĻ¨āĻ āĻāĻ˛āĻŋāĻāĻŽ āĻĒāĻ°āĻŋāĻāĻžāĻ˛āĻ¨āĻž āĻāĻ°āĻ¤ā§ āĻ¸ā§āĻā§āĻ˛ āĻāĻ°ā§;āĻāĻĄāĻžāĻŦā§āĻ˛ā§āĻāĻ¸ āĻ˛ā§āĻ¯āĻžāĻŽā§āĻŦāĻĻāĻž â āĻāĻŽāĻ¨ āĻāĻāĻāĻŋ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻž āĻ¯āĻž āĻāĻĒāĻ¨āĻžāĻā§ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻŦā§āĻ¯āĻžāĻ āĻāĻĒ āĻŦāĻž āĻ¸ā§āĻ āĻāĻĒ āĻ¨āĻž āĻāĻ°ā§āĻ āĻā§āĻĄ āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻ āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§āĻ¯āĻŧāĨ¤ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻāĻ˛ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻāĻŽā§āĻĒāĻŋāĻāĻāĻŋāĻ āĻļāĻā§āĻ¤āĻŋ āĻ¸ā§āĻŦāĻ¯āĻŧāĻāĻā§āĻ°āĻŋāĻ¯āĻŧāĻāĻžāĻŦā§ āĻ¸ā§āĻā§āĻ˛ āĻāĻ°āĻž āĻšāĻ¯āĻŧ;āĻāĻŽāĻžāĻāĻ¨ āĻĄāĻžāĻ¯āĻŧāĻ¨āĻžāĻŽā§āĻĄāĻŋāĻŦāĻŋ - āĻā§-āĻŽāĻžāĻ¨ā§āĻ° āĻā§āĻĄāĻŧāĻž āĻāĻŦāĻ āĻ¨āĻĨāĻŋāĻā§āĻ˛āĻŋāĻ° āĻāĻāĻāĻŋ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻ¯āĻž āĻ¯ā§āĻā§āĻ¨ā§ āĻ¸ā§āĻā§āĻ˛ā§ āĻāĻ˛āĻžāĻāĻžāĻ˛ā§āĻ¨ 10 āĻŽāĻŋāĻ˛āĻŋāĻ¸ā§āĻā§āĻ¨ā§āĻĄā§āĻ° āĻāĻŽ āĻŦāĻŋāĻ˛āĻŽā§āĻŦ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻāĻ°ā§āĨ¤ DynamoDB āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻāĻĒāĻ¨āĻžāĻā§ āĻā§āĻ¨ā§ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§āĻ° āĻŦā§āĻ¯āĻŦāĻ¸ā§āĻĨāĻž, āĻĒā§āĻ¯āĻžāĻ āĻŦāĻž āĻĒāĻ°āĻŋāĻāĻžāĻ˛āĻ¨āĻž āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ āĻ¨āĻžāĨ¤ DynamoDB āĻ¸ā§āĻŦāĻ¯āĻŧāĻāĻā§āĻ°āĻŋāĻ¯āĻŧāĻāĻžāĻŦā§ āĻāĻĒāĻ˛āĻŦā§āĻ§ āĻ¸āĻāĻ¸ā§āĻĨāĻžāĻ¨āĻā§āĻ˛āĻŋāĻ° āĻĒāĻ°āĻŋāĻŽāĻžāĻŖ āĻ¸āĻžāĻŽāĻā§āĻāĻ¸ā§āĻ¯ āĻāĻ°āĻ¤ā§ āĻāĻŦāĻ āĻāĻā§āĻ āĻāĻžāĻ°ā§āĻ¯āĻā§āĻˇāĻŽāĻ¤āĻž āĻŦāĻāĻžāĻ¯āĻŧ āĻ°āĻžāĻāĻ¤ā§ āĻā§āĻŦāĻŋāĻ˛āĻā§āĻ˛āĻŋāĻā§ āĻ¸ā§āĻā§āĻ˛ āĻāĻ°ā§āĨ¤ āĻā§āĻ¨ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻĒā§āĻ°āĻļāĻžāĻ¸āĻ¨ā§āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻ¨ā§āĻ;āĻ ā§āĻ¯āĻžāĻŽāĻžāĻāĻ¨ āĻāĻ¸āĻāĻ¨āĻāĻ¸ - āĻĒā§āĻ°āĻāĻžāĻļāĻ-āĻ¸āĻžāĻŦāĻ¸ā§āĻā§āĻ°āĻžāĻāĻŦāĻžāĻ° (āĻĒāĻžāĻŦ/āĻ¸āĻžāĻŦ) āĻŽāĻĄā§āĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻĒāĻžāĻ āĻžāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖāĻ°ā§āĻĒā§ āĻĒāĻ°āĻŋāĻāĻžāĻ˛āĻŋāĻ¤ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻž, āĻ¯āĻžāĻ° āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ā§ āĻāĻĒāĻ¨āĻŋ āĻŽāĻžāĻāĻā§āĻ°ā§āĻ¸āĻžāĻ°ā§āĻāĻŋāĻ¸, āĻŦāĻŋāĻ¤āĻ°āĻŖ āĻāĻ°āĻž āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻāĻŦāĻ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°āĻšā§āĻ¨ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨āĻā§āĻ˛āĻŋāĻā§ āĻāĻ˛āĻžāĻĻāĻž āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ā§ˇ āĻŽā§āĻŦāĻžāĻāĻ˛ āĻĒā§āĻļ āĻŦāĻŋāĻā§āĻāĻĒā§āĻ¤āĻŋ, āĻāĻ¸āĻāĻŽāĻāĻ¸ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻāĻŦāĻ āĻāĻŽā§āĻ˛ā§āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻļā§āĻˇ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻĻā§āĻ° āĻāĻžāĻā§ āĻ¤āĻĨā§āĻ¯ āĻĒāĻžāĻ āĻžāĻ¤ā§ SNS āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤
āĻĒā§āĻ°āĻžāĻĨāĻŽāĻŋāĻ āĻĒā§āĻ°āĻļāĻŋāĻā§āĻˇāĻŖ
āĻĄā§āĻāĻž āĻĢā§āĻ˛ā§ āĻ
āĻ¨ā§āĻāĻ°āĻŖ āĻāĻ°āĻ¤ā§, āĻāĻŽāĻŋ Aviasales API āĻĻā§āĻŦāĻžāĻ°āĻž āĻĢā§āĻ°āĻ¤ āĻāĻ¯āĻŧāĻžāĻ°āĻ˛āĻžāĻāĻ¨ āĻāĻŋāĻāĻŋāĻā§āĻ° āĻ¤āĻĨā§āĻ¯ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻžāĻ° āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻ¯āĻŧā§āĻāĻŋāĨ¤ āĻāĻŋāĻ¤āĻ°ā§
āĻ¸ā§āĻ¤āĻ°āĻžāĻ, āĻāĻ¸ā§āĻ¨ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻ¨ āĻāĻ°ā§āĻ¨ āĻāĻŦāĻ āĻāĻŽāĻžāĻĻā§āĻ° āĻā§āĻā§āĻ¨ āĻĒāĻžāĻ¨āĨ¤
āĻāĻāĻāĻŋ āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻ āĻ¨ā§āĻ°ā§āĻ§ āĻ¨ā§āĻā§ āĻĻā§āĻāĻ¯āĻŧāĻž āĻšāĻ˛:
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 āĻ ā§āĻ¯āĻžāĻāĻžāĻāĻ¨ā§āĻ āĻāĻā§āĨ¤ āĻāĻŽāĻŋ āĻ āĻŦāĻŋāĻ˛āĻŽā§āĻŦā§ āĻāĻ āĻŦāĻŋāĻˇāĻ¯āĻŧāĻāĻŋāĻ° āĻĒā§āĻ°āĻ¤āĻŋ āĻŦāĻŋāĻļā§āĻˇ āĻĻā§āĻˇā§āĻāĻŋ āĻāĻāĻ°ā§āĻˇāĻŖ āĻāĻ°āĻ¤ā§ āĻāĻžāĻ āĻ¯ā§ āĻāĻžāĻāĻ¨ā§āĻ¸āĻŋāĻ¸ āĻāĻŦāĻ āĻāĻ¸āĻāĻŽāĻāĻ¸ā§āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻŦāĻŋāĻā§āĻāĻĒā§āĻ¤āĻŋ āĻĒāĻžāĻ āĻžāĻ¨ā§ āĻŦāĻžāĻ°ā§āĻˇāĻŋāĻ āĻ āĻ¨ā§āĻ¤āĻ°ā§āĻā§āĻā§āĻ¤ āĻ¨āĻ¯āĻŧ
āĻŦāĻŋāĻ¨āĻžāĻŽā§āĻ˛ā§āĻ¯ā§āĻ° āĻ¸ā§āĻ¤āĻ° (āĻŦāĻŋāĻ¨āĻžāĻŽā§āĻ˛ā§āĻ¯ā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°) . āĻ¤āĻŦā§ āĻ¤āĻž āĻ¸āĻ¤ā§āĻ¤ā§āĻŦā§āĻ, āĻāĻ¯āĻŧā§āĻ āĻĄāĻ˛āĻžāĻ° āĻŽāĻžāĻĨāĻžāĻ¯āĻŧ āĻ°ā§āĻā§, āĻĒā§āĻ°āĻ¸ā§āĻ¤āĻžāĻŦāĻŋāĻ¤ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽāĻāĻŋ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻāĻŦāĻ āĻāĻāĻŋāĻ° āĻ¸āĻžāĻĨā§ āĻā§āĻ˛āĻž āĻŦā§āĻļ āĻ¸āĻŽā§āĻāĻŦāĨ¤ āĻāĻŦāĻ, āĻ āĻŦāĻļā§āĻ¯āĻ, āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ¸āĻŽā§āĻĒāĻĻ āĻŽā§āĻā§ āĻĢā§āĻ˛āĻ¤ā§ āĻā§āĻ˛āĻŦā§āĻ¨ āĻ¨āĻž āĻĒāĻ°ā§ āĻ¤āĻžāĻĻā§āĻ° āĻāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻ¨ā§āĻāĨ¤
āĻ¸ā§āĻāĻžāĻā§āĻ¯āĻŦāĻļāĻ¤, 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 āĻļāĻžāĻ°ā§āĻĄ āĻ¤āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ¯āĻĨā§āĻˇā§āĻ āĻšāĻŦā§:
āĻāĻāĻ¨ āĻ¨āĻžāĻŽ āĻĻāĻŋāĻ¯āĻŧā§ āĻāĻ°ā§āĻāĻāĻŋ āĻĨā§āĻ°ā§āĻĄ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻ¯āĻžāĻ āĻŦāĻŋāĻļā§āĻˇ_āĻĒā§āĻ°āĻŦāĻžāĻš:
āĻĒā§āĻ°āĻ¯ā§āĻāĻ āĻ¸ā§āĻāĻāĻĒ
āĻāĻāĻāĻŋ āĻāĻžāĻ¸ā§āĻ āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻŖ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻĄā§āĻāĻž āĻĒā§āĻ°āĻ¯ā§āĻāĻ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ¯āĻŧāĻŽāĻŋāĻ¤ EC2 āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻ¯āĻĨā§āĻˇā§āĻāĨ¤ āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻļāĻā§āĻ¤āĻŋāĻļāĻžāĻ˛ā§, āĻŦā§āĻ¯āĻ¯āĻŧāĻŦāĻšā§āĻ˛ āĻāĻžāĻ°ā§āĻā§āĻ¯āĻŧāĻžāĻ˛ āĻŽā§āĻļāĻŋāĻ¨ āĻšāĻ¤ā§ āĻšāĻŦā§ āĻ¨āĻž; āĻāĻāĻāĻŋ āĻ¸ā§āĻĒāĻ t2.micro āĻ āĻŋāĻ āĻāĻžāĻ āĻāĻ°āĻŦā§āĨ¤
āĻā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§āĻ°ā§āĻŖ āĻĻā§āĻ°āĻˇā§āĻāĻŦā§āĻ¯: āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻāĻĒāĻ¨āĻžāĻ° āĻāĻŽā§āĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻāĻāĻŋāĻ¤ - Amazon Linux AMI 2018.03.0, āĻāĻāĻŋāĻ¤ā§ āĻĻā§āĻ°ā§āĻ¤ Kinesis āĻāĻā§āĻ¨ā§āĻ āĻāĻžāĻ˛ā§ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŽ āĻ¸ā§āĻāĻŋāĻāĻ¸ āĻ°āĻ¯āĻŧā§āĻā§āĨ¤
EC2 āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻžāĻ¤ā§ āĻ¯āĻžāĻ¨, āĻāĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻāĻžāĻ°ā§āĻā§āĻ¯āĻŧāĻžāĻ˛ āĻŽā§āĻļāĻŋāĻ¨ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§āĻ¨, t2.micro āĻāĻžāĻāĻĒ āĻ¸āĻš āĻĒāĻāĻ¨ā§āĻĻāĻ¸āĻ AMI āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻāĻ¨ āĻāĻ°ā§āĻ¨, āĻ¯āĻž āĻŦāĻŋāĻ¨āĻžāĻŽā§āĻ˛ā§āĻ¯ā§āĻ° āĻ¸ā§āĻ¤āĻ°ā§ āĻ āĻ¨ā§āĻ¤āĻ°ā§āĻā§āĻā§āĻ¤:
āĻ¨āĻ¤ā§āĻ¨ āĻ¤ā§āĻ°āĻŋ āĻāĻžāĻ°ā§āĻā§āĻ¯āĻŧāĻžāĻ˛ āĻŽā§āĻļāĻŋāĻ¨āĻāĻŋ āĻāĻžāĻāĻ¨ā§āĻ¸āĻŋāĻ¸ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻžāĻ° āĻ¸āĻžāĻĨā§ āĻāĻ¨ā§āĻāĻžāĻ°āĻ
ā§āĻ¯āĻžāĻā§āĻ āĻāĻ°āĻ¤ā§ āĻ¸āĻā§āĻˇāĻŽ āĻšāĻāĻ¯āĻŧāĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻāĻāĻŋ āĻāĻ°āĻžāĻ° āĻ
āĻ§āĻŋāĻāĻžāĻ° āĻ
āĻŦāĻļā§āĻ¯āĻ āĻĻā§āĻāĻ¯āĻŧāĻž āĻāĻāĻŋāĻ¤āĨ¤ āĻāĻāĻŋ āĻāĻ°āĻžāĻ° āĻ¸āĻ°ā§āĻŦā§āĻ¤ā§āĻ¤āĻŽ āĻāĻĒāĻžāĻ¯āĻŧ āĻšāĻ˛ āĻāĻāĻāĻŋ IAM āĻā§āĻŽāĻŋāĻāĻž āĻŦāĻ°āĻžāĻĻā§āĻĻ āĻāĻ°āĻžāĨ¤ āĻ
āĻ¤āĻāĻŦ, āĻ§āĻžāĻĒ 3: āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ° āĻāĻ¨āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨ā§āĻ¸ āĻŦāĻŋāĻŦāĻ°āĻŖ āĻ¸ā§āĻā§āĻ°āĻŋāĻ¨ā§, āĻāĻĒāĻ¨āĻžāĻ° āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻāĻ¨ āĻāĻ°āĻž āĻāĻāĻŋāĻ¤ āĻ¨āĻ¤ā§āĻ¨ IAM āĻā§āĻŽāĻŋāĻāĻž āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§āĻ¨:
EC2 āĻāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ IAM āĻā§āĻŽāĻŋāĻāĻž āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž
āĻ¯ā§ āĻāĻāĻ¨ā§āĻĄā§āĻāĻŋ āĻā§āĻ˛ā§, āĻ¸ā§āĻāĻžāĻ¨ā§ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻāĻ¨ āĻāĻ°ā§āĻ¨ āĻ¯ā§ āĻāĻŽāĻ°āĻž EC2 āĻāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻā§āĻŽāĻŋāĻāĻž āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻāĻŋ āĻāĻŦāĻ āĻ
āĻ¨ā§āĻŽāĻ¤āĻŋ āĻŦāĻŋāĻāĻžāĻā§ āĻ¯āĻžāĻ¨:
āĻĒā§āĻ°āĻļāĻŋāĻā§āĻˇāĻŖā§āĻ° āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§, āĻāĻŽāĻžāĻĻā§āĻ° āĻ¸āĻŽā§āĻĒāĻĻ āĻ
āĻ§āĻŋāĻāĻžāĻ°ā§āĻ° āĻĻāĻžāĻ¨āĻžāĻĻāĻžāĻ° āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§āĻ° āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻāĻāĻŋāĻ˛āĻ¤āĻžāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻ¯ā§āĻ¤ā§ āĻšāĻŦā§ āĻ¨āĻž, āĻ¤āĻžāĻ āĻāĻŽāĻ°āĻž Amazon āĻĻā§āĻŦāĻžāĻ°āĻž āĻĒā§āĻ°ā§āĻŦ-āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ° āĻāĻ°āĻž āĻ¨ā§āĻ¤āĻŋāĻā§āĻ˛āĻŋ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻāĻ¨ āĻāĻ°āĻŦ: AmazonKinesisFullAccess āĻāĻŦāĻ CloudWatchFullAccessāĨ¤
āĻāĻ āĻā§āĻŽāĻŋāĻāĻžāĻ° āĻāĻŋāĻā§ āĻ āĻ°ā§āĻĨāĻĒā§āĻ°ā§āĻŖ āĻ¨āĻžāĻŽ āĻĻā§āĻāĻ¯āĻŧāĻž āĻ¯āĻžāĻ, āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ: EC2-KinesisStreams-FullAccess. āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻ¨ā§āĻā§āĻ° āĻāĻŦāĻŋāĻ¤ā§ āĻĻā§āĻāĻžāĻ¨ā§ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻāĻāĻ āĻšāĻāĻ¯āĻŧāĻž āĻāĻāĻŋāĻ¤:
āĻāĻ āĻ¨āĻ¤ā§āĻ¨ āĻā§āĻŽāĻŋāĻāĻž āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻžāĻ° āĻĒāĻ°ā§, āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻāĻžāĻ°ā§āĻā§āĻ¯āĻŧāĻžāĻ˛ āĻŽā§āĻļāĻŋāĻ¨ā§āĻ° āĻāĻĻāĻžāĻšāĻ°āĻŖā§ āĻāĻāĻŋ āĻ¸āĻāĻ¯ā§āĻā§āĻ¤ āĻāĻ°āĻ¤ā§ āĻā§āĻ˛āĻŦā§āĻ¨ āĻ¨āĻž:
āĻāĻŽāĻ°āĻž āĻāĻ āĻ¸ā§āĻā§āĻ°āĻŋāĻ¨ā§ āĻ
āĻ¨ā§āĻ¯ āĻāĻŋāĻā§ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻŋ āĻ¨āĻž āĻāĻŦāĻ āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻāĻāĻ¨ā§āĻĄā§āĻ¤ā§ āĻāĻ˛ā§ āĻ¯āĻžāĻāĨ¤
āĻšāĻžāĻ°ā§āĻĄ āĻĄā§āĻ°āĻžāĻāĻ āĻ¸ā§āĻāĻŋāĻāĻ¸ āĻĄāĻŋāĻĢāĻ˛ā§āĻ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻ°ā§āĻā§ āĻĻā§āĻāĻ¯āĻŧāĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§, āĻ¸ā§āĻāĻ¸āĻžāĻĨā§ āĻā§āĻ¯āĻžāĻāĻā§āĻ˛āĻŋ (āĻ¯āĻĻāĻŋāĻ āĻā§āĻ¯āĻžāĻāĻā§āĻ˛āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻāĻžāĻ˛ āĻ āĻā§āĻ¯āĻžāĻ¸, āĻ āĻ¨ā§āĻ¤āĻ¤ āĻāĻĻāĻžāĻšāĻ°āĻŖāĻāĻŋāĻā§ āĻāĻāĻāĻŋ āĻ¨āĻžāĻŽ āĻĻāĻŋāĻ¨ āĻāĻŦāĻ āĻĒāĻ°āĻŋāĻŦā§āĻļ āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļ āĻāĻ°ā§āĻ¨)ā§ˇ
āĻāĻāĻ¨ āĻāĻŽāĻ°āĻž āĻ¸ā§āĻā§āĻĒ 6: āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ° āĻ¸āĻŋāĻāĻŋāĻāĻ°āĻŋāĻāĻŋ āĻā§āĻ°ā§āĻĒ āĻā§āĻ¯āĻžāĻŦā§ āĻāĻāĻŋ, āĻ¯ā§āĻāĻžāĻ¨ā§ āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ āĻŦāĻž āĻāĻĒāĻ¨āĻžāĻ° āĻŦāĻŋāĻĻā§āĻ¯āĻŽāĻžāĻ¨ āĻ¸āĻŋāĻāĻŋāĻāĻ°āĻŋāĻāĻŋ āĻā§āĻ°ā§āĻĒ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§, āĻ¯āĻž āĻāĻĒāĻ¨āĻžāĻā§ ssh (āĻĒā§āĻ°ā§āĻ 22) āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻāĻ¨āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨ā§āĻ¸ā§ āĻ¸āĻāĻ¯ā§āĻ āĻāĻ°āĻ¤ā§ āĻĻā§āĻ¯āĻŧāĨ¤ āĻāĻ¤ā§āĻ¸ -> āĻ¸ā§āĻāĻžāĻ¨ā§ āĻāĻŽāĻžāĻ° āĻāĻāĻĒāĻŋ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻāĻ¨ āĻāĻ°ā§āĻ¨ āĻāĻŦāĻ āĻāĻĒāĻ¨āĻŋ āĻāĻĻāĻžāĻšāĻ°āĻŖāĻāĻŋ āĻāĻžāĻ˛ā§ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤
āĻāĻāĻŋ āĻāĻ˛āĻŽāĻžāĻ¨ āĻ¸ā§āĻĨāĻŋāĻ¤āĻŋāĻ¤ā§ āĻ¸ā§āĻ¯ā§āĻāĻ āĻāĻ°āĻžāĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻžāĻĨā§ āĻāĻĒāĻ¨āĻŋ 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
āĻāĻŦāĻ āĻāĻŽāĻ°āĻž āĻāĻā§āĻ¨ā§āĻ āĻ˛āĻ āĻāĻŦāĻ āĻāĻ¯āĻŧāĻžāĻ°āĻ˛āĻžāĻāĻ¨_āĻāĻŋāĻāĻŋāĻ āĻĄā§āĻāĻž āĻ¸ā§āĻā§āĻ°ā§āĻŽā§āĻ° āĻŽāĻ¨āĻŋāĻāĻ°āĻŋāĻ āĻā§āĻ¯āĻžāĻŦā§ āĻāĻžāĻā§āĻ° āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻĻā§āĻāĻŋ:
tail -f /var/log/aws-kinesis-agent/aws-kinesis-agent.log
āĻāĻĒāĻ¨āĻŋ āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻā§āĻā§āĻ¨, āĻ¸āĻŦāĻāĻŋāĻā§ āĻāĻžāĻ āĻāĻ°ā§ āĻāĻŦāĻ āĻāĻžāĻāĻ¨ā§āĻ¸āĻŋāĻ¸ āĻāĻā§āĻ¨ā§āĻ āĻ¸āĻĢāĻ˛āĻāĻžāĻŦā§ āĻ¸ā§āĻā§āĻ°ā§āĻŽā§ āĻĄā§āĻāĻž āĻĒāĻžāĻ āĻžāĻ¯āĻŧāĨ¤ āĻāĻāĻ¨ āĻā§āĻā§āĻ¤āĻž āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ° āĻāĻ°āĻž āĻ¯āĻžāĻ.
āĻāĻžāĻāĻ¨ā§āĻ¸āĻŋāĻ¸ āĻĄā§āĻāĻž āĻ ā§āĻ¯āĻžāĻ¨āĻžāĻ˛āĻŋāĻāĻŋāĻā§āĻ¸ āĻ¸ā§āĻ āĻāĻĒ āĻāĻ°āĻž āĻšāĻā§āĻā§
āĻāĻ˛ā§āĻ¨ āĻĒā§āĻ°ā§ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§āĻ° āĻā§āĻ¨ā§āĻĻā§āĻ°ā§āĻ¯āĻŧ āĻāĻĒāĻžāĻĻāĻžāĻ¨ā§ āĻ¯āĻžāĻāĻ¯āĻŧāĻž āĻ¯āĻžāĻ - Kinesis_analytics_airlines_app āĻ¨āĻžāĻŽā§ Kinesis āĻĄā§āĻāĻž āĻ ā§āĻ¯āĻžāĻ¨āĻžāĻ˛āĻŋāĻāĻŋāĻāĻ¸ā§ āĻāĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§āĻ¨:
Kinesis āĻĄā§āĻāĻž āĻ
ā§āĻ¯āĻžāĻ¨āĻžāĻ˛āĻŋāĻāĻŋāĻā§āĻ¸ āĻāĻĒāĻ¨āĻžāĻā§ SQL āĻāĻžāĻˇāĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ Kinesis āĻ¸ā§āĻā§āĻ°ā§āĻŽ āĻĨā§āĻā§ āĻ°āĻŋāĻ¯āĻŧā§āĻ˛-āĻāĻžāĻāĻŽ āĻĄā§āĻāĻž āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻŖ āĻāĻ°āĻ¤ā§ āĻĻā§āĻ¯āĻŧāĨ¤ āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻ
āĻā§āĻ¸ā§āĻā§āĻ˛āĻŋāĻ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻž (āĻāĻžāĻāĻ¨ā§āĻ¸āĻŋāĻ¸ āĻ¸ā§āĻā§āĻ°ā§āĻŽāĻā§āĻ˛āĻŋāĻ° āĻŦāĻŋāĻĒāĻ°ā§āĻ¤ā§) āĻ¯āĻž:
- āĻ¤āĻĨā§āĻ¯ āĻā§āĻ¸ā§āĻ° āĻ āĻ¨ā§āĻ°ā§āĻ§ā§āĻ° āĻāĻŋāĻ¤ā§āĻ¤āĻŋāĻ¤ā§ āĻāĻĒāĻ¨āĻžāĻā§ āĻ¨āĻ¤ā§āĻ¨ āĻ¸ā§āĻā§āĻ°āĻŋāĻŽ (āĻāĻāĻāĻĒā§āĻ āĻ¸ā§āĻā§āĻ°āĻŋāĻŽ) āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻĻā§āĻ¯āĻŧ;
- āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻāĻā§ āĻ¯āĻžāĻāĻ¯āĻŧāĻž āĻ¤ā§āĻ°ā§āĻāĻŋ āĻ¸āĻš āĻāĻāĻāĻŋ āĻ¸ā§āĻā§āĻ°āĻŋāĻŽ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻāĻ°ā§ (āĻ¤ā§āĻ°ā§āĻāĻŋ āĻ¸ā§āĻā§āĻ°āĻŋāĻŽ);
- āĻ¸ā§āĻŦāĻ¯āĻŧāĻāĻā§āĻ°āĻŋāĻ¯āĻŧāĻāĻžāĻŦā§ āĻāĻ¨āĻĒā§āĻ āĻĄā§āĻāĻž āĻ¸ā§āĻāĻŋāĻŽ āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŖ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§ (āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§ āĻāĻāĻŋ āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¯āĻŧāĻžāĻ˛āĻŋ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻ¸āĻāĻā§āĻāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§)āĨ¤
āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻ¸āĻ¸ā§āĻ¤āĻž āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻž āĻ¨āĻ¯āĻŧ - āĻāĻžāĻā§āĻ° āĻĒā§āĻ°āĻ¤āĻŋ āĻāĻ¨ā§āĻāĻž 0.11 USD, āĻ¤āĻžāĻ āĻāĻĒāĻ¨āĻžāĻ° āĻāĻāĻŋ āĻ¸āĻžāĻŦāĻ§āĻžāĻ¨ā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻāĻāĻŋāĻ¤ āĻāĻŦāĻ āĻāĻĒāĻ¨āĻžāĻ° āĻāĻžāĻ āĻļā§āĻˇ āĻšāĻ¯āĻŧā§ āĻā§āĻ˛ā§ āĻāĻāĻŋ āĻŽā§āĻā§ āĻĢā§āĻ˛āĻž āĻāĻāĻŋāĻ¤āĨ¤
āĻāĻ¸ā§āĻ¨ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨āĻāĻŋāĻā§ āĻĄā§āĻāĻž āĻāĻ¤ā§āĻ¸ā§āĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻāĻ¯ā§āĻā§āĻ¤ āĻāĻ°āĻŋ:
āĻāĻŽāĻ°āĻž āĻ¯ā§ āĻ¸ā§āĻā§āĻ°āĻŋāĻŽāĻāĻŋāĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻāĻ¯ā§āĻ āĻāĻ°āĻ¤ā§ āĻ¯āĻžāĻā§āĻāĻŋ āĻ¤āĻž āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻāĻ¨ āĻāĻ°ā§āĻ¨ (āĻāĻ¯āĻŧāĻžāĻ°āĻ˛āĻžāĻāĻ¨_āĻāĻŋāĻāĻŋāĻ):
āĻāĻ° āĻĒāĻ°ā§, āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ IAM āĻā§āĻŽāĻŋāĻāĻž āĻ¸āĻāĻ¯ā§āĻā§āĻ¤ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ āĻ¯āĻžāĻ¤ā§ āĻ
ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨āĻāĻŋ āĻ¸ā§āĻā§āĻ°ā§āĻŽ āĻĨā§āĻā§ āĻĒāĻĄāĻŧāĻ¤ā§ āĻāĻŦāĻ āĻ¸ā§āĻā§āĻ°ā§āĻŽā§ āĻ˛āĻŋāĻāĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻāĻāĻŋ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻ
ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻ
āĻ¨ā§āĻŽāĻ¤āĻŋ āĻŦā§āĻ˛āĻā§ āĻāĻŋāĻā§ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ¨āĻž āĻāĻ°āĻžāĻ āĻ¯āĻĨā§āĻˇā§āĻ:
āĻāĻāĻ¨ āĻ¸ā§āĻā§āĻ°āĻŋāĻŽā§ āĻĄā§āĻāĻž āĻ¸ā§āĻāĻŋāĻŽāĻž āĻāĻŦāĻŋāĻˇā§āĻāĻžāĻ°ā§āĻ° āĻ
āĻ¨ā§āĻ°ā§āĻ§ āĻāĻ°āĻž āĻ¯āĻžāĻ; āĻāĻāĻŋ āĻāĻ°āĻ¤ā§, "āĻĄāĻŋāĻ¸āĻāĻāĻžāĻ° āĻ¸ā§āĻāĻŋāĻŽāĻž" āĻŦā§āĻ¤āĻžāĻŽā§ āĻā§āĻ˛āĻŋāĻ āĻāĻ°ā§āĻ¨āĨ¤ āĻĢāĻ˛āĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻāĻāĻāĻāĻŽ āĻā§āĻŽāĻŋāĻāĻž āĻāĻĒāĻĄā§āĻ āĻāĻ°āĻž āĻšāĻŦā§ (āĻāĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻŦā§) āĻāĻŦāĻ āĻāĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§ āĻ¸ā§āĻā§āĻ°ā§āĻŽā§ āĻāĻ¸āĻž āĻĄā§āĻāĻž āĻĨā§āĻā§ āĻ¸ā§āĻāĻŋāĻŽāĻž āĻ¸āĻ¨āĻžāĻā§āĻ¤āĻāĻ°āĻŖ āĻāĻžāĻ˛ā§ āĻāĻ°āĻž āĻšāĻŦā§:
āĻāĻāĻ¨ āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻ¸āĻāĻŋāĻāĻāĻ˛ āĻāĻĄāĻŋāĻāĻ°ā§ āĻ¯ā§āĻ¤ā§ āĻšāĻŦā§āĨ¤ āĻāĻĒāĻ¨āĻŋ āĻ¯āĻāĻ¨ āĻāĻ āĻŦā§āĻ¤āĻžāĻŽāĻāĻŋāĻ¤ā§ āĻā§āĻ˛āĻŋāĻ āĻāĻ°āĻŦā§āĻ¨, āĻāĻāĻāĻŋ āĻāĻāĻ¨ā§āĻĄā§ āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻŋāĻ¤ āĻšāĻŦā§ āĻ¯āĻž āĻāĻĒāĻ¨āĻžāĻā§ āĻ
ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨āĻāĻŋ āĻāĻžāĻ˛ā§ āĻāĻ°āĻ¤ā§ āĻŦāĻ˛āĻŦā§ - āĻāĻĒāĻ¨āĻŋ āĻā§ āĻ˛āĻā§āĻ āĻāĻ°āĻ¤ā§ āĻāĻžāĻ¨ āĻ¤āĻž āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻāĻ¨ āĻāĻ°ā§āĻ¨:
āĻāĻ¸āĻāĻŋāĻāĻāĻ˛ āĻāĻĄāĻŋāĻāĻ° āĻāĻāĻ¨ā§āĻĄā§āĻ¤ā§ āĻ¨āĻŋāĻā§āĻ° āĻ¸āĻšāĻ āĻā§āĻ¯ā§āĻ¯āĻŧāĻžāĻ°ā§āĻāĻŋ āĻĸā§āĻāĻžāĻ¨ āĻāĻŦāĻ āĻ¸ā§āĻ āĻāĻ¨ā§āĻĄ āĻ°āĻžāĻ¨ āĻāĻ¸āĻāĻŋāĻāĻāĻ˛ āĻ āĻā§āĻ˛āĻŋāĻ āĻāĻ°ā§āĻ¨:
CREATE OR REPLACE STREAM "DESTINATION_SQL_STREAM" ("cost" DOUBLE, "gate" VARCHAR(16));
CREATE OR REPLACE PUMP "STREAM_PUMP" AS INSERT INTO "DESTINATION_SQL_STREAM"
SELECT STREAM "cost", "gate"
FROM "SOURCE_SQL_STREAM_001"
WHERE "cost" < 5000
and "gate" = 'Aeroflot';
āĻ°āĻŋāĻ˛ā§āĻļāĻ¨āĻžāĻ˛ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§, āĻāĻĒāĻ¨āĻŋ āĻ°ā§āĻāĻ°ā§āĻĄ āĻ¯ā§āĻ āĻāĻ°āĻ¤ā§ INSERT āĻ¸ā§āĻā§āĻāĻŽā§āĻ¨ā§āĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻā§āĻŦāĻŋāĻ˛ā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ āĻāĻ°ā§āĻ¨ āĻāĻŦāĻ āĻĄā§āĻāĻž āĻā§āĻ¯ā§āĻ¯āĻŧāĻžāĻ°ā§ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ SELECT āĻ¸ā§āĻā§āĻāĻŽā§āĻ¨ā§āĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĻ¨āĨ¤ Amazon Kinesis āĻĄā§āĻāĻž āĻ ā§āĻ¯āĻžāĻ¨āĻžāĻ˛āĻŋāĻāĻŋāĻā§āĻ¸ā§, āĻāĻĒāĻ¨āĻŋ āĻ¸ā§āĻā§āĻ°ā§āĻŽ (āĻ¸ā§āĻā§āĻ°āĻŋāĻŽ) āĻāĻŦāĻ āĻĒāĻžāĻŽā§āĻĒ (PUMPs)-āĻāĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ āĻāĻ°ā§āĻ¨âāĻāĻāĻāĻŋ āĻ¸ā§āĻā§āĻ°ā§āĻŽ āĻĨā§āĻā§ āĻ āĻ¨ā§āĻ¯ āĻ¸ā§āĻā§āĻ°ā§āĻŽā§ āĻāĻāĻāĻŋ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ā§ āĻĄā§āĻāĻž āĻĸā§āĻāĻžāĻ¨ā§āĻ° āĻā§āĻ°āĻŽāĻžāĻāĻ¤ āĻ¸āĻ¨ā§āĻ¨āĻŋāĻŦā§āĻļā§āĻ° āĻ āĻ¨ā§āĻ°ā§āĻ§āĨ¤
āĻāĻĒāĻ°ā§ āĻāĻĒāĻ¸ā§āĻĨāĻžāĻĒāĻŋāĻ¤ āĻāĻ¸āĻāĻŋāĻāĻāĻ˛ āĻā§āĻ¯ā§āĻ¯āĻŧāĻžāĻ°ā§ āĻĒāĻžāĻāĻ āĻšāĻžāĻāĻžāĻ° āĻ°ā§āĻŦā§āĻ˛ā§āĻ° āĻ¨āĻŋāĻā§ āĻāĻ°ā§āĻĢā§āĻ˛āĻ āĻāĻŋāĻāĻŋāĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻāĻ°ā§āĨ¤ āĻāĻ āĻļāĻ°ā§āĻ¤āĻā§āĻ˛āĻŋ āĻĒā§āĻ°āĻŖ āĻāĻ°ā§ āĻāĻŽāĻ¨ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ°ā§āĻāĻ°ā§āĻĄ DESTINATION_SQL_STREAM āĻ¸ā§āĻā§āĻ°ā§āĻŽā§ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻž āĻšāĻŦā§ā§ˇ
āĻāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻŦā§āĻ˛āĻā§, āĻŦāĻŋāĻļā§āĻˇ_āĻ¸ā§āĻā§āĻ°āĻŋāĻŽ āĻ¸ā§āĻā§āĻ°ā§āĻŽ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻāĻ¨ āĻāĻ°ā§āĻ¨ āĻāĻŦāĻ āĻāĻ¨-āĻ
ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻ¸ā§āĻā§āĻ°ā§āĻŽ āĻ¨āĻžāĻŽ DESTINATION_SQL_STREAM āĻĄā§āĻ°āĻĒ-āĻĄāĻžāĻāĻ¨ āĻ¤āĻžāĻ˛āĻŋāĻāĻžāĻ¯āĻŧ:
āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻŽā§āĻ¯āĻžāĻ¨āĻŋāĻĒā§āĻ˛ā§āĻļāĻ¨ā§āĻ° āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻ¨ā§āĻā§āĻ° āĻāĻŦāĻŋāĻ° āĻŽāĻ¤ āĻāĻŋāĻā§ āĻšāĻāĻ¯āĻŧāĻž āĻāĻāĻŋāĻ¤:
āĻāĻāĻāĻŋ SNS āĻŦāĻŋāĻˇāĻ¯āĻŧ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻāĻŦāĻ āĻ¸āĻĻāĻ¸ā§āĻ¯āĻ¤āĻž āĻ¨ā§āĻāĻ¯āĻŧāĻž
āĻ¸āĻŋāĻŽā§āĻĒāĻ˛ āĻ¨ā§āĻāĻŋāĻĢāĻŋāĻā§āĻļāĻ¨ āĻ¸āĻžāĻ°ā§āĻāĻŋāĻ¸ā§ āĻ¯āĻžāĻ¨ āĻāĻŦāĻ āĻ¸ā§āĻāĻžāĻ¨ā§ āĻāĻ¯āĻŧāĻžāĻ°āĻ˛āĻžāĻāĻ¨ā§āĻ¸ āĻ¨āĻžāĻŽā§ āĻāĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻŦāĻŋāĻˇāĻ¯āĻŧ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§āĻ¨:
āĻāĻ āĻŦāĻŋāĻˇāĻ¯āĻŧā§ āĻ¸āĻžāĻŦāĻ¸ā§āĻā§āĻ°āĻžāĻāĻŦ āĻāĻ°ā§āĻ¨ āĻāĻŦāĻ āĻ¯ā§ āĻŽā§āĻŦāĻžāĻāĻ˛ āĻĢā§āĻ¨ āĻ¨āĻŽā§āĻŦāĻ°ā§ SMS āĻŦāĻŋāĻā§āĻāĻĒā§āĻ¤āĻŋ āĻĒāĻžāĻ āĻžāĻ¨ā§ āĻšāĻŦā§ āĻ¤āĻž āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļ āĻāĻ°ā§āĻ¨:
āĻĄāĻžāĻ¯āĻŧāĻ¨āĻžāĻŽā§āĻĄāĻŋāĻŦāĻŋāĻ¤ā§ āĻāĻāĻāĻŋ āĻā§āĻŦāĻŋāĻ˛ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§āĻ¨
āĻ¤āĻžāĻĻā§āĻ° āĻāĻ¯āĻŧāĻžāĻ°āĻ˛āĻžāĻāĻ¨_āĻāĻŋāĻāĻŋāĻ āĻ¸ā§āĻā§āĻ°ā§āĻŽ āĻĨā§āĻā§ āĻāĻžāĻāĻāĻž āĻĄā§āĻāĻž āĻ¸āĻā§āĻāĻ¯āĻŧ āĻāĻ°āĻ¤ā§, āĻāĻ¸ā§āĻ¨ āĻāĻāĻ āĻ¨āĻžāĻŽā§āĻ° āĻ¸āĻžāĻĨā§ āĻĄāĻžāĻ¯āĻŧāĻ¨āĻžāĻŽā§āĻĄāĻŋāĻŦāĻŋāĻ¤ā§ āĻāĻāĻāĻŋ āĻā§āĻŦāĻŋāĻ˛ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻŋāĨ¤ āĻāĻŽāĻ°āĻž āĻĒā§āĻ°āĻžāĻĨāĻŽāĻŋāĻ āĻā§ āĻšāĻŋāĻ¸āĻžāĻŦā§ record_id āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŦ:
āĻāĻāĻāĻŋ āĻ˛ā§āĻ¯āĻžāĻŽā§āĻŦāĻĄāĻž āĻĢāĻžāĻāĻļāĻ¨ āĻ¸āĻāĻā§āĻ°āĻžāĻšāĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻā§āĻā§
āĻāĻ¸ā§āĻ¨ āĻāĻžāĻ˛ā§āĻā§āĻāĻ° āĻ¨āĻžāĻŽā§ āĻāĻāĻāĻŋ āĻ˛ā§āĻ¯āĻžāĻŽā§āĻŦāĻĄāĻž āĻĢāĻžāĻāĻļāĻ¨ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻŋ, āĻ¯āĻžāĻ° āĻāĻžāĻ āĻšāĻŦā§ airline_tickets āĻ¸ā§āĻā§āĻ°ā§āĻŽ āĻĒā§āĻ˛ āĻāĻ°āĻž āĻāĻŦāĻ, āĻ¯āĻĻāĻŋ āĻ¸ā§āĻāĻžāĻ¨ā§ āĻ¨āĻ¤ā§āĻ¨ āĻ°ā§āĻāĻ°ā§āĻĄ āĻĒāĻžāĻāĻ¯āĻŧāĻž āĻ¯āĻžāĻ¯āĻŧ, āĻāĻ āĻ°ā§āĻāĻ°ā§āĻĄāĻā§āĻ˛āĻŋ DynamoDB āĻā§āĻŦāĻŋāĻ˛ā§ āĻ¸āĻ¨ā§āĻ¨āĻŋāĻŦā§āĻļ āĻāĻ°āĻžāĻ¨āĨ¤ āĻ¸ā§āĻĒāĻˇā§āĻāĻ¤āĻ, āĻĄāĻŋāĻĢāĻ˛ā§āĻ āĻ āĻ§āĻŋāĻāĻžāĻ° āĻāĻžāĻĄāĻŧāĻžāĻ, āĻāĻ āĻ˛ā§āĻ¯āĻžāĻŽā§āĻŦāĻĄāĻžāĻā§ āĻ āĻŦāĻļā§āĻ¯āĻ Kinesis āĻĄā§āĻāĻž āĻ¸ā§āĻā§āĻ°ā§āĻŽā§ āĻĒāĻĄāĻŧāĻžāĻ° āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻāĻŦāĻ DynamoDB-āĻ¤ā§ āĻ˛ā§āĻāĻžāĻ° āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻĨāĻžāĻāĻ¤ā§ āĻšāĻŦā§āĨ¤
āĻ¸āĻāĻā§āĻ°āĻžāĻšāĻ āĻ˛ā§āĻ¯āĻžāĻŽā§āĻŦāĻĄāĻž āĻĢāĻžāĻāĻļāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ IAM āĻā§āĻŽāĻŋāĻāĻž āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž
āĻĒā§āĻ°āĻĨāĻŽā§, āĻāĻ¸ā§āĻ¨ āĻ˛ā§āĻ¯āĻžāĻŽā§āĻŦāĻĄāĻž-āĻāĻŋāĻā§āĻ āĻĒā§āĻ°āĻ¸ā§āĻ¸āĻŋāĻ āĻ°ā§āĻ˛ āĻ¨āĻžāĻŽā§ āĻ˛ā§āĻ¯āĻžāĻŽā§āĻŦāĻĄāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻāĻāĻāĻāĻŽ āĻā§āĻŽāĻŋāĻāĻž āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻŋ:
āĻĒāĻ°ā§āĻā§āĻˇāĻžāĻ° āĻāĻĻāĻžāĻšāĻ°āĻŖā§āĻ° āĻāĻ¨ā§āĻ¯, āĻĒā§āĻ°ā§āĻŦ-āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ° āĻāĻ°āĻž AmazonKinesisReadOnlyAccess āĻāĻŦāĻ AmazonDynamoDBFullAccess āĻ¨ā§āĻ¤āĻŋāĻā§āĻ˛āĻŋ āĻŦā§āĻļ āĻāĻĒāĻ¯ā§āĻā§āĻ¤, āĻ¯ā§āĻŽāĻ¨āĻāĻŋ āĻ¨ā§āĻā§āĻ° āĻāĻŦāĻŋāĻ¤ā§ āĻĻā§āĻāĻžāĻ¨ā§ āĻšāĻ¯āĻŧā§āĻā§:
āĻ¯āĻāĻ¨ āĻ¨āĻ¤ā§āĻ¨ āĻāĻ¨ā§āĻā§āĻ°āĻŋ āĻāĻ¯āĻŧāĻžāĻ°āĻ˛āĻžāĻāĻ¨_āĻ¸ā§āĻā§āĻ°āĻŋāĻŽā§ āĻĒā§āĻ°āĻŦā§āĻļ āĻāĻ°ā§ āĻ¤āĻāĻ¨ āĻāĻ āĻ˛ā§āĻ¯āĻžāĻŽā§āĻŦāĻĄāĻž āĻāĻžāĻāĻ¨ā§āĻ¸āĻŋāĻ¸ āĻĨā§āĻā§ āĻāĻāĻāĻŋ āĻā§āĻ°āĻŋāĻāĻžāĻ° āĻĻā§āĻŦāĻžāĻ°āĻž āĻāĻžāĻ˛ā§ āĻāĻ°āĻž āĻāĻāĻŋāĻ¤, āĻ¤āĻžāĻ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻā§āĻ°āĻŋāĻāĻžāĻ° āĻ¯ā§āĻ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§:
āĻ¯āĻž āĻ
āĻŦāĻļāĻŋāĻˇā§āĻ āĻĨāĻžāĻā§ āĻ¤āĻž āĻšāĻ˛ āĻā§āĻĄāĻāĻŋ āĻ¸āĻ¨ā§āĻ¨āĻŋāĻŦā§āĻļ āĻāĻ°āĻž āĻāĻŦāĻ āĻ˛ā§āĻ¯āĻžāĻŽā§āĻŦāĻĄāĻž āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°āĻžāĨ¤
"""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()
āĻāĻāĻāĻŋ āĻ˛ā§āĻ¯āĻžāĻŽā§āĻŦāĻĄāĻž āĻĢāĻžāĻāĻļāĻ¨ āĻ¨ā§āĻāĻŋāĻĢāĻžāĻ¯āĻŧāĻžāĻ° āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻā§āĻā§
āĻĻā§āĻŦāĻŋāĻ¤ā§āĻ¯āĻŧ āĻ˛ā§āĻ¯āĻžāĻŽā§āĻŦāĻĄāĻž āĻĢāĻžāĻāĻļāĻ¨, āĻ¯āĻž āĻĻā§āĻŦāĻŋāĻ¤ā§āĻ¯āĻŧ āĻ¸ā§āĻā§āĻ°āĻŋāĻŽ (āĻŦāĻŋāĻļā§āĻˇ_āĻ¸ā§āĻā§āĻ°āĻŋāĻŽ) āĻ¨āĻŋāĻ°ā§āĻā§āĻˇāĻŖ āĻāĻ°āĻŦā§ āĻāĻŦāĻ āĻāĻ¸āĻāĻ¨āĻāĻ¸-āĻ āĻāĻāĻāĻŋ āĻŦāĻŋāĻā§āĻāĻĒā§āĻ¤āĻŋ āĻĒāĻžāĻ āĻžāĻŦā§, āĻāĻāĻāĻāĻžāĻŦā§ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§āĨ¤ āĻ āĻ¤āĻāĻŦ, āĻāĻ āĻ˛ā§āĻ¯āĻžāĻŽā§āĻŦāĻĄāĻžāĻā§ āĻ āĻŦāĻļā§āĻ¯āĻ āĻāĻžāĻāĻ¨ā§āĻ¸āĻŋāĻ¸ āĻĨā§āĻā§ āĻĒāĻĄāĻŧāĻžāĻ° āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻĨāĻžāĻāĻ¤ā§ āĻšāĻŦā§ āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻĒā§āĻ°āĻĻāĻ¤ā§āĻ¤ SNS āĻŦāĻŋāĻˇāĻ¯āĻŧā§ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻĒāĻžāĻ āĻžāĻ¤ā§ āĻšāĻŦā§, āĻ¯āĻž SNS āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻž āĻĻā§āĻŦāĻžāĻ°āĻž āĻāĻ āĻŦāĻŋāĻˇāĻ¯āĻŧā§āĻ° āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻā§āĻ°āĻžāĻšāĻāĻĻā§āĻ° (āĻāĻŽā§āĻ˛, āĻāĻ¸āĻāĻŽāĻāĻ¸, āĻāĻ¤ā§āĻ¯āĻžāĻĻāĻŋ) āĻĒāĻžāĻ āĻžāĻ¨ā§ āĻšāĻŦā§āĨ¤
āĻāĻāĻāĻŋ āĻāĻāĻāĻāĻŽ āĻā§āĻŽāĻŋāĻāĻž āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž
āĻĒā§āĻ°āĻĨāĻŽāĻ¤, āĻāĻŽāĻ°āĻž āĻāĻ āĻ˛ā§āĻ¯āĻžāĻŽā§āĻŦāĻĄāĻžāĻ° āĻāĻ¨ā§āĻ¯ IAM āĻā§āĻŽāĻŋāĻāĻž Lambda-KinesisAlarm āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻŋ, āĻāĻŦāĻ āĻ¤āĻžāĻ°āĻĒāĻ°ā§ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻ
ā§āĻ¯āĻžāĻ˛āĻžāĻ°ā§āĻŽ_āĻ¨ā§āĻāĻŋāĻĢāĻžāĻ¯āĻŧāĻžāĻ° āĻ˛ā§āĻ¯āĻžāĻŽā§āĻŦāĻĄāĻžāĻā§ āĻāĻ āĻā§āĻŽāĻŋāĻāĻž āĻ
āĻ°ā§āĻĒāĻŖ āĻāĻ°āĻŋ:
āĻ¸ā§āĻĒā§āĻļāĻžāĻ˛_āĻ¸ā§āĻā§āĻ°āĻŋāĻŽā§ āĻĒā§āĻ°āĻŦā§āĻļā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¨āĻ¤ā§āĻ¨ āĻ°ā§āĻāĻ°ā§āĻĄā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻ āĻ˛ā§āĻ¯āĻžāĻŽā§āĻŦāĻĄāĻž āĻāĻāĻāĻŋ āĻā§āĻ°āĻŋāĻāĻžāĻ°ā§ āĻāĻžāĻ āĻāĻ°āĻž āĻāĻāĻŋāĻ¤, āĻ¤āĻžāĻ āĻāĻĒāĻ¨āĻžāĻā§ āĻā§āĻ°āĻŋāĻāĻžāĻ°āĻāĻŋāĻā§ āĻāĻāĻāĻāĻžāĻŦā§ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ āĻ¯ā§āĻŽāĻ¨āĻāĻŋ āĻāĻŽāĻ°āĻž āĻāĻžāĻ˛ā§āĻā§āĻāĻ° āĻ˛ā§āĻ¯āĻžāĻŽā§āĻŦāĻĄāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻ°ā§āĻāĻŋāĨ¤
āĻāĻ āĻ˛ā§āĻ¯āĻžāĻŽā§āĻŦāĻĄāĻž āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ° āĻāĻ°āĻž āĻ¸āĻšāĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻāĻ¸ā§āĻ¨ āĻāĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻĒāĻ°āĻŋāĻŦā§āĻļ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻļā§āĻ˛ - TOPIC_ARN, āĻ¯ā§āĻāĻžāĻ¨ā§ āĻāĻŽāĻ°āĻž āĻāĻ¯āĻŧāĻžāĻ°āĻ˛āĻžāĻāĻ¨ā§āĻ¸ āĻŦāĻŋāĻˇāĻ¯āĻŧā§āĻ° ANR (Amazon Recourse Names) āĻ°āĻžāĻāĻŋ:
āĻāĻŦāĻ āĻ˛ā§āĻ¯āĻžāĻŽā§āĻŦāĻĄāĻž āĻā§āĻĄ āĻ¸āĻ¨ā§āĻ¨āĻŋāĻŦā§āĻļ āĻāĻ°āĻžāĻ¨, āĻāĻāĻŋ āĻŽā§āĻā§āĻ āĻāĻāĻŋāĻ˛ āĻ¨āĻ¯āĻŧ:
import boto3
import base64
import os
SNS_CLIENT = boto3.client('sns')
TOPIC_ARN = os.environ['TOPIC_ARN']
def lambda_handler(event, context):
try:
SNS_CLIENT.publish(TopicArn=TOPIC_ARN,
Message='Hi! I have found an interesting stuff!',
Subject='Airline tickets alarm')
print('Alarm message has been successfully delivered')
except Exception as err:
print('Delivery failure', str(err))
āĻŽāĻ¨ā§ āĻšāĻā§āĻā§ āĻāĻāĻžāĻ¨ā§āĻ āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¯āĻŧāĻžāĻ˛ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻ¸āĻŽā§āĻĒāĻ¨ā§āĻ¨ āĻšāĻ¯āĻŧā§āĻā§āĨ¤ āĻ¯āĻž āĻ āĻŦāĻļāĻŋāĻˇā§āĻ āĻĨāĻžāĻā§ āĻ¤āĻž āĻšāĻ˛ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻž āĻāĻŦāĻ āĻ¨āĻŋāĻļā§āĻāĻŋāĻ¤ āĻāĻ°āĻž āĻ¯ā§ āĻāĻŽāĻ°āĻž āĻ¸āĻŦāĻāĻŋāĻā§ āĻ¸āĻ āĻŋāĻāĻāĻžāĻŦā§ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ° āĻāĻ°ā§āĻāĻŋāĨ¤
Terraform āĻā§āĻĄ āĻĨā§āĻā§ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨
āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤āĻŋ
āĻāĻĒāĻ¨āĻŋ āĻŦāĻŋāĻ¤āĻ°āĻŖ āĻĄāĻžāĻāĻ¨āĻ˛ā§āĻĄ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨
āĻā§āĻāĻžāĻŦā§ āĻāĻžāĻ˛āĻžāĻŦā§āĻ¨
āĻĒā§āĻ°āĻāĻ˛ā§āĻĒā§āĻ° āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻā§āĻĄ āĻšāĻ˛
āĻā§āĻ°āĻžāĻĢāĻ°ā§āĻŽ āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ā§ āĻā§āĻ˛āĻžāĻāĻĄā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻā§ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻā§ āĻ¤āĻž āĻĻā§āĻāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻĒāĻ°āĻŋāĻāĻžāĻ āĻžāĻŽā§ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ā§āĻ° āĻāĻā§ āĻĒāĻ°āĻŋāĻāĻ˛ā§āĻĒāĻ¨āĻž āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻāĻžāĻ˛āĻžāĻ¨ā§ āĻāĻāĻāĻŋ āĻāĻžāĻ˛ āĻ āĻ¨ā§āĻļā§āĻ˛āĻ¨:
terraform.exe plan
āĻŦāĻŋāĻā§āĻāĻĒā§āĻ¤āĻŋ āĻĒāĻžāĻ āĻžāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻāĻāĻŋ āĻĢā§āĻ¨ āĻ¨āĻŽā§āĻŦāĻ° āĻ˛āĻŋāĻāĻ¤ā§ āĻŦāĻ˛āĻž āĻšāĻŦā§āĨ¤ āĻāĻ āĻĒāĻ°ā§āĻ¯āĻžāĻ¯āĻŧā§ āĻāĻāĻŋ āĻĒā§āĻ°āĻŦā§āĻļ āĻāĻ°āĻž āĻāĻŦāĻļā§āĻ¯āĻ āĻ¨āĻ¯āĻŧāĨ¤
āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽā§āĻ° āĻ
āĻĒāĻžāĻ°ā§āĻļāĻ¨ āĻĒāĻ°āĻŋāĻāĻ˛ā§āĻĒāĻ¨āĻž āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻŖ āĻāĻ°ā§, āĻāĻŽāĻ°āĻž āĻ¸āĻāĻ¸ā§āĻĨāĻžāĻ¨ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻļā§āĻ°ā§ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋ:
terraform.exe apply
āĻāĻ āĻāĻŽāĻžāĻ¨ā§āĻĄāĻāĻŋ āĻĒāĻžāĻ āĻžāĻ¨ā§āĻ° āĻĒāĻ°ā§, āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻŦāĻžāĻ° āĻāĻāĻāĻŋ āĻĢā§āĻ¨ āĻ¨āĻŽā§āĻŦāĻ° āĻ˛āĻŋāĻāĻ¤ā§ āĻŦāĻ˛āĻž āĻšāĻŦā§; āĻ¯āĻāĻ¨ āĻāĻžāĻ°ā§āĻ¯ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨ āĻāĻ°āĻžāĻ° āĻŦāĻŋāĻˇāĻ¯āĻŧā§ āĻāĻāĻāĻŋ āĻĒā§āĻ°āĻļā§āĻ¨ āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻŋāĻ¤ āĻšāĻ¯āĻŧ āĻ¤āĻāĻ¨ "āĻšā§āĻ¯āĻžāĻ" āĻĄāĻžāĻ¯āĻŧāĻžāĻ˛ āĻāĻ°ā§āĻ¨āĨ¤ āĻāĻāĻŋ āĻāĻĒāĻ¨āĻžāĻā§ āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻ āĻŦāĻāĻžāĻ āĻžāĻŽā§ āĻ¸ā§āĻ āĻāĻĒ āĻāĻ°āĻ¤ā§, EC2 āĻāĻ° āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨ āĻāĻ°āĻ¤ā§, āĻ˛ā§āĻ¯āĻžāĻŽā§āĻŦāĻĄāĻž āĻĢāĻžāĻāĻļāĻ¨ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻ¤ā§ āĻĻā§āĻ¯āĻŧ āĻāĻ¤ā§āĻ¯āĻžāĻĻāĻŋāĨ¤
āĻā§āĻ°āĻžāĻĢāĻ°ā§āĻŽ āĻā§āĻĄā§āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ¸āĻāĻ¸ā§āĻĨāĻžāĻ¨ āĻ¸āĻĢāĻ˛āĻāĻžāĻŦā§ āĻ¤ā§āĻ°āĻŋ āĻšāĻāĻ¯āĻŧāĻžāĻ° āĻĒāĻ°ā§, āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻžāĻāĻ¨ā§āĻ¸āĻŋāĻ¸ āĻ ā§āĻ¯āĻžāĻ¨āĻžāĻ˛āĻŋāĻāĻŋāĻā§āĻ¸ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ā§āĻ° āĻŦāĻŋāĻļāĻĻ āĻŦāĻŋāĻŦāĻ°āĻŖā§ āĻ¯ā§āĻ¤ā§ āĻšāĻŦā§ (āĻĻā§āĻ°ā§āĻāĻžāĻā§āĻ¯āĻŦāĻļāĻ¤, āĻāĻŽāĻŋ āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ āĻā§āĻĄ āĻĨā§āĻā§ āĻāĻāĻŋ āĻā§āĻāĻžāĻŦā§ āĻāĻ°āĻŦ āĻ¤āĻž āĻā§āĻāĻā§ āĻĒāĻžāĻāĻ¨āĻŋ)āĨ¤
āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻāĻžāĻ˛ā§ āĻāĻ°ā§āĻ¨:
āĻāĻ° āĻĒāĻ°ā§, āĻĄā§āĻ°āĻĒ-āĻĄāĻžāĻāĻ¨ āĻ¤āĻžāĻ˛āĻŋāĻāĻž āĻĨā§āĻā§ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻāĻ¨ āĻāĻ°ā§ āĻāĻĒāĻ¨āĻžāĻā§ āĻ¸ā§āĻĒāĻˇā§āĻāĻāĻžāĻŦā§ āĻāĻ¨-āĻ
ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻ¸ā§āĻā§āĻ°āĻŋāĻŽ āĻ¨āĻžāĻŽ āĻ¸ā§āĻ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§:
āĻāĻāĻ¨ āĻ¸āĻŦāĻāĻŋāĻā§ āĻ¯ā§āĻ¤ā§ āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤.
āĻāĻŦā§āĻĻāĻ¨ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻž āĻšāĻā§āĻā§
āĻāĻĒāĻ¨āĻŋ āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¯āĻŧāĻžāĻ˛āĻŋ āĻŦāĻž Terraform āĻā§āĻĄā§āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽāĻāĻŋ āĻ¯ā§āĻāĻžāĻŦā§ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°ā§āĻā§āĻ¨ āĻ¤āĻž āĻ¨āĻŋāĻ°ā§āĻŦāĻŋāĻļā§āĻˇā§, āĻāĻāĻŋ āĻāĻāĻ āĻāĻžāĻ āĻāĻ°āĻŦā§āĨ¤
āĻāĻŽāĻ°āĻž SSH-āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ EC2 āĻāĻžāĻ°ā§āĻā§āĻ¯āĻŧāĻžāĻ˛ āĻŽā§āĻļāĻŋāĻ¨ā§ āĻ˛āĻ āĻāĻ¨ āĻāĻ°āĻŋ āĻ¯ā§āĻāĻžāĻ¨ā§ Kinesis Agent āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻž āĻāĻā§ āĻāĻŦāĻ api_caller.py āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ āĻāĻžāĻ˛āĻžāĻ¨
sudo ./api_caller.py TOKEN
āĻāĻĒāĻ¨āĻžāĻā§ āĻ¯āĻž āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ āĻ¤āĻž āĻšāĻ˛ āĻāĻĒāĻ¨āĻžāĻ° āĻ¨āĻŽā§āĻŦāĻ°ā§ āĻāĻāĻāĻŋ SMS āĻāĻ° āĻāĻ¨ā§āĻ¯ āĻ āĻĒā§āĻā§āĻˇāĻž āĻāĻ°ā§āĻ¨:
SMS - āĻĒā§āĻ°āĻžāĻ¯āĻŧ 1 āĻŽāĻŋāĻ¨āĻŋāĻā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻĢā§āĻ¨ā§ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻāĻŋ āĻāĻ¸ā§:
āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§, āĻāĻ°āĻ āĻŦāĻŋāĻļāĻĻ āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻŖā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ°ā§āĻāĻ°ā§āĻĄāĻā§āĻ˛āĻŋ DynamoDB āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§ āĻ¸āĻāĻ°āĻā§āĻˇāĻŋāĻ¤ āĻšāĻ¯āĻŧā§āĻā§ āĻāĻŋāĻ¨āĻž āĻ¤āĻž āĻĻā§āĻāĻ¤ā§ āĻŦāĻžāĻāĻŋ āĻ°āĻ¯āĻŧā§āĻā§āĨ¤ āĻāĻ¯āĻŧāĻžāĻ°āĻ˛āĻžāĻāĻ¨_āĻāĻŋāĻāĻŋāĻ āĻā§āĻŦāĻŋāĻ˛ā§ āĻĒā§āĻ°āĻžāĻ¯āĻŧ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤ āĻĄā§āĻāĻž āĻ°āĻ¯āĻŧā§āĻā§:
āĻāĻĒāĻ¸āĻāĻšāĻžāĻ°
āĻāĻžāĻ āĻāĻ˛āĻžāĻāĻžāĻ˛ā§āĻ¨, āĻ ā§āĻ¯āĻžāĻŽāĻžāĻāĻ¨ āĻāĻžāĻāĻ¨ā§āĻ¸āĻŋāĻ¸ā§āĻ° āĻāĻĒāĻ° āĻāĻŋāĻ¤ā§āĻ¤āĻŋ āĻāĻ°ā§ āĻāĻāĻāĻŋ āĻ āĻ¨āĻ˛āĻžāĻāĻ¨ āĻĄā§āĻāĻž āĻĒā§āĻ°āĻ¸ā§āĻ¸āĻŋāĻ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛āĨ¤ āĻāĻ¸āĻāĻŋāĻāĻāĻ˛ āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻāĻžāĻāĻ¨ā§āĻ¸āĻŋāĻ¸ āĻĄā§āĻāĻž āĻ¸ā§āĻā§āĻ°ā§āĻŽ āĻāĻŦāĻ āĻ°āĻŋāĻ¯āĻŧā§āĻ˛-āĻāĻžāĻāĻŽ āĻ ā§āĻ¯āĻžāĻ¨āĻžāĻ˛āĻŋāĻāĻŋāĻā§āĻ¸ āĻāĻžāĻāĻ¨ā§āĻ¸āĻŋāĻ¸ āĻ ā§āĻ¯āĻžāĻ¨āĻžāĻ˛āĻŋāĻāĻŋāĻā§āĻ¸ā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻāĻ¨ā§āĻ¸āĻŋāĻ¸ āĻāĻā§āĻ¨ā§āĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻžāĻ° āĻŦāĻŋāĻāĻ˛ā§āĻĒāĻā§āĻ˛āĻŋ, āĻ¸ā§āĻāĻ¸āĻžāĻĨā§ āĻ āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ AWS āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻžāĻā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻĨā§ āĻ ā§āĻ¯āĻžāĻŽāĻžāĻāĻ¨ āĻāĻžāĻāĻ¨ā§āĻ¸āĻŋāĻ¸ā§āĻ° āĻŽāĻŋāĻĨāĻ¸ā§āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻŦāĻŋāĻŦā§āĻāĻ¨āĻž āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛āĨ¤
āĻāĻŽāĻ°āĻž āĻāĻĒāĻ°ā§āĻ° āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽāĻāĻŋāĻā§ āĻĻā§āĻāĻŋ āĻāĻĒāĻžāĻ¯āĻŧā§ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°ā§āĻāĻŋ: āĻāĻāĻāĻŋ āĻŦāĻ°āĻ āĻĻā§āĻ°ā§āĻ āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¯āĻŧāĻžāĻ˛ āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻĻā§āĻ°ā§āĻ¤ āĻā§āĻ°āĻžāĻĢāĻ°ā§āĻŽ āĻā§āĻĄ āĻĨā§āĻā§āĨ¤
āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒ āĻāĻ¤ā§āĻ¸ āĻā§āĻĄ āĻāĻĒāĻ˛āĻŦā§āĻ§
āĻāĻŽāĻŋ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻāĻŋ āĻ¨āĻŋāĻ¯āĻŧā§ āĻāĻ˛ā§āĻāĻ¨āĻž āĻāĻ°āĻ¤ā§ āĻĒā§āĻ°ā§ āĻā§āĻļāĻŋ, āĻāĻŽāĻŋ āĻāĻĒāĻ¨āĻžāĻ° āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ āĻĒā§āĻā§āĻˇāĻž āĻāĻ°āĻāĻŋāĨ¤ āĻāĻ āĻ¨āĻŽā§āĻ˛āĻ āĻ¸āĻŽāĻžāĻ˛ā§āĻāĻ¨āĻž āĻāĻļāĻž āĻāĻ°āĻāĻŋāĨ¤
āĻāĻŽāĻŋ āĻāĻĒāĻ¨āĻžāĻā§ āĻ¸āĻžāĻĢāĻ˛ā§āĻ¯ āĻāĻžāĻŽāĻ¨āĻž āĻāĻ°āĻŋ!
āĻāĻ¤ā§āĻ¸: www.habr.com