рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рд▓рд╛рдореНрдмрд╛ рдЗрди рдПрдХреНрд╢рдиред рднрд╛рдЧ 2: рд╡рд┐рдХрд╛рд╕ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ рдЬрд╛рдирдирд╛



рдпрд╣ рдЧрд╛рдЗрдб рд╕рд░реНрд╡рд░ рд░рд╣рд┐рдд рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЕрдиреБрднрд╡ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИ, рд╕рд╛рде рд╣реА рдЙрдиреНрд╣реЗрдВ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╕рдордп рдмреИрд╕рд╛рдЦреА рдФрд░ рд╕рд╛рдЗрдХрд┐рд▓ рдХреЗ рдмреАрдЪ рдкреИрдВрддрд░реЗрдмрд╛рдЬрд╝реАред рдЬрдм рдореИрдВрдиреЗ рдкрд╣рд▓реА рдмрд╛рд░ рд╕рд░реНрд╡рд░ рд░рд╣рд┐рдд-рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛, рддреЛ рдореБрдЭреЗ рдЕрдкрдиреЗ рд╣рд╛рдереЛрдВ рд╕реЗ рд╕рдм рдХреБрдЫ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдкрдбрд╝рд╛, рд╕реНрдерд╛рдиреАрдп рд╡рд┐рдХрд╛рд╕ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕реНрдкрд╖реНрдЯ рдЧрд╛рдЗрдб рдпрд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЙрдкрдХрд░рдг рдирд╣реАрдВ рдереЗред

рдЕрдм рд╕реНрдерд┐рддрд┐ рдмрджрд▓ рд░рд╣реА рд╣реИ: рдЙрдкрдХрд░рдг рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд▓рдЧреЗ, рд▓реЗрдХрд┐рди рдЙрдирдХреЗ рдЙрдкрдпреЛрдЧ рдкрд░ рдореИрдиреБрдЕрд▓ рдЦреЛрдЬрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рджрд┐рдЦрд╛рдКрдВрдЧрд╛ рдХрд┐ рдирдИ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛ рдЬрд╛рдПред рдЖрдк рдЖрд╕рд╛рдиреА рд╕реЗ рдЗрд╕рдореЗрдВ рдорд╣рд╛рд░рдд рд╣рд╛рд╕рд┐рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдФрд░ рдмрдЧреЛрдВ рдХреЗ рдЖрд╕-рдкрд╛рд╕ рдкрд╣реБрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рдирдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВ "рднрд╛рдЧреНрдпрд╢рд╛рд▓реА" рдерд╛ред

рдЖрдк рд╕реАрдЦреЗрдВрдЧреЗ рдХрд┐ AWS, SAM-CLI рдФрд░ IntelljIDEA рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрдВрд╕реЛрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреИрд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПред рдореИрдВ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рдмрд╛рдд рдХрд░реВрдВрдЧрд╛: рдПрдХреАрдХрд░рдг, E2E рдФрд░ рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рдФрд░ рдЕрдВрдд рдореЗрдВ, рд╣рдо рдЪрд░реНрдЪрд╛ рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рдорд╛рдзрд╛рди рдореЗрдВ рдХрд┐рддрдирд╛ рдЦрд░реНрдЪ рд╣реЛрдЧрд╛ (рд╕реНрдкреЙрдЗрд▓рд░: рдЖрдк рдЗрд╕ рдкрд░ рдмрд╣реБрдд рдмрдЪрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)ред

рдпрд╣ рдЖрд▓реЗрдЦ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ рдЬреЛ рд╕рд░реНрд╡рд░ рд░рд╣рд┐рдд рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЕрднреА рддрдХ рдЗрд╕рдХреЗ рдЙрдкрдХрд░рдг рдФрд░ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реИрдВред


рдХреНрдпрд╛ рдЪрд░реНрдЪрд╛ рд╣реЛрдЧреА


рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░! рдореЗрд░рд╛ рдирд╛рдо рдЕрд▓реЗрдХреНрдЬреЗрдВрдбрд░ рдЧреНрд░реБрдЬрд╝рджреЗрд╡ рд╣реИ, рдФрд░ рдореБрдЭреЗ AWS рд▓реИрдореНрдмреНрдбрд╛ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╕рд░реНрд╡рд░ рд░рд╣рд┐рдд рд╕рдорд╛рдзрд╛рди рдХреЗ рдЙрдкрдпреЛрдЧ рдФрд░ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓реЗрдЦ рдХрд╛ рджреВрд╕рд░рд╛ рднрд╛рдЧ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреА рдХреГрдкрд╛ рд╣реИред рдЕрдЧрд▓реА рдХрдбрд╝реА рдореЗрдВ, рд╣рдо рдкрд╣рд▓реЗ рднрд╛рдЧ рд╕реЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд╡рд┐рдХрд╛рд╕ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХреЗ рддрд░реАрдХреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ ( AWS рд▓реИрдореНрдмреНрдбрд╛ рдЗрди рдПрдХреНрд╢рди 11 рдЬрд╛рд╡рд╛ рдореЗрдВред рд╣рдо "рдЙрддреНрдкрд╛рджрди" рдореЗрдВ рд╕рд░реНрд╡рд░ рд░рд╣рд┐рдд рдкрд░ рдЬрд╛рдПрдБ )ред

рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдХреЗ рдкреНрд░рдХрд╛рд╢рди рдХреЗ рдмрд╛рдж рд╕реЗ, рдкрд░реАрдХреНрд╖рдг рдЖрд╡реЗрджрди рдХреЛ рдереЛрдбрд╝рд╛ рдирдпрд╛ рд░реВрдк рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЦреНрдп рдЕрд░реНрде рд╕рдорд╛рди рд╣реИред рдпрд╣ рдПрдХ рддреБрдЪреНрдЫ HTML рдлреЙрд░реНрдо рд╣реИ "рд╣рдорд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд░реЗрдВ", рдЬреЛ HTTP рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЧреЗрдЯрд╡реЗ рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рдлреЙрд░реНрдо рд╕реЗ рдбреЗрдЯрд╛ рднреЗрдЬрддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдмрджрд▓реЗ рдореЗрдВ, AWS рд▓реИрдореНрдмреНрдбрд╛ рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдЕрдиреБрд░реЛрдз рдХреЛ рдкреНрд░реЙрдХреНрд╕реА рдХрд░рддрд╛ рд╣реИред рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рджреМрд░рд╛рди, рд▓реИрдореНрдмреНрдбрд╛ рдбрд╛рдпрдирд╛рдореЛрдбреАрдмреА рдЯреЗрдмрд▓ рдкрд░ рдбреЗрдЯрд╛ рд▓рд┐рдЦрддрд╛ рд╣реИ рдФрд░ рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рдПрд╕рдИрдПрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдкрддреНрд░ рднреЗрдЬрддрд╛ рд╣реИред рдШрдЯрдХ рдЖрд░реЗрдЦ рдиреАрдЪреЗ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдЕрд╡рдпрд╡ рдЖрд░реЗрдЦ


рд╕рд╛рдордЧреНрд░реА


  1. AWS рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрдВрд╕реЛрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рдХрд╛рд╕
  2. рдПрд╕рдПрдПрдо-рд╕реАрдПрд▓рдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╡рд┐рдХрд╛рд╕
  3. IntelljIDEA рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╡рд┐рдХрд╛рд╕
  4. рдкрд░реАрдХреНрд╖рдг рдХреЗ рдкреНрд░рдХрд╛рд░
  5. рд╕рд░реНрд╡рд░рд╣рд┐рдд рд▓рд╛рдЧрдд
  6. рдЙрдкрдпреЛрдЧреА рдХрдбрд╝рд┐рдпрд╛рдБ



1. AWS рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрдВрд╕реЛрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рдХрд╛рд╕



AWS рдХрдВрд╕реЛрд▓


AWS рдХрдВрд╕реЛрд▓ рдХрд┐рд╕реА рднреА AWS рд╕реЗрд╡рд╛ рддрдХ рдкрд╣реБрдБрдЪ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЪрд╛рд╣реЗ рд╡рд╣ рдЖрдкрдХрд╛ рд╡рд░реНрдЪреБрдЕрд▓ EC2 рд╕рд░реНрд╡рд░ рд╣реЛ, IAM рдпрд╛ AWS рд▓реИрдВрдмрдбрд╛ рд░реЛрд▓ / рдПрдХреНрд╕реЗрд╕ рдкреЙрд▓рд┐рд╕реА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдЬреЛ рд╕рднреА рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рд╣реЛрддреА рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдореЗрдВ рдирд┐рд░рдВрддрд░ рд╡рд┐рддрд░рдг / рдирд┐рд░рдВрддрд░ рддреИрдирд╛рддреА рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреБрди: рддреИрдирд╛рддреА рдХреЗ рдмрд┐рдирд╛ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдпрд╣ рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдФрд░ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЛ рдмрд╣реБрдд рддреЗрдЬ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЖрдкрдХреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓реЙрдиреНрдЪ рдФрд░ рд╕рдВрдЪрд╛рд▓рди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдиреЗрддреНрд░рд╣реАрди рд░реВрдк рд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рднреА рдорджрдж рдХрд░рддрд╛ рд╣реИред

рдПрдкреАрдЖрдИ рдЧреЗрдЯрд╡реЗ рдХрдВрд╕реЛрд▓


рдХрдВрд╕реЛрд▓ рдЖрдкрдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдиреЗ, рдЕрдкрдиреЗ рд╡рд╛рддрд╛рд╡рд░рдг рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдиреЗ рдФрд░ рдирдП рд╕рдВрд╕реНрдХрд░рдг рд╡рд┐рддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдореИрдВ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ рдХрд┐ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рд╕реНрд╡рд╛рд╕реНрдереНрдп рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣ "рдореИрдЬрд┐рдХ" рдХрдВрд╕реЛрд▓ рдХреЙрдиреНрдЯреЗрдХреНрдЯ рдЕрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рдВрд╕рд╛рдзрди рдЯреИрдм рдХреЗ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдореЗрдВ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ: рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдЧреЗрдЯрд╡реЗ рдПрдкреАрдЖрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реЗ рдЕрдиреБрд░реЛрдз рд▓рдВрдмреЛрджрд░ рдореЗрдВ рдХреИрд╕реЗ рдорд┐рд▓рддрд╛ рд╣реИ рдФрд░ рдкреЛрд╕реНрдЯ рдХреЗ рд╕рдВрд╕рд╛рдзрди / рд╕рдВрдкрд░реНрдХ рдореЗрдВ рдЖрдиреЗ рдкрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдХреИрд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдорд┐рд▓рддреА рд╣реИред

рдЧреЗрдЯрд╡реЗ рд╕рдВрд╕рд╛рдзрди



  • рд╡рд┐рдзрд┐ рдЕрдиреБрд░реЛрдз - рдЕрдиреБрд░реЛрдз рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдкрд╣рд▓рд╛ рдХрджрдоред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЗрд╕рдореЗрдВ рдХреЛрдИ рд╕реЗрдЯрд┐рдВрдЧ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЗ рд▓рд┐рдП рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддреА рд╣реИрдВред
  • рдПрдХреАрдХрд░рдг рдЕрдиреБрд░реЛрдз рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ HTTP рдЕрдиреБрд░реЛрдз рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд▓рдВрдмреЛрджрд░ рдХреЛ рдкреНрд░реЗрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛: рдЗрд╕рдореЗрдВ рдЧреНрд░рд╛рд╣рдХ рджреНрд╡рд╛рд░рд╛ рднреЗрдЬреА рдЧрдИ рд╕рднреА рдЬрд╛рдирдХрд╛рд░реА рдФрд░ рд╕рдВрджрд░реНрднрд┐рдд рд╕рдВрджрд░реНрдн рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╡рд░рдг рд╢рд╛рдорд┐рд▓ рд╣реИрдВред
  • рдПрдХреАрдХрд░рдг рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ HTTP рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рд╕реАрдзреЗ рд▓реИрдореНрдмрдбрд╛ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧреАред рдЗрд╕рд▓рд┐рдП, рдЖрдк рд╕реНрд╡рдпрдВ рд▓реИрдореНрдмреНрдбрд╛ рдореЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╢рд░реАрд░ рдХреЗ рдЧрдарди рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИрдВред


рдкреНрд░реЙрдХреНрд╕реА рдПрдХреАрдХрд░рдг рдЕрдХреНрд╖рдо рдХрд░реЗрдВ
API Gateway , Use Lambda Proxy integration Integration Request. . , , .


рдПрдХреАрдХрд░рдг рдЕрдиреБрд░реЛрдз рдирдореВрдирд╛
SAM init events, , Integration request. , AWS , . AWS Lambda.


рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреЗрд╕реНрдЯ рдмрдЯрди рджрдмрд╛рдПрдВред рдпрд╣ рдЖрдкрдХреЛ HTTP рдЧреЗрдЯрд╡реЗ рдПрдкреАрдЖрдИ рдХреЙрд▓ рддрдХ рдкрд╣реБрдВрдЪ рджреЗрдЧрд╛ред

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдореЗрдВ, рдореИрдВрдиреЗ рд▓реИрдореНрдмрдбрд╛ рдХреЛ рдЧрд░реНрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдиреБрд░реЛрдз рднреЗрдЬрд╛ рд╣реИ: рдЕрдиреБрд░реЛрдз рдХреЗ рдЬрд╡рд╛рдм рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЧреЗрдЯрд╡реЗ рдПрдкреАрдЖрдИ рд╡рд┐рд╕реНрддреГрдд рд▓реЙрдЧ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЙрд╕реА рддрд░рд╣, рдЖрдк рдлреЙрд░реНрдо рдореЗрдВ JSON рдЕрдиреБрд░реЛрдз рдирд┐рдХрд╛рдп рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдХреЗ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЕрдиреБрд░реЛрдз рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
рдЧреЗрдЯрд╡реЗ рдкрд░реАрдХреНрд╖рдг рдЕрдиреБрд░реЛрдз


{
    "subject": "Email subject",
    "question": "Your questionтАж",
    "username": "Your nameтАж",
    "phone": "Your phoneтАж",
    "email": "Your emailтАж"
} 


рддреЛ рдЖрдк рдмрд┐рдирд╛ рдХрд┐рд╕реА рдпреВрдЖрдИ рдлреЙрд░реНрдо рдФрд░ рдлреНрд░рдВрдЯ-рдПрдВрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЕрдкрдиреЗ рдПрдкреАрдЖрдИ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдлреНрд░рдВрдЯ-рдПрдВрдб рдФрд░ рдмреИрдХ-рдПрдВрдб рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдЕрд▓рдЧ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдХрдВрд╕реЛрд▓ рдХреЗ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдк рдкреЛрд╕реНрдЯрдореИрди рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп HTTP рдХреНрд▓рд╛рдЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ рдкреЛрд╕реНрдЯрдореИрди
HTTP- Postman. . , API Gateway AWS , API. , , AWS .


рд▓рдореНрдмреЛрджрд░ рд╕рд╛рдВрддреНрд╡рдирд╛


рдЧреЗрдЯрд╡реЗ рдПрдкреАрдЖрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдкрд░реАрдХреНрд╖рдг рдФрд░ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП, рдЖрдк рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рд▓реИрдореНрдмрдбрд╛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрдВрд╕реЛрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЗрд╕рдХреА рд╕реНрдХреНрд░реАрди рдХреЛ рдХрдИ рдмреНрд▓реЙрдХреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
  • рдбрд┐рдЬрд╛рдЗрдирд░ рдореМрдЬреВрджрд╛ рдЯреНрд░рд┐рдЧрд░реНрд╕ рдФрд░ рдкрд░рддреЛрдВ рдХреЛ рджрд┐рдЦрд╛рддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЯреНрд░рд┐рдЧрд░ рдПрдкреАрдЖрдИ рдЧреЗрдЯрд╡реЗ рд╣реИред рдпрджрд┐ рд╣рдо рдЙрд╕ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдЬрд╛рдирдХрд╛рд░реА рдЦреБрд▓ рдЬрд╛рдПрдЧреА: URL, рдЪрд░рдг, рд╕рдВрд╕рд╛рдзрди рдкрдеред
  • рдПрд▓рд┐рдпрд╛рд╕реЗрд╕ (рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд▓реИрдореНрдмреНрдбрд╛ рдЙрд░реНрдл тАЛтАЛрдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╕рдордп рдЙрдкрд▓рдмреНрдз) рдЖрдкрдХреЛ рд▓реИрдореНрдмреНрдбрд╛ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рджреНрд╡рд╛рд░рд╛ рдпрд╛рддрд╛рдпрд╛рдд рдХреЗ рд╡рд┐рддрд░рдг рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЕрдЧрд▓реЗ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рдореЗрдВ рдЗрд╕ рдкрд░ рдЕрдзрд┐рдХред
  • Function code тАФ . zip- , . , Function code . Python/NodeJs.
  • Environment variables. , . , , . , . , , .
  • Tags тАФ , , , , .
  • Execution role тАФ ( ) , .
  • Basic settings тАФ .
  • Network: - , VPC. тАФ .
  • AWS X-Ray . AWS-.
  • Reserve concurrency , . .
    Provisioned concurrency
  • Provisioned concurrency тАФ . , . , тАФ . Free Tier .
  • рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдЖрд╣реНрд╡рд╛рди рдЖрдкрдХреЛ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рд╡рд┐рд╢реЗрд╖ рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╣рдо рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рддреНрд░реБрдЯрд┐ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдХрд┐рддрдиреА рдмрд╛рд░ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реИ, рдФрд░ рдХрд┐рддрдиреЗ рд╕рдордп рддрдХ рдЕрдиреБрд░реЛрдз рдХрддрд╛рд░ рдореЗрдВ рд▓рдЯрдХрд╛ рд░рд╣ рд╕рдХрддрд╛ рд╣реИред рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ, рдЖрдк рд╡рд┐рдлрд▓ рд░рд╣реЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрддрд╛рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

  • рдбреЗрдЯрд╛рдмреЗрд╕ рдкреНрд░реЙрдХреНрд╕реА рдПрдХ рдФрд░ рдирдИ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдПрдкреАрдЖрдИ рдЧреЗрдЯрд╡реЗ + рд▓реИрдВрдмрдбрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рддрдХ рдкрд╣реБрдВрдЪ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ ред


рдЕрдЧрд▓рд╛, рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдЗрд╕ рдХрдВрд╕реЛрд▓ рд╕реЗ рдХреИрд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПред рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкрд░реАрдХреНрд╖рдг рдЕрдиреБрд░реЛрдз рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд┐рдЧ рдЯреЗрд╕реНрдЯ рдЗрд╡реЗрдВрдЯреНрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рд╡реНрдпрд╛рдкрдХ рд╕реВрдЪреА рдЙрдкрд▓рдмреНрдз рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдЗрд╕ рдмрд╛рдд рдХрд╛ рд▓рд╛рдн рдЙрдард╛рдПрдВрдЧреЗ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдХреНрдпрд╛ рд╕рдВрд▓рдЧреНрди рдХрд┐рдпрд╛ рд╣реИ:
ContactUs рдЕрдиреБрд░реЛрдз
{
  "body": "{\"subject\": \"Question\",\"question\": \"How much does it cost\",\"username\": \"Alex\",\"phone\": \"+79999999999\",\"email\": \"alex@gmail.com\"}",
  "resource": "/{proxy+}",
  "path": "/path/to/resource",
  "httpMethod": "POST",
  "isBase64Encoded": false,
  "queryStringParameters": {
    "foo": "bar"
  },
  "pathParameters": {
    "proxy": "/path/to/resource"
  },
  "stageVariables": {
    "baz": "qux"
  },
  "headers": {
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
    "Accept-Encoding": "gzip, deflate, sdch",
    "Accept-Language": "en-US,en;q=0.8",
    "Cache-Control": "max-age=0",
    "CloudFront-Forwarded-Proto": "https",
    "CloudFront-Is-Desktop-Viewer": "true",
    "CloudFront-Is-Mobile-Viewer": "false",
    "CloudFront-Is-SmartTV-Viewer": "false",
    "CloudFront-Is-Tablet-Viewer": "false",
    "CloudFront-Viewer-Country": "US",
    "Host": "1234567890.execute-api.us-east-1.amazonaws.com",
    "Upgrade-Insecure-Requests": "1",
    "User-Agent": "Custom User Agent String",
    "Via": "1.1 08f323deadbeefa7af34d5feb414ce27.cloudfront.net (CloudFront)",
    "X-Amz-Cf-Id": "cDehVQoZnx43VYQb9j2-nvCh-9z396Uhbp027Y2JvkCPNLmGJHqlaA==",
    "X-Forwarded-For": "127.0.0.1, 127.0.0.2",
    "X-Forwarded-Port": "443",
    "X-Forwarded-Proto": "https"
  },
  "requestContext": {
    "accountId": "123456789012",
    "resourceId": "123456",
    "stage": "prod",
    "requestId": "c6af9ac6-7b61-11e6-9a41-93e8deadbeef",
    "requestTime": "09/Apr/2015:12:34:56 +0000",
    "requestTimeEpoch": 1428582896000,
    "identity": {
      "cognitoIdentityPoolId": null,
      "accountId": null,
      "cognitoIdentityId": null,
      "caller": null,
      "accessKey": null,
      "sourceIp": "127.0.0.1",
      "cognitoAuthenticationType": null,
      "cognitoAuthenticationProvider": null,
      "userArn": null,
      "userAgent": "Custom User Agent String",
      "user": null
    },
    "path": "/prod/path/to/resource",
    "resourcePath": "/{proxy+}",
    "httpMethod": "POST",
    "apiId": "1234567890",
    "protocol": "HTTP/1.1"
  }
}


рдЕрдиреБрд░реЛрдз рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдкрд░реАрдХреНрд╖рдг рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рд▓рдВрдмреЛ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рджреЗрдЦреЗрдВ: рд▓реИрдореНрдмреНрдбрд╛ рдЬреЗрдПрд╕рдПрди рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕реНрдерд┐рддрд┐ рдХреЛрдб рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдирд┐рдХрд╛рдп рд╣реЛрддрд╛ рд╣реИред рдмреЙрдбреА рд╡реИрд▓реНрдпреВ рд╕реАрдзреЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рдкрд╛рд╕ рдЬрд╛рдПрдЧреА рдЬрд┐рд╕реЗ рдЧреЗрдЯрд╡реЗ рдПрдкреАрдЖрдИ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдореЗрдВ рдХреЙрд▓ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВ: рдирд┐рд╖реНрдкрд╛рджрди рдХрд╛ рд╕рдордп, рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╣рдо рднреБрдЧрддрд╛рди рдХрд░реЗрдВрдЧреЗ, рдореЗрдорд░реА рджреНрд╡рд╛рд░рд╛ рдЦрдкрдд рдХреА рдЧрдИ рдЕрдзрд┐рдХрддрдо рдореЗрдореЛрд░реАред рдЗрди рдореИрдЯреНрд░рд┐рдХреНрд╕ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рдореЗрдореЛрд░реА рдХреА рдЗрд╖реНрдЯрддрдо рдорд╛рддреНрд░рд╛ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рд▓реИрдореНрдмреНрдбрд╛ рдЖрдкрдХреА рдХреАрдордд / рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджрд░ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рд╕реЗ рдореЗрд▓ рдЦрд╛рдПред
рдЧреЗрдЯрд╡реЗ рд╕рдВрд╕рд╛рдзрди



рдкрд░реАрдХреНрд╖рдг рдХреИрдирд░реА рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХреЗ рд▓рд┐рдП AWS рдХрдВрд╕реЛрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛


рдЕрдм рд▓реИрдореНрдмрдбрд╛ рдХреЗ рдПрдХ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдХреА рддреИрдирд╛рддреА рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ рдкрд░ рд╕реНрдкрд░реНрд╢ рдХрд░рддреЗ рд╣реИрдВред рдЬрдм рдореИрдВрдиреЗ рдПрд╕рдПрдПрдо рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд▓рд┐рдЦрд╛ рддреЛ рдореИрдВрдиреЗ рдРрд╕реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдП:
AutoPublishAlias: live
DeploymentPreference:
  Type: Canary10Percent10Minutes

рдкрд╣рд▓рд╛ рдкреИрд░рд╛рдореАрдЯрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдЙрд░реНрдл рд▓рд╛рдЗрд╡ рдХреЛ рд▓реИрдореНрдмреНрдбрд╛ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИ ред
рдЙрдкрдирд╛рдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рд╕рд╛
, . , , API Gateway. 1, 2, 3 . LATEST, . 2 3 API Gateway (Stage AWS), Gateway-Lambda. API Gateway (ARN ), LATEST.

тАФ ( ), , , ARN . , Stage API Gateway . , API Gateway: dev, qa prod .

, , . , . , live, . live- , , , , CloudWatch.


рдХреИрдирд░реА рддреИрдирд╛рддреА рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЧреЗрдЯрд╡реЗ рдПрдкреАрдЖрдИ рдХрдВрд╕реЛрд▓ рдФрд░ рд▓реИрдореНрдмреНрдбрд╛ рдХрдВрд╕реЛрд▓ рджреЛрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рд▓реИрдореНрдмреНрдбрд╛ рдХреЛрдб рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рдПрдХ рдЕрд▓рдЧ рдЙрддреНрддрд░ рджреЗред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡рд╛рд░реНрдо-рдЕрдк рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдореЗрдВ, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╕рдВрд╕реНрдХрд░рдг 1 рдХреЗ рдмрдЬрд╛рдп рд╕рдВрд╕реНрдХрд░рдг 2 рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВред рдпрд╣ рд╣рдорд╛рд░рд╛ рдорд╛рд░реНрдХрд░ рд╣реЛрдЧрд╛ред

рдЕрдм, рдЧреЗрдЯрд╡реЗ рдЯреЗрд╕реНрдЯ рдХреА рдПрдкреАрдЖрдИ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ WARM-UP рдЕрдиреБрд░реЛрдз рднреЗрдЬрдиреЗ рдХреЗ рджрд╕ рдорд┐рдирдЯ рдХреЗ рднреАрддрд░, рдХреЗрд╡рд▓ 10% рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдореЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╢рд░реАрд░ рдореЗрдВ рд╕рдВрд╕реНрдХрд░рдг 2 рд╣реЛрдЧрд╛ред рдЗрд╕ рд╕рдордп рдХреЗ рдмрд╛рдж, рд╕рдВрд╕реНрдХрд░рдг 2 рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ 100% рд╡рд╛рдкрд╕ рдХрд░ рджреЗрдЧрд╛ред

рдЧреЗрдЯрд╡реЗ рдПрдкреАрдЖрдИ рдХрдВрд╕реЛрд▓ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдо рд▓реИрдореНрдмреНрдбрд╛ рдХрдВрд╕реЛрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ, рдЖрд╡рд╢реНрдпрдХ рдЙрдкрдирд╛рдо рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рдПрдХ рдпрд╛рддрд╛рдпрд╛рдд рд╡рд┐рддрд░рдг рдиреАрддрд┐ рджреЗрдЦрддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд▓рдВрдмреЛрджрд░ рдЙрд░реНрдл



2. рдПрд╕рдПрдПрдо-рд╕реАрдПрд▓рдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рд╕реНрдерд╛рдиреАрдп рд╡рд┐рдХрд╛рд╕


рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ, рд▓реИрдореНрдмреНрдбрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдореБрдЦреНрдп рдиреБрдХрд╕рд╛рди рд╕реНрдерд╛рдиреАрдп рдорд╢реАрди рдкрд░ рд╡рд┐рдХрд╛рд╕ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдЕрд╕реБрд╡рд┐рдзрд╛ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рдерд╛ред рдЕрдм рд╕реНрдерд┐рддрд┐ рдмрд╣реБрдд рдмрджрд▓ рдЧрдИ рд╣реИ: рдПрд╕рдПрдПрдо-рдлреНрд░реЗрдорд╡рд░реНрдХ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ рд╣реИ, рдЬреЛ рди рдХреЗрд╡рд▓ рд╕рдорд╛рдзрд╛рди рдПрдХрддреНрд░ рдХрд░рдиреЗ рдФрд░ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рд╕реНрдерд╛рдиреАрдп рд╡рд┐рдХрд╛рд╕ рдХреЛ рднреА рд╕рд░рд▓ рдХрд░рддрд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдЕрдкрдиреЗ рд▓реИрдореНрдмреНрдбрд╛ рдХреЛ рдХрдВрд╕реЛрд▓ рд╕реЗ рд╕реАрдзреЗ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
sam local invoke -e ./events/warm_up_request.json ContactUsFunction

рдпрд╣ рдХрдорд╛рдВрдб рдПрд╕рдПрдПрдо рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рд╕рд╛рде рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рд╕реЗ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЬреЗрдПрдирдПрд╕ рдлрд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдЗрдирдкреБрдЯ рд▓реИрдореНрдмреНрдбрд╛ рдХреЙрдиреНрдЯреИрдХреНрдЯрдпреВрдлрдВрдХреНрд╢рди (рдпрд╣ рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рддрд╛рд░реНрдХрд┐рдХ рдирд╛рдо рд╣реИ) рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред

рдпрд╣реА рд╣реИ, рдЗрд╕ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдПрд╕рдПрдПрдо рдЗрдореЗрдЬ рд▓реИрдореНрдмрдХреА / рд▓реИрдореНрдмреНрдбрд╛: java11 рдХреЛ рдбреЙрдХрдЯрд░ рдореЗрдВ рдЙрдард╛рддрд╛ рд╣реИ , рдФрд░ рдЗрд╕рдореЗрдВ рдЖрдкрдХрд╛ рдХреЛрдб рдЪрд▓рд╛рддрд╛ рд╣реИред рджреВрд░рд╕реНрде рд╕реЗрд╡рд╛рдУрдВ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдЬреИрд╕реЗ рдХрд┐ SES, рдПрдХ рдЧреБрдкреНрдд / рдкрд╣реБрдБрдЪ рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдЖрдкрдХрд╛ AWS рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдЕрджреНрдпрддрд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдПрдХ рдФрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ: рдпрджрд┐ рдЖрдк рд╡рд╛рд░реНрдо-рдЕрдк рдореЛрдб рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реЗрдбрд░ рдирд╣реАрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рдПрд╕рдИрдПрд╕ рдФрд░ рдбрд╛рдпрдирдореЛрдмреА рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдХреЙрд▓ рд▓реЙрдЧ рдпрд╣рд╛рдВ
F:\aws\projects\contact-us-sam-app>sam local invoke -e ./events/warm_up_request.json ContactUsFunction
Invoking com.gralll.sam.App::handleRequest (java11)
Fetching lambci/lambda:java11 Docker container image......
Mounting F:\aws\projects\contact-us-sam-app\.aws-sam\build\ContactUsFunction as /var/task:ro,delegated inside runtime container
?[32mSTART RequestId: a86d65fa-1f19-15c5-93b8-d87631c80ee2 Version: $LATEST?[0m
2020-01-06 19:09:17 a86d65fa-1f19-15c5-93b8-d87631c80ee2 INFO  App - Request was received
2020-01-06 19:09:17 a86d65fa-1f19-15c5-93b8-d87631c80ee2 DEBUG App - {
  "body" : "{\"subject\": \"Question\",\"question\": \"How much does it cost\",\"username\": \"Alex\",\"phone\": \"+79999999999\",\"email\": \"alex@gmail.com\"}",
  "resource" : "/{proxy+}",
  "requestContext" : {
    "resourceId" : "123456",
    "apiId" : "1234567890",
    "resourcePath" : "/{proxy+}",
    "httpMethod" : "POST",
    "requestId" : "c6af9ac6-7b61-11e6-9a41-93e8deadbeef",
    "extendedRequestId" : null,
    "accountId" : "123456789012",
    "identity" : {
      "apiKey" : null,
      "apiKeyId" : null,
      "userArn" : null,
      "cognitoAuthenticationType" : null,
      "caller" : null,
      "userAgent" : "Custom User Agent String",
      "user" : null,
      "cognitoIdentityPoolId" : null,
      "cognitoIdentityId" : null,
      "cognitoAuthenticationProvider" : null,
      "sourceIp" : "127.0.0.1",
      "accountId" : null,
      "accessKey" : null
    },
    "authorizer" : null,
    "stage" : "prod",
    "path" : "/prod/path/to/resource",
    "protocol" : "HTTP/1.1",
    "requestTime" : "09/Apr/2015:12:34:56 +0000",
    "requestTimeEpoch" : 1428582896000,
    "elb" : null
  },
  "multiValueQueryStringParameters" : { },
  "multiValueHeaders" : {
    "X-WARM-UP" : [ "13" ]
  },
  "pathParameters" : {
    "proxy" : "/path/to/resource"
  },
  "httpMethod" : "POST",
  "stageVariables" : {
    "baz" : "qux"
  },
  "path" : "/path/to/resource",
  "isBase64Encoded" : false,
  "requestSource" : "API_GATEWAY"
}
2020-01-06 19:09:17 a86d65fa-1f19-15c5-93b8-d87631c80ee2 INFO  App - Lambda was warmed up
?[32mEND RequestId: a86d65fa-1f19-15c5-93b8-d87631c80ee2?[0m
?[32mREPORT RequestId: a86d65fa-1f19-15c5-93b8-d87631c80ee2     Init Duration: 1984.55 ms       Duration: 42.22 ms      Billed Duration: 100 ms Memory Size: 256 MB     Max Memory Used: 102 MB ?[0m
{"statusCode":201,"multiValueHeaders":{"Access-Control-Allow-Origin":["*"]},"body":{"response":"Lambda was warmed up. V1"},"isBase64Encoded":false}


рд▓реИрдореНрдмреНрдбрд╛ рд▓реЙрдЧ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХреЙрд▓ рд╕реНрдерд┐рддрд┐ рдкрд░ рд╕реЗрд╡рд╛ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдФрд░ JSON рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрдВрд╕реЛрд▓ рдХреЛ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЧреЗрдЯрд╡реЗ рдПрдкреАрдЖрдИ, рд▓реИрдореНрдмреНрдбрд╛ рдХреА рддрд░рд╣, рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдЪрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╣рдо рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ:
sam local start-api

рдХрдВрд╕реЛрд▓ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рд▓реЙрдЧ рдЗрди рдХрд░реЗрдВ
F:\aws\projects\contact-us-sam-app>sam local start-api
Mounting ContactUsFunction at http://127.0.0.1:3000/contact [POST, OPTIONS]
You can now browse to the above endpoints to invoke your functions. You do not need to restart/reload SAM CLI while working on your functions, changes will be reflected instantly/automatically. You only need to restart SAM CLI if you update your AWS SAM template
2020-01-06 22:20:30  * Running on http://127.0.0.1:3000/ (Press CTRL+C to quit)


рд╕рд░реНрд╡рд░ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВ рдкреЛрд╕реНрдЯрдореИрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛ рдФрд░ рдореЗрдордиреЗ рдХреЛ рдЧрд░реНрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рднреЗрдЬреВрдВрдЧрд╛ред

рдХрдВрд╕реЛрд▓ рдореЗрдВ рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ
Invoking com.gralll.sam.App::handleRequest (java11)
Fetching lambci/lambda:java11 Docker container image......
Mounting F:\aws\projects\contact-us-sam-app\.aws-sam\build\ContactUsFunction as /var/task:ro,delegated inside runtime container
?[32mSTART RequestId: 27868750-3637-1f80-3d80-53a724da16ef Version: $LATEST?[0m
2020-01-06 19:28:09 27868750-3637-1f80-3d80-53a724da16ef INFO  App - Request was received
2020-01-06 19:28:09 27868750-3637-1f80-3d80-53a724da16ef DEBUG App - {
  "body" : "{\r\n  \"subject\": \"Question\",\r\n  \"question\": \"How much does it cost\",\r\n  \"username\": \"Alex\",\r\n  \"phone\": \"+79999999999\",\r\n  \"email\": \"alex@gmail.com\"\r\n}",
  "resource" : "/contact",
  "requestContext" : {
    "resourceId" : "123456",
    "apiId" : "1234567890",
    "resourcePath" : "/contact",
    "httpMethod" : "POST",
    "requestId" : "c6af9ac6-7b61-11e6-9a41-93e8deadbeef",
    "extendedRequestId" : null,
    "accountId" : "123456789012",
    "identity" : {
      "apiKey" : null,
      "apiKeyId" : null,
      "userArn" : null,
      "cognitoAuthenticationType" : null,
      "caller" : null,
      "userAgent" : "Custom User Agent String",
      "user" : null,
      "cognitoIdentityPoolId" : null,
      "cognitoIdentityId" : null,
      "cognitoAuthenticationProvider" : null,
      "sourceIp" : "127.0.0.1",
      "accountId" : null,
      "accessKey" : null
    },
    "authorizer" : null,
    "stage" : "Prod",
    "path" : "/contact",
    "protocol" : null,
    "requestTime" : null,
    "requestTimeEpoch" : 0,
    "elb" : null
  },
  "multiValueQueryStringParameters" : null,
  "multiValueHeaders" : {
    "Accept" : [ "application/json" ],
    "Accept-Encoding" : [ "gzip, deflate, br" ],
    "Accept-Language" : [ "ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7" ],
    "Cache-Control" : [ "no-cache" ],
    "Connection" : [ "keep-alive" ],
    "Content-Length" : [ "150" ],
    "Content-Type" : [ "text/plain;charset=UTF-8" ],
    "Host" : [ "127.0.0.1:3000" ],
    "Origin" : [ "chrome-extension://fhbjgbiflinjbdggehcddcbncdddomop" ],
    "Postman-Token" : [ "5cadaccd-6fae-5bc2-b4ef-63900a1725ff" ],
    "Sec-Fetch-Mode" : [ "cors" ],
    "Sec-Fetch-Site" : [ "cross-site" ],
    "User-Agent" : [ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36" ],
    "X-Forwarded-Port" : [ "3000" ],
    "X-Forwarded-Proto" : [ "http" ],
    "X-Warm-Up" : [ "123" ]
  },
  "pathParameters" : null,
  "httpMethod" : "POST",
  "stageVariables" : null,
  "path" : "/contact",
  "isBase64Encoded" : false,
  "requestSource" : "API_GATEWAY"
}
2020-01-06 19:28:09 27868750-3637-1f80-3d80-53a724da16ef INFO  App - Lambda was warmed up
?[32mEND RequestId: 27868750-3637-1f80-3d80-53a724da16ef?[0m
?[32mREPORT RequestId: 27868750-3637-1f80-3d80-53a724da16ef     Init Duration: 1951.87 ms       Duration: 42.91 ms      Billed Duration: 100 ms Memory Size: 256 MB     Max Memory Used: 102 MB ?[0m
2020-01-06 22:28:11 127.0.0.1 - - [06/Jan/2020 22:28:11] "POST /contact HTTP/1.1" 201 -


рдмреЗрд╢рдХ, рд▓реЙрдЧреНрд╕ рдХреЛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреЗ рддрд░реАрдХреЗ рд╕реЗ рд╕реНрд╡рд░реВрдкрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдпрд╣ рддрдп рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

рдорд╣рддреНрд╡рдкреВрд░реНрдг: рд▓реИрдореНрдмреНрдбрд╛ рдХреЛрдб рдмрджрд▓рддреЗ рд╕рдордп, рдПрдкреАрдЖрдИ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред рдпрд╣ рд╕реИрдо рдмрд┐рд▓реНрдб рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рд▓реИрдореНрдмреНрдбрд╛ рдХреЗ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ ред
рдХреАрдбрд╝реЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛
Java- aws-serverless-java-container-core, : 502 . :
Invalid API Gateway Response Keys: {'base64Encoded'} in {'statusCode': 200, 'headers': {'Content-Type': 'text/plain'}, 'body': 'Hello World', 'base64Encoded': False} 

- , API Gateway AWS JsonProperty. 'isBase64Encoded' 'base64Encoded', , , . , Java- ContactUsProxyResponse AwsProxyRequest.



3. рдЖрдИрдбрд┐рдпрд╛ рд╕реЗ рд╕реНрдерд╛рдиреАрдп рдХреЙрд▓


рдКрдкрд░ рджрд┐рдП рдЧрдП рдкреИрд░рд╛рдЧреНрд░рд╛рдл рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╕рдм рдХреБрдЫ рдПрд╕рдПрдПрдо рдЯреВрд▓ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╣реИред рдЗрд╕реЗ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдХрд┐рд╕реА рднреА рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ IntelljIDEA AWS рдЯреВрд▓рдХрд┐рдЯ рдХреЗ рд▓рд┐рдП рдкреНрд▓рдЧрдЗрди рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдпрд╣ рдкреНрд▓рдЧрдЗрди IDE рд╕реЗ рд╕реАрдзреЗ рд▓рдВрдмреЛрджрд░ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдпрд╣ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╡рд┐рдВрдбреЛ рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИред рдЖрдкрдХреЛ рдпрд╛ рддреЛ рд▓реИрдореНрдмреНрдбрд╛ рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде рдПрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЪрдпрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдпрд╛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдкрд╣рд▓реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕рдВрдХрд▓рди рдХреЗ рд▓рд┐рдП рд╕реНрдореГрддрд┐ рдФрд░ рднрд╛рд╖рд╛ рдХреА рдорд╛рддреНрд░рд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рд╕реЗ рд▓реА рдЬрд╛рдПрдЧреАред рджреВрд╕рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдк рд╕реНрд╡рдпрдВ рд░реИрдо рдХреА рдорд╛рддреНрд░рд╛ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕реАрдорд╛ рдХреА рдЕрдиреБрдорд╛рдирд┐рдд рдЧрдгрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рдЕрдиреНрдп рдкреНрд▓рдЧрдЗрди рдЖрдкрдХреЛ рдЬрд╛рд╡рд╛ рдХреЛрдб рдПрдбрд┐рдЯрд░ рдпрд╛ рдпрд╛рдорд▓-рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреА рд╡рд┐рдВрдбреЛ рд╕реЗ рд╕реАрдзреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдиреАрдЪреЗ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ:











рд╡рд╣, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕рдм рд╣реИред рдЕрдиреБрдХреВрд▓рд┐рдд рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдЪрд▓рд╛рдХрд░, рдЖрдк рдмрд╕ рдХрдВрд╕реЛрд▓ рд╕реЗ рд▓рдЧрд╛рддрд╛рд░ рд▓рдВрдмреЛ рдХреЙрд▓ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рд╕рд╣рдордд, рдХрд╛рдлреА рд╕рд╣рдЬ?


4. рдкрд░реАрдХреНрд╖рдг


рдпрд╣рд╛рдБ рд╣рдо рд▓реИрдореНрдмреНрдбрд╛ рдХреЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВред рдЪреВрдВрдХрд┐ рдореИрдВрдиреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдЬрд╛рд╡рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рдЗрдХрд╛рдИ рдФрд░ рдПрдХреАрдХрд░рдг рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рдорд╛рдирдХ рдЙрдкрдХрд░рдг рднреА рд╢рд╛рдорд┐рд▓ рд╣реЛрдВрдЧреЗ: рдЬреВрди 4, рдореЙрдХрд┐рдЯреЛ рдФрд░ рдкрд╛рд╡рд░рдореЙрдХрд┐рдЯреЛред

рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдг


рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд╕рд╛рде рд▓реИрдореНрдмреНрдбрд╛ рдХреЛрдб рдХреЛ рдХрд╡рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЬреНрдЮрд╛рди рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣ рдорд╛рдирдХ рдЬрд╛рд╡рд╛ рдкреНрд░рдерд╛рдУрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ: рдХрдХреНрд╖рд╛ рдореЗрдВ рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЛ рд▓реЙрдХ рдХрд░реЗрдВ рдФрд░ рдЕрдиреБрд░реЛрдз рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рдорд╛рдорд▓реЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред

рдореИрдВрдиреЗ рд╕рднреА рдкрд░реАрдХреНрд╖рдг рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЛ рдирд╣реАрдВ рдЬреЛрдбрд╝рд╛ рдФрд░ рдЦреБрдж рдХреЛ рджреЛ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдФрд░ рджреЛ рдирдХрд╛рд░рд╛рддреНрдордХ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рддрдХ рд╕реАрдорд┐рдд рдХрд░ рд▓рд┐рдпрд╛ред

рдкрд╣рд▓рд╛ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдкрд░реАрдХреНрд╖рдг рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдпрджрд┐ X-WARM-UP рд╢реАрд░реНрд╖рдХ рд╣реИ, рддреЛ DbService рдФрд░ EmailService рдореЗрдВ рдХреЛрдИ рдЕрдиреБрд░реЛрдз рдирд╣реАрдВ рд╣реИрдВред рджреВрд╕рд░рд╛ рдорд╛рдорд▓рд╛ рдпрд╣ рдЬрд╛рдБрдЪрддрд╛ рд╣реИ рдХрд┐ рдЕрдиреБрд░реЛрдз рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╣реЛрдиреЗ рдкрд░ рдЗрди рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпреЗ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдкрд░реАрдХреНрд╖рдг рд╣реИрдВ, рдФрд░ рдореИрдВрдиреЗ рдЙрдирдореЗрдВ рдЬрд╛рдВрдЪ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ред

рдирдХрд╛рд░рд╛рддреНрдордХ рдкрд░рд┐рджреГрд╢реНрдп рдПрдХ рдХреНрд▓рд╛рдЗрдВрдЯ рдпрд╛ рд╕рд░реНрд╡рд░ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рддреНрд░реБрдЯрд┐ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рдЬрд╛рдБрдЪ рд╣реИред

рдПрдХреАрдХрд░рдг рдкрд░реАрдХреНрд╖рдг


рдПрдХреАрдХрд░рдг рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВрдиреЗ рдбрд╛рдпрдмреЙрд╕реН рдбреА рдЯреЗрдмрд▓ рдХреЗ рд╕рд╛рде рдбреАрдмреАрдПрд╕ рд╕рд░реНрд╡рд┐рд╕ рдФрд░ рдЗрд╕рдХреЗ рдХрд╛рдо рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред

рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВрдиреЗ рд▓реЛрдХрд▓рд╕реНрдЯреИрдХ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ ред рдпрд╣ рд╕рдорд╛рдзрд╛рди рдбреЙрдХ рдХрдВрдЯреЗрдирд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд▓рдиреЗ рд╡рд╛рд▓реА AWS рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдореБрдлреНрдд рдореЛрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдВ:
pip install localstack
localstack start

рдпрд╛ рдЖрдк рдбреЙрдХрдЯрд░-рдХрдВрдкреЛрдЬ рдлрд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ред
do Dynam- рд░рдЪрдирд╛ рдХреЗрд╡рд▓ DynamoDB рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП
version: '2.1'
services:
  localstack:
    container_name: "${LOCALSTACK_DOCKER_NAME-localstack_main}"
    image: localstack/localstack
    ports:
      - "4567-4599:4567-4599"
      - "${PORT_WEB_UI-8080}:${PORT_WEB_UI-8080}"
    environment:
      - SERVICES=dynamodb
      - DEBUG=${DEBUG- }
      - DATA_DIR=${DATA_DIR- }
      - PORT_WEB_UI=${PORT_WEB_UI- }
      - LAMBDA_EXECUTOR=${LAMBDA_EXECUTOR- }
      - KINESIS_ERROR_PROBABILITY=${KINESIS_ERROR_PROBABILITY- }
      - DOCKER_HOST=unix:///var/run/docker.sock
    volumes:
      - "${TMPDIR:-/tmp/localstack}:/tmp/localstack"
      - "/var/run/docker.sock:/var/run/docker.sock"


рдкреНрд░рд╛рд░рдВрдн рдЖрджреЗрд╢ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рднреА рдЙрдкрд▓рдмреНрдз AWS рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдЙрдард╛рддрд╛ рд╣реИред рдбрд╛рдпрдирдореЛрдмреАрдбреА рдХреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рд╕реЗрдЯ рдХрд░реЗрдВ:
set SERVICES=dynamodb


Junit рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ LocalstackTestRunner рд╣реИ рдЬреЛ рдЖрдкрдХреЛ @LocalstackDockerProperties рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрд╡рд╢реНрдпрдХ рд╕реЗрд╡рд╛рдПрдВ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ ред
рдирддреАрдЬрддрди, DbService рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдирд╛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
  • рдкрд░реАрдХреНрд╖рдг рд╡рд░реНрдЧ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред
    @RunWith(LocalstackTestRunner.class)
    @LocalstackDockerProperties(services = { "dynamodb" })
    

  • рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдПрдВ
    рдЬрд╛рд╡рд╛
    @Before
    public void setUp() {
        AmazonDynamoDB clientDynamoDB = TestUtils.getClientDynamoDB();
        dynamoDB = new DynamoDB(clientDynamoDB);
        dbService = new DbService(dynamoDB);
    
        dynamoDB.createTable(
                new CreateTableRequest()
                        .withTableName("ContactUsTable")
                        .withKeySchema(new KeySchemaElement("Id", KeyType.HASH))
                        .withAttributeDefinitions(new AttributeDefinition("Id", ScalarAttributeType.S))
                        .withProvisionedThroughput(new ProvisionedThroughput(10L, 10L)));
    }
                    


  • рд╣рдо рдкрд░реАрдХреНрд╖рдг рдкрд░рд┐рджреГрд╢реНрдп рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ
    рдЬрд╛рд╡рд╛
    // given
    ContactUsRequest contactUsRequest = new ContactUsRequest("subject", "name", "+79991234545", "123@mail.ru", "Qeustion");
    
    // when
    dbService.putContactUsRequest("123", contactUsRequest);
    
    // then
    Item item = dynamoDB.getTable("ContactUsTable").getItem(new PrimaryKey("Id", "123"));
    assertEquals(contactUsRequest.getSubject(), item.get("Subject"));
    assertEquals(contactUsRequest.getUsername(), item.get("Username"));
    assertEquals(contactUsRequest.getPhone(), item.get("Phone"));
    assertEquals(contactUsRequest.getEmail(), item.get("Email"));
    assertEquals(contactUsRequest.getQuestion(), item.get("Question"));
                  


  • рдкрд░реАрдХреНрд╖рдг рдХреЗ рдмрд╛рдж рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рд╣рдЯрд╛рдирд╛ рди рднреВрд▓реЗрдВред
    рдЬрд╛рд╡рд╛
    @After
    public void tearDown() {
        dynamoDB.getTable("ContactUsTable").delete();
    }
                   



рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд▓реЛрдХрд▓рд╕реНрдЯреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рдореЗрдВ AWS рдореЙрдХ рдХреА рдХрд╛рдлреА рд╡реНрдпрд╛рдкрдХ рд╢реНрд░реЗрдгреА рдорд┐рд▓рддреА рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдЗрди рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рдХрд╛рдо рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред

E2E рдкрд░реАрдХреНрд╖рдг


рдИ 2 рдИ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЛ рдЦреЗрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд░рдирд┐рдВрдЧ рдЯреЗрд╕реНрдЯ рдХреЗ рд▓рд┐рдП рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рдкрд░реАрдХреНрд╖рдг рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдЙрдард╛рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ, рдпрджрд┐, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдРрд╕рд╛ рдЕрд╡рд╕рд░ рд╣реИред рдпрд╣ рд╡реИрдХрд▓реНрдкрд┐рдХ CloudFormation рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕рдВрд╕рд╛рдзрди рдореБрдЦреНрдп рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреА рдкреНрд░рддрд┐рдпрд╛рдВ рд╣реЛрдВрдЧреЗред

рдкрд░реАрдХреНрд╖рдг AWS-CLI рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓реИрдореНрдмреНрдбрд╛ рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рдФрд░ рдХрд┐рд╕реА рднреА рдЙрдкрд▓рдмреНрдз рдЯреВрд▓ рдХреЗ рд╕рд╛рде рдкрд░рд┐рдгрд╛рдо рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЖрдк рдЕрднреА рднреА рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдмрд┐рдирд╛ рдореЙрдмреНрд╕ рдмрдирд╛рдПред

рдкреНрд░рджрд░реНрд╢рди рдЬрд╛рдВрдЪ


рдЪреВрдВрдХрд┐ рдкреНрд░рджрд░реНрд╢рди рдкрд░реАрдХреНрд╖рдг рдПрдХ рдЕрд▓рдЧ рд▓реЗрдЦ рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдХ рдкреБрд╕реНрддрдХ рдХрд╛ рд╣рдХрджрд╛рд░ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдпрд╣рд╛рдВ рд╕рднреА рдЬрд╛рдирдХрд╛рд░реА рдбрд╛рд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдЬрдм рддрдирд╛рд╡ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдпрд╣ рдпрд╛рдж рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд▓рдЧрднрдЧ рд╕рднреА рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдореБрдлреНрдд рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЖрдкрдХреЛ рдЕрдЧреНрд░рд┐рдо рд▓рд╛рдЧрддреЛрдВ рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдпрджрд┐ рдЖрдк рдПрдХ рд▓рдВрдмреЛрджрд░ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдпреВрдЖрдИ рдХрдВрд╕реЛрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ рдХреБрдЫ рдкрд░реАрдХреНрд╖рдг рдХреЙрд▓ рдХрд░реЗрдВред рдЕрдЧрд▓рд╛, рд╕рд╛рдорд╛рдиреНрдп рддрд░реНрдХ рдФрд░ рдЧрдгрд┐рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░реЗрдВ рдХрд┐ рдЙрдкрд▓рдмреНрдз рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рдорд╛рддреНрд░рд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЖрдкрдХреЗ рд▓реИрдореНрдмреНрдбрд╛ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд┐рддрдирд╛ рдмрдврд╝рддрд╛ рд╣реИред

CloudWatch рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдордд рднреВрд▓рдирд╛ред рдЗрд╕рдХреА рдорджрдж рд╕реЗ, рдЖрдк рдХрд╛рдлреА рд╕рд╛рдВрдХреЗрддрд┐рдХ рдбреИрд╢рдмреЛрд░реНрдб рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрдирдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд▓реИрдореНрдмреНрдбрд╛ рдФрд░ рдЦрд░реНрдЪ рдХрд░рдиреЗ рдХреЗ рдХреНрдпрд╛ рдорд╛рдкрджрдВрдб рд╣реИрдВред


5. рд╕рд░реНрд╡рд░ рд░рд╣рд┐рдд рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреА рд▓рд╛рдЧрдд


рдПрдХ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рд╣рдореЗрд╢рд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реЛрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЛ рди рдХреЗрд╡рд▓ рдПрдХ рдХреЙрд▓ рдХреА рд▓рд╛рдЧрдд рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдмрд▓реНрдХрд┐ рдЖрдиреЗ рд╡рд╛рд▓реЗ / рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЯреНрд░реИрдлрд╝рд┐рдХ, рдХреИрд╢рд┐рдВрдЧ, рд▓реЙрдЧрд┐рдВрдЧ рдФрд░ рдирд┐рдЧрд░рд╛рдиреА рдХреА рд▓рд╛рдЧрдд рдкрд░ рднреА рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрджрд┐ рдЖрдк рд▓реИрдореНрдмреНрдбрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЙрд╕ рд▓реЛрдб рдХреА рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рдЬреЛ рдЖрдкрдХреА рд╕реЗрд╡рд╛ рд╕рдВрднрд╛рд▓ рд▓реЗрдЧрд╛ред

рдпрджрд┐ рдпреЗ рд╕рд┐рдВрдЧрд▓ рдХреЙрд▓ рдпрд╛ рдИрдЯреАрдПрд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИ рдЬреЛ рд╣рд░ рдХреБрдЫ рдШрдВрдЯреЛрдВ / рджрд┐рдиреЛрдВ рдореЗрдВ рдЪрд▓рддреА рд╣реИ, рддреЛ рд▓реИрдореНрдмрдбрд╛ рдХреЗ рднреБрдЧрддрд╛рди рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдЕрдзрд┐рдХ рд╣реЛрддреА рд╣реИред рдпрджрд┐ рдЖрдк рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рдХрдИ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рднрд╛рд░ рдХреА рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕рдЯреАрдХ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВред

рдиреАрдЪреЗ рдореИрдВ рд▓реИрдореНрдмреНрдбрд╛ рдФрд░ рд╕рдмрд╕реЗ рд╕рд╕реНрддреЗ рдИрд╕реА 2 рд╕рд░реНрд╡рд░ рдХреА рд▓рд╛рдЧрдд рдХрд╛ рдЕрдиреБрдорд╛рдирд┐рдд рдЕрдиреБрдорд╛рди рджреЗрддрд╛ рд╣реВрдВ, рддрд╛рдХрд┐ рдЖрдк рд╕рдордЭ рд╕рдХреЗрдВ рдХрд┐ рдХреМрди рд╕реЗ рдореВрд▓реНрдп рдкреНрд░рд╢реНрди рдореЗрдВ рд╣реИрдВ: рд▓реИрдореНрдмреНрдбрд╛ рдХреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:




  • рд▓реАрдб рд╕рдордп: 150 рдорд┐рд▓реАрд╕реЗрдХрдВрдб
  • рдореВрд▓реНрдп: 1GB-s рдХреЗ рд▓рд┐рдП $ 0.00001667
  • рдореЗрдореЛрд░реА: 256 рдПрдордмреА

EC2 t2.nano рдХреЗ рд▓рд┐рдП:

  • рдХреАрдордд: $ 4.75 рдкреНрд░рддрд┐ рдорд╛рд╣
  • рдореЗрдореЛрд░реА: 512 рдПрдордмреА
  • vCPU: 1
  • рдЕрдзрд┐рдХрддрдо рд▓реЛрдб: рдкреНрд░рддрд┐ рдорд╛рд╣ 5% рд╕реАрдкреАрдпреВ

рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рд╕реЗ EC2 рд▓реЛрдб рдбреЗрдЯрд╛ рд▓рд┐рдпрд╛ ред рдЗрди рдЧрдгрдирд╛рдУрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рд░реНрд╡рд░ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб 0.3 рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдирд┐рд░рдВрддрд░ рд▓реЛрдб рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЬреИрд╕реЗ рд╣реА рд▓реЛрдб рдмрдврд╝рддрд╛ рд╣реИ, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рдордп рдмрдврд╝реЗрдЧрд╛, рдЬрд┐рд╕рд╕реЗ рдЗрд╕ рд╕рд░реНрд╡рд░ рдХреА рджрдХреНрд╖рддрд╛ рдХрдо рд╣реЛ рдЬрд╛рдПрдЧреАред

рдпреЗ рд╕рднреА рдЧрдгрдирд╛ рдХрд╛рдлреА рд╕рд╛рд░рдЧрд░реНрднрд┐рдд рд╣реИрдВ рдФрд░ рдХрдИ рдХрд╛рд░рдХреЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рдирд╣реАрдВ рд░рдЦрддреЗ рд╣реИрдВ: рдЕрдЧреНрд░рд┐рдо рднреБрдЧрддрд╛рди рдкрд░ рдЫреВрдЯ рдпрд╛ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЕрдиреБрд░реЛрдз, рд▓рдВрдмреЛрджрд░ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп, рдФрд░ рдЗрд╕реА рддрд░рд╣ред рд▓реЗрдХрд┐рди рд╡реЗ рдмрддрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб 1 рд╕реЗ рдХрдо рдЕрдиреБрд░реЛрдз рдХреЗ рд▓реЛрдб рдХреЗ рд╕рд╛рде, рд▓реИрдореНрдмреНрдбрд╛ рдХреА рдХреАрдордд рд╕рдмрд╕реЗ рд╕рд╕реНрддреЗ EC2 рд╕рд░реНрд╡рд░ рд╕реЗ рдХрдо рд╣реИред

рд╡реИрд╕реЗ, рдпрджрд┐ рдЖрдкрдХреЛ рдХрдИ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкреНрд░рддрд┐рдХреГрддрд┐рдпрд╛рдВ рдпрд╛ рдЗрд▓рд╛рд╕реНрдЯрд┐рдХ рдПрд▓реНрд╕ рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдИрд╕реАрдмреА рдореВрд▓реНрдп рдореЗрдВ рдПрдПрд▓рдмреА рдХреА рдХреАрдордд рдХреЛ рдЬреЛрдбрд╝рдирд╛ рди рднреВрд▓реЗрдВред


рд╕рд░реНрд╡рд░ рд░рд╣рд┐рдд рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдФрд░ рд╕реНрдерд╛рдиреАрдп рд╡рд┐рдХрд╛рд╕ рдПрдХ рд╣реА рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕реЗрдЬ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрдо рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реИрдВред рдлрд┐рд░ рднреА, рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рд▓реЛрдЧ рдЗрди рддрдХрдиреАрдХреЛрдВ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдУрдкрди-рд╕реЛрд░реНрд╕ рдЙрддреНрдкрд╛рджреЛрдВ рдХреЛ рдмреЗрд╣рддрд░ рдФрд░ рдЕрдзрд┐рдХ рдХреБрд╢рд▓ рдмрдирдиреЗ рдХрд╛ рдореМрдХрд╛ рджреЗрддреЗ рд╣реИрдВред рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рдорд╛рдзрд╛рди рдЙрди рдХрдВрдкрдирд┐рдпреЛрдВ рдХреЗ рдЬреАрд╡рди рдХреЛ рдмрд╣реБрдд рд╕рд░рд▓ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЬрд▓реНрдж рд╕реЗ рдЬрд▓реНрдж рдПрдХ рдЙрддреНрдкрд╛рдж рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдФрд░ рдкреВрд░реЗ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡рд┐рдХрд╕рд┐рдд рдЙрддреНрдкрд╛рджреЛрдВ рдореЗрдВ рднреА, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рд░реНрд╡рд░ рд░рд╣рд┐рдд рдбреЗрдЯрд╛рдмреЗрд╕ рдпрд╛ рд▓реИрдореНрдмреНрдбрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЬрдЧрд╣ рд╣реИред

рдореИрдВ рд╕рд░реНрд╡рд░-рд╕рдорд╛рдзрд╛рди рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдПрдХ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рд╣реЛрдиреЗ рдХрд╛ рджрд╛рд╡рд╛ рдирд╣реАрдВ рдХрд░рддрд╛, рд▓реЗрдХрд┐рди, рдЕрдкрдиреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╕рдХрд╛рд░рд╛рддреНрдордХ рдЕрдиреБрднрд╡ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдореИрдВрдиреЗ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореБрдЦреНрдп рдмрд┐рдВрджреБрдУрдВ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд╡реЗ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдВрдЧреЗ, рдФрд░ рд╢рд╛рдпрдж рдЖрдк рдореЗрдВ рд╕реЗ рдХреБрдЫ рдореБрдЭреЗ рдкреВрд░рдХ рдпрд╛ рд╕рд╣реА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореБрдЭреЗ рдмрд╣реБрдд рдЦреБрд╢реА рд╣реЛрдЧреАред


рдЙрдкрдпреЛрдЧреА рдХрдбрд╝рд┐рдпрд╛рдБ



All Articles