рдпрд╣ рдЖрд▓реЗрдЦ рдПрдХ рдЧрд╛рдЗрдб рд╣реИ рдХрд┐ рдХреИрд╕реЗ рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде AWS рд▓реИрдореНрдмреНрдбрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЬрд▓реНрджреА рдФрд░ рджрд░реНрдж рд░рд╣рд┐рдд рддрд░реАрдХреЗ рд╕реЗ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВред рдПрдХ рдРрд╕реЗ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИ рдЬреЛ рд▓реИрдореНрдмрдбрд╛ рдХреЗ рд╕рд╛рде рдмрд┐рд▓реНрдХреБрд▓ рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рдерд╛, рдФрд░ рдЬреЛ рд╕рд░реНрд╡рд░ рд░рд╣рд┐рдд рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рд╡рд┐рдЬрд╝рди рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд╛рдЙрдб рдХреЛ рдЬрд╛рдирддрд╛ рдерд╛ред
рдкрд░рд┐рдЪрдп
рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░редрдореЗрд░рд╛ рдирд╛рдо рдЕрд▓реЗрдХреНрдЬреЗрдВрдбрд░ рдЧреНрд░реБрдЬрджреЗрд╡ рд╣реИ, рдореИрдВ DINS рдореЗрдВ рдЬрд╛рд╡рд╛ рдЯреАрдо рд▓реАрдб рд╣реВрдВред рджреЛ рд╕рд╛рд▓ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рд╕реЗ, рдореИрдВ рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдХреЗ рд╕рд╛рде рдорд┐рд▓рдХрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рдХреЗ рд▓рд┐рдП рдЖрд╡реЗрджрди рд▓рд┐рдЦрдиреЗ рдФрд░ рдХрд┐рд╕реА рдЕрдиреНрдп рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рддреИрдирд╛рдд рдХрд░рдиреЗ рдореЗрдВ рджреЛрдиреЛрдВ рдХрд╛ рдЕрдиреБрднрд╡ рд╣реИред рдЕрдкрдиреЗ рдХрд╛рдо рдореЗрдВ рдореБрдЭреЗ ElasticBeanstalk, ECS, Fargate, EKS, рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, AWS рд▓реИрдореНрдмреНрдбрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрдбрд╝рд╛редрдЗрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рд╕реЗрд╡рд╛ рдЕрдкрдиреЗ рддрд░реАрдХреЗ рд╕реЗ рдЕрдЪреНрдЫреА рд╣реИ, рдФрд░ рдЗрд╕ рд▓реЗрдЦ рдХреЗ рдврд╛рдВрдЪреЗ рдХреЗ рднреАрддрд░ рдореИрдВ рдЕрдиреНрдп рд╕рднреА рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЗ рд░реВрдк рдореЗрдВ рдХреЗрд╡рд▓ рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рд▓рд╛рдореНрдмрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдЖрдЧреНрд░рд╣ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ред рдореИрдВ рд╕рд┐рд░реНрдл рдпрд╣ рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рд▓реИрдВрдмрдбрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рдирд╛ рдХрд┐рддрдирд╛ рдЖрд╕рд╛рди рд╣реИ, рдФрд░ рдХрд┐рди рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЖрдкрдХреЛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдн рдорд┐рд▓реЗрдВрдЧреЗредрд╣рд░ рдХреЛрдИ, рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╕реЗ рд▓реЗрдХрд░ рдкреНрд░рдмрдВрдзрдХреЛрдВ рддрдХ, рдЧреНрд░рд╛рд╣рдХреЛрдВ рдореЗрдВ рдмрджрд▓рд╛рд╡ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдкрд╖реНрдЯ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЪрд╛рд╣рддрд╛ рд╣реИред рдпрд╣ рдорд╛рд░реНрдЧ рдЬрд┐рддрдирд╛ рдЕрдзрд┐рдХ рдкрд╛рд░рджрд░реНрд╢реА рдФрд░ рдХрдо рдкреНрд░рдпрд╛рд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЙрддрдирд╛ рд╣реА рд▓рд╛рднрджрд╛рдпрдХ рд╣реИред рдЕрдХреНрд╕рд░, рдбреЗрд╡рд▓рдкрд░реНрд╕ рдФрд░ рдкрд░реАрдХреНрд╖рдХ рдпрд╣ рдЬрд╛рдирдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЖрд╡реЗрджрди рдХрд╣рд╛рдВ рддреИрдирд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХрд╛ рдХреМрди рд╕рд╛ рдЯреБрдХрдбрд╝рд╛ рдЪреБрдирдирд╛ рд╣реИ, рдЖрдк рдХрд┐рд╕ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдкреНрд░рддрд┐рдХреГрддрд┐рдпрд╛рдВ рдбрд╛рд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЖрджрд┐ред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЖрд░реЗрдЦ рдореЗрдВ, рдЖрдк рд╕реЗрд╡рд╛рдУрдВ рдХреЗ "рдПрдПрдПрд╕" рд╡рд░реНрдЧ (рдПрдХ рд╕реЗрд╡рд╛ рдХреЗ рд░реВрдк рдореЗрдВ) рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рд▓реИрдВрдмрдбрд╛ рдлреЙрд▓реНрд╕ рд╢реНрд░реЗрдгреА рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИред
рдПрдХ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ FaaSFaaS , . , , CRUD C, R, U, D Create Read. , тАФ .
рд╡рд┐рдЪрд╛рд░
рд╕рд░реНрд╡рд░ рд░рд╣рд┐рдд рд╕рдорд╛рдзрд╛рди рдХрд╛ рд╡рд┐рдХрд╛рд╕ рдХреНрдпрд╛ рд╣реИ, рдпрд╣ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдПрдХ рд╡рд┐рд╕реНрддреГрдд рдЙрджрд╛рд╣рд░рдг рд▓реЗрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдХрдИ рд╕рд╛рдЗрдЯреЛрдВ рдкрд░ рд╣рдорд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд░реЗрдВ рдлреАрдбрдмреИрдХ рдлреЙрд░реНрдо рджреЗрдЦрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдЖрдк рдЕрдкрдирд╛ рдореЗрд▓ рдпрд╛ рдлреЛрди рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдмрд╛рдж рдореЗрдВ рдкреВрдЫреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рд╢реНрди рдкреВрдЫ рд╕рдХрддреЗ рд╣реИрдВред рдиреАрдЪреЗ рджреА рдЧрдИ рд╕реНрдХреНрд░реАрди, рдлрд╝реЙрд░реНрдо рд╕реБрдкрд░ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рд▓реЗрдЦ рдХрд╛ рд╡рд┐рд╖рдп рд╕рд╛рдордЧреНрд░реА рдбрд┐рдЬрд╝рд╛рдЗрди рдирд╣реАрдВ рд╣реИред
рдЗрд╕ рдлреЙрд░реНрдо рдХреЛ рднрд░рдХрд░, рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рдЧреНрд░рд╛рд╣рдХ рдЖрдкрд╕реЗ рдХреЙрд▓ рдпрд╛ рдкрддреНрд░ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рд╣реЛрдЧрд╛редрдЖрдкрдХреЛ рдЬрд┐рд╕ рддрдХрдиреАрдХреА рдкрдХреНрд╖ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:- рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдбреЗрдЯрд╛ рдХреЛ рдлреЙрд░реНрдо рдореЗрдВ рд╕реЗрд╡ рдХрд░реЗрдВ;
- рдПрдХ рдПрдЬреЗрдВрдЯ рдХреЛ рдПрдХ рдкрддреНрд░ рднреЗрдЬреЗрдВ рдЬреЛ рд╕рд╡рд╛рд▓ рдХрд╛ рдЬрд╡рд╛рдм рджреЗрдЧрд╛;
- рд╢рд╛рдпрдж рдПрдХ рдФрд░ рд╕реЗрд╡рд╛ рд▓рд┐рдЦреЗрдВ рдЬрд╣рд╛рдВ рдПрдЬреЗрдВрдЯ рдЙрд╕реА рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрд┐рдП рдЧрдП рдХрд╛рдо рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░реЗрдЧрд╛ (рд▓реЗрдЦ рдХреЗ рджрд╛рдпрд░реЗ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИ)ред
рд╡рд┐рдЪрд╛рд░ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди GitHub рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИ редрдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рджреМрд░рд╛рди рдкрд╣рд▓реА рдмрд╛рдд рдЬреЛ рдорди рдореЗрдВ рдЖрддреА рд╣реИ рд╡рд╣ рд╣реИ:- рдорд╢реАрди рдХреЗ рддрд╣рдд рд╡рд╛рдкрд╕, рд╕рд╛рдордиреЗ, рдЪрд┐рддреНрд░, рдЖрджрд┐
- рдЖрдзрд╛рд░ рдХреЗ рд╕рд╛рде рдХрд╛рд░
- рдИрдореЗрд▓ рд╕реЗрд╡рд╛ рдХреЗ рд╕рд╛рде рдорд╢реАрдиред
рдкреАрдЫреЗ рдФрд░ рдЖрдзрд╛рд░, рдПрдХ рдЕрдЪреНрдЫреЗ рддрд░реАрдХреЗ рд╕реЗ, рджреЛрд╣рд░рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдо рдЕрдкрдиреЗ рдорд┐рдиреА-рд╕реНрдЯреЛрд░ рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕ рдлреЙрд░реНрдо рдкрд░ рд▓реЛрдб рдиреНрдпреВрдирддрдо рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЗрди рд╕рднреА рдорд╢реАрдиреЛрдВ рдХреЛ рдПрдХ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдПрдХ рд╣реА рд╕реЗрдЯ рдореЗрдВ рддреИрдирд╛рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИредрд▓реЗрдХрд┐рди рдЬрдм рд╕реЗ рд╣рдо рд╕рд░реНрд╡рд░ рд░рд╣рд┐рдд рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЖрдЗрдП рд╣рдо рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд░реНрд╡рд░ рд░рд╣рд┐рдд рдШрдЯрдХреЛрдВ рдкрд░ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВредрдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдХреИрд╕реЗ рд╣реЛрдирд╣рд╛рд░ рд╕рд░реНрд╡рд░рд╣реАрди рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ, рд╣рдо рд╕рднреА рд╕рдордЭрддреЗ рд╣реИрдВ рдХрд┐ рд╕рд░реНрд╡рд░ рдЕрднреА рднреА рдпрд╣рд╛рдБ рд╣реИрдВ, рд╡реЗ рд╕рд┐рд░реНрдл рдЖрдкрдХреЗ рджреГрд╖реНрдЯрд┐ рдХреНрд╖реЗрддреНрд░ рд╕реЗ рдЧрд╛рдпрдм рд╣реЛ рдЧрдПред рдФрд░ рдЕрдм рд╡рд╣ рдмрд╛рджрд▓ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдЕрдкрдиреЗ рджрдо рдкрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЖрдЗрдП рдХреЗрд╡рд▓ рдРрд╕реЗ рд╕рд░реНрд╡рд░ рд░рд╣рд┐рдд рдШрдЯрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ:
рдЖрд░реЗрдЦ рдкреНрд░рддреНрдпреЗрдХ рдШрдЯрдХ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдПрдХ рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рдкреГрдердХреНрдХрд░рдг рджрд░реНрд╢рд╛рддрд╛ рд╣реИред- AWS рд▓реИрдореНрдмреНрдбрд╛ рдореБрдЦреНрдп рдШрдЯрдХ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХреЛрдб / рддрд░реНрдХ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ,
- рдПрд╕ 3 рд╕реНрдерд┐рд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдФрд░ рдЬреЗрдПрд╕ рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЗ рднрдВрдбрд╛рд░рдг рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ,
- CloudFront - рдХреИрд╢рд┐рдВрдЧ рддрдВрддреНрд░ рдФрд░ рдмрд╣реБ-рдХреНрд╖реЗрддреНрд░реАрдп рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдП,
- SES - рдИрдореЗрд▓ рд╕реЗрд╡рд╛,
- DynamoDB - рдлреЙрд░реНрдо рд╕реЗ рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдзрд╛рд░ (рдХрд┐рд╕рд╕реЗ, рдХреНрдпрд╛ рд╕рд╡рд╛рд▓, рдЬрд╡рд╛рдм рдХрд╣рд╛рдВ рднреЗрдЬрдирд╛ рд╣реИ),
- рдЧреЗрдЯрд╡реЗ рдПрдкреАрдЖрдИ - рд╣рдорд╛рд░реЗ рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП HTTP рдПрдкреАрдЖрдИ,
- рдпрджрд┐ рдЖрдк рдПрдХ рд╕реБрдВрджрд░ рдбреЛрдореЗрди рдирд╛рдо рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд░реВрдЯ53 - рдХреА рдЬрд░реВрд░рдд рд╣реИред
рдЗрди рд╕рднреА рдШрдЯрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдорд╛рд░реЗ рдЕрдЧрд▓реЗ рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛ рдореЗрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдмрд╕ рдЗрд╕рд▓рд┐рдП рдХрд┐ рд▓реЗрдЦ рдХреЛ рдлреИрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВредрд░реВрдЯ 53 рдФрд░ рдХреНрд▓рд╛рдЙрдбрдлреНрд░рдВрдЯ рдХрд╛рдлреА рд╕рд░рд▓ рдШрдЯрдХ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рдЕрд▓рдЧ рд╕реЗ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВредрдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдмрд┐рдЧрд╛рдбрд╝ рдЬреЛ рд╣рдореЗрдВ рдРрд╕рд╛ рд╕рдорд╛рдзрд╛рди рджреЗрдЧрд╛:- рд╣рдо EC2 рдорд╢реАрдиреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рд╕реЗ рджреВрд░ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, ssh рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбрд┐рдмрдЧрд┐рдВрдЧ рдирд╣реАрдВ,
- рдЖрд╕рд╛рди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди: рдереНрд░реЙрдЯрд▓рд┐рдВрдЧ / рдХреИрд╢рд┐рдВрдЧ / рдПрдХреНрд╕реЗрд╕ рдХреЛ рдПрдХ рдХреНрд▓рд┐рдХ рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ,
- рдкрд╣реБрдБрдЪ рдиреАрддрд┐рдпреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ: рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░реЗрдВ рдФрд░ рдкрд╣реБрдБрдЪ рдкреНрд░рджрд╛рди рдХрд░реЗрдВ,
- рдмреЙрдХреНрд╕ рд╕реЗ рд▓реЙрдЧрд┐рдВрдЧ / рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдирд╛,
- рдХреЗрд╡рд▓ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рд╕рдВрд╕рд╛рдзрдиреЛрдВ / рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП рднреБрдЧрддрд╛рди рдХрд░реЗрдВред
рдбреЗрдореЛ
рдкреНрд░рд╢рд┐рдХреНрд╖рдг
рд╣рдорд╛рд░реЗ рд╕рд░реНрд╡рд░ рд░рд╣рд┐рдд рд╕рдорд╛рдзрд╛рди рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ AWS рдХреЗ рд▓рд┐рдП рджреВрд░рд╕реНрде рдкрд╣реБрдБрдЪ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ aws-cli рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ ред рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмрдирд╛рдиреЗ рдФрд░ рдЙрд╕рдХреА рдПрдХреНрд╕реЗрд╕ рдХреБрдВрдЬреА рдФрд░ рдЧреБрдкреНрдд рдХреБрдВрдЬреА рдХреЛ рдЕрдирд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАредрдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЕрд╕реЗрдВрдмрд▓реА
1. рдПрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рд╕реЗ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдирд╛рдПрдБ
рднрд╡рд┐рд╖реНрдп рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдЦреЛрд▓реЗрдВ рдФрд░ рдЙрд╕рдореЗрдВ рд╕реЗ рдПрд╕рдПрдПрдо рд╕реАрдПрд▓рдЖрдИ рд▓реЙрдиреНрдЪ рдХрд░реЗрдВред рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ:
рдиреЛрдЯ: рдПрд╕рдПрдПрдо-рд╕реАрдПрд▓рдЖрдИ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдХрдорд╛рдВрдб рдереЛрдбрд╝реЗ рдЕрд▓рдЧ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рд╕рднреА рд╕рд╣рдЬ рдмрдиреЗ рд░рд╣рддреЗ рд╣реИрдВред рдмрд╕ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд╕рдорд╛рди рдЪреБрдиреЗрдВ рдЬреЛ рдКрдкрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдереЗред рдпрджрд┐ рдЖрдк рдЧреНрд░реЗрдбреЗрд▓ рдЖрдкрдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдЖрдк рдПрдХ рдЕрд▓рдЧ рдмрд┐рд▓реНрдб рдЯреВрд▓ рднреА рдЪреБрди рд╕рдХрддреЗ рд╣реИрдВредрдкрд░рд┐рдпреЛрдЬрдирд╛ "рд╣реИрд▓реЛ, рд╡рд┐рд╢реНрд╡!" рддреИрдпрд╛рд░ред рдЕрдм рдЖрдк рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдирд╛рдо рдФрд░ рдкреИрдХреЗрдЬ, рдирд┐рд░реНрднрд░рддрд╛ рдФрд░ рд╕реНрд░реЛрдд рдХреЛрдб рдкрд░ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред2. рдЪрд▓реЛ рд╡реНрдпрд╕рдиреЛрдВ рд╕реЗ рдирд┐рдкрдЯрддреЗ рд╣реИрдВ
Build.gradle рдХреЗ рд▓рд┐рдП рдирд┐рдореНрди рдирд┐рд░реНрднрд░рддрд╛рдПрдБ рдЬреЛрдбрд╝реЗрдВ:dependencies {
implementation group: 'com.amazonaws.serverless', name: 'aws-serverless-java-container-core', version: '1.4'
implementation group: 'com.amazonaws', name: 'aws-lambda-java-core', version: '1.2.0'
implementation group: 'com.amazonaws', name: 'aws-java-sdk-ses', version: '1.11.670'
implementation group: 'com.amazonaws', name: 'aws-java-sdk-dynamodb', version: '1.11.670'
implementation group: 'com.amazonaws', name: 'aws-lambda-java-log4j2', version: '1.1.0'
implementation group: 'com.fasterxml.jackson.core', name: 'jackson-core', version: '2.10.0'
implementation group: 'commons-io', name: 'commons-io', version: '2.6'
testImplementation group: 'org.mockito', name: 'mockito-core', version: '3.1.0'
testImplementation group: 'org.powermock', name: 'powermock-api-mockito2', version: '2.0.4'
testImplementation group: 'org.powermock', name: 'powermock-module-junit4', version: '2.0.4'
testImplementation group: 'junit', name: 'junit', version: '4.12'
}
рдореБрдЦреНрдп рд╣реИрдВ AWS SDKред рд╡реЗ рдЖрдкрдХреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВрдЧреЗ, рдЬреИрд╕реЗ рдПрд╕рдИрдПрд╕, рдбрд╛рдпрдирдореЛрдмреАрдбреА, рдЖрджрд┐ред3. рд╣рдо рдПрдХ рдореЗрдордирд╛ рд▓рд┐рдЦрддреЗ рд╣реИрдВ
рд╣рдо RequestHandler рдХреЗ рд▓рд┐рдП AwsProxyRequest рдФрд░ ContactUsProxyResponse рдХреЗ рд▓рд┐рдП рдЯреЗрдореНрдкрд▓реЗрдЯ рдЕрдиреБрд░реЛрдз рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрдХреНрд╖рд╛рдПрдВ рдмрджрд▓рддреЗ рд╣реИрдВредpublic class App implements RequestHandler<AwsProxyRequest, ContactUsProxyResponse>
...
public ContactUsProxyResponse handleRequest(AwsProxyRequest request, Context context)
AwsClientFactory AWS SDK-.
public class AwsClientFactory {
private static final Logger LOG = LogManager.getLogger(AwsClientFactory.class);
private final AmazonSimpleEmailService sesClient;
private final DynamoDB dynamoDB;
/**
* AWS regions should be env variables if you want to generalize the solution.
*/
AwsClientFactory() {
LOG.debug("AWS clients factory initialization.");
sesClient = AmazonSimpleEmailServiceClient.builder().withRegion(Regions.EU_WEST_1).build();
AmazonDynamoDB dynamoDBClient = AmazonDynamoDBClientBuilder.standard().withRegion(Regions.EU_WEST_1).build();
dynamoDB = new DynamoDB(dynamoDBClient);
}
DynamoDB getDynamoDB() {
return dynamoDB;
}
AmazonSimpleEmailService getSesClient() {
return sesClient;
}
}
ObjectMapper .
private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
private static final AwsClientFactory AWS_CLIENT_FACTORY = new AwsClientFactory();
.
private SendEmailResult sendEmail(ContactUsRequest contactUsRequest) {
String emailTemplate = getEmailTemplate();
String email = fillTemplate(emailTemplate, contactUsRequest);
SendEmailRequest sendEmailRequest =
new SendEmailRequest(
System.getenv("SENDER_EMAIL"),
new Destination(List.of(System.getenv("RECIPIENT_EMAIL"))),
new Message()
.withSubject(
new Content()
.withCharset(UTF_8.name())
.withData(contactUsRequest.getSubject()))
.withBody(new Body()
.withHtml(new Content()
.withCharset(UTF_8.name())
.withData(email))));
LOG.info("Email template is ready");
return AWS_CLIENT_FACTORY.getSesClient().sendEmail(sendEmailRequest);
}
private String fillTemplate(String emailTemplate, ContactUsRequest contactUsRequest) {
return String.format(
emailTemplate,
contactUsRequest.getUsername(),
contactUsRequest.getEmail(),
contactUsRequest.getPhone(),
contactUsRequest.getQuestion());
}
private String getEmailTemplate() {
try {
return IOUtils.toString(
Objects.requireNonNull(this.getClass().getClassLoader()
.getResourceAsStream("email_template.html")),
UTF_8);
} catch (IOException e) {
throw new RuntimeException("Loading an email template failed.", e);
}
}
private void addEmailDetailsToDb(ContactUsRequest contactUsRequest, SendEmailResult sendEmailResult) {
AWS_CLIENT_FACTORY.getDynamoDB().getTable("ContactUsTable")
.putItem(new Item()
.withPrimaryKey("Id", sendEmailResult.getMessageId())
.withString("Subject", contactUsRequest.getSubject())
.withString("Username", contactUsRequest.getUsername())
.withString("Phone", contactUsRequest.getPhone())
.withString("Email", contactUsRequest.getEmail())
.withString("Question", contactUsRequest.getQuestion()));
}
.
private ContactUsProxyResponse buildResponse(int statusCode, String body) {
ContactUsProxyResponse awsProxyResponse =
new ContactUsProxyResponse();
awsProxyResponse.setStatusCode(statusCode);
awsProxyResponse.setBody(getBodyAsString(body));
awsProxyResponse.addHeader(CONTENT_TYPE, ContentType.APPLICATION_JSON.toString());
awsProxyResponse.addHeader("Access-Control-Allow-Origin", "*");
return awsProxyResponse;
}
private String getBodyAsString(String body) {
try {
return OBJECT_MAPPER.writeValueAsString(new ContactUsResponseBody(body));
} catch (JsonProcessingException e) {
throw new RuntimeException("Writing ContactUsResponseBody as string failed.", e);
}
}
. ┬л// WARMING UP┬╗.
if (Optional.ofNullable(request.getMultiValueHeaders()).map(headers -> headers.containsKey("X-WARM-UP")).orElse(FALSE)) {
LOG.info("Lambda was warmed up");
return buildResponse(201, "Lambda was warmed up. V1");
}
handleRequest()
@Override
public ContactUsProxyResponse handleRequest(AwsProxyRequest request, Context context) {
LOG.info("Request was received");
LOG.debug(getAsPrettyString(request));
if (Optional.ofNullable(request.getMultiValueHeaders()).map(headers -> headers.containsKey("X-WARM-UP")).orElse(FALSE)) {
LOG.info("Lambda was warmed up");
return buildResponse(201, "Lambda was warmed up. V1");
}
ContactUsRequest contactUsRequest = getContactUsRequest(request);
SendEmailResult sendEmailResult = sendEmail(contactUsRequest);
LOG.info("Email was sent");
addEmailDetailsToDb(contactUsRequest, sendEmailResult);
LOG.info("DB is updated");
return buildResponse(200,
String.format("Message %s has been sent successfully.", sendEmailResult.getMessageId()));
}
рдореВрд▓ рддрд░реНрдХ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИред рдзреНрдпрд╛рди рджреЗрдиреЗ рд▓рд╛рдпрдХ рдХрдИ рдмрд┐рдВрджреБ рд╣реИрдВредрдкрд╣рд▓реЗ рд▓реЙрдЧрд┐рдВрдЧ рд╣реИред рдХреЙрдиреНрдЯреЗрдХреНрд╕реНрдЯ рд▓реИрдВрдмрдбрд╛ рд╡рд┐рдзрд┐ рдХреЗ рддрд░реНрдХреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реА рд╕рд╣рд╛рдпрдХ рдЬрд╛рдирдХрд╛рд░реА рд╣реИ, рд╕рд╛рде рд╣реА рдПрдХ рд▓рдХрдбрд╝рд╣рд╛рд░рд╛ рднреА рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЖрдк рдПрдХ рдЕрд▓рдЧ рд▓рдХрдбрд╝рд╣рд╛рд░рд╛ рдирд╣реАрдВ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рд▓рдВрдмреЛрджрд░ рд╕рдВрджрд░реНрдн рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХреЙрд▓ рдХрд░рдирд╛ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ:LambdaLogger logger = context.getLogger();
рджреВрд╕рд░рд╛ рдмрд┐рдВрджреБ рд╡рд╛рд░реНрдорд┐рдВрдЧ рд╣реИред рдЪреВрдВрдХрд┐ рдПрдХ рдореЗрдордиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рд╡рд╛рддрд╛рд╡рд░рдг рдмрдирд╛рдирд╛ рдЖрд▓рд╕реА рд╣реИ, рдЬреЗрд╡реАрдПрдо рд╢реБрд░реВ рдХрд░рдирд╛, рдХреНрд▓рд╛рд╕рдкреИрде рдХреЛ рд▓реЛрдб рдХрд░рдирд╛ рдФрд░ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рдХреБрдЫ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИред рдкрд╣рд▓реА рдХреЙрд▓ рдореЗрдВ рдХрдИ рд╕реЗрдХрдВрдб рд▓рдЧ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдПрдкреАрдЖрдИ рд▓рд┐рдЦрдиреЗ рдкрд░ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИред рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП, рдЖрдк рд╕реНрд╡рдпрдВ AWS рдХреЛ рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЛ рдЕрд▓рд░реНрдЯ рдкрд░ рдХрдИ рд▓рдВрдмреЛрджрд╛ рдЙрджрд╛рд╣рд░рдг рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдХреЛ рд▓рдВрдмреЛрджрд░ рдмреБрд▓рд╛рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред рдпрджрд┐ рд╣рдо рдХреЛрдб рдХреЗ рдореВрд▓ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╣рдо рдПрдХ рдкрддреНрд░ рднреЗрдЬреЗрдВрдЧреЗ рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдХреБрдЫ рдЧрд▓рдд рдбреЗрдЯрд╛ рд▓рд┐рдЦреЗрдВрдЧреЗредрдЗрд╕рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд╡рд╛рд░реНрдо-рдЕрдк рдЕрдиреБрд░реЛрдз рд╕реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЕрдиреБрд░реЛрдз рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрдиреБрд░реЛрдз рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рдЕрдиреБрд░реЛрдз рдореЗрдВ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╢реАрд░реНрд╖рдХ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, "рдПрдХреНрд╕-рд╡рд░реНрдо-рдпреВрдкреА" рд╣реЗрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕реА рднреА рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ - рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдпрд╣ рдПрдХ рд╡рд╛рд░реНрдо-рдЕрдк рдЕрдиреБрд░реЛрдз рд╣реИ рдФрд░ рд╣рдореЗрдВ рдХреЗрд╡рд▓ рд╡реНрдпрд╛рдкрд╛рд░рд┐рдХ рддрд░реНрдХ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИредрдЖрдЦрд┐рд░реА рдЪреАрдЬ рдЬрд┐рд╕ рдкрд░ рдореИрдВ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рд╡рд╣ рд╣реИ рд╕реНрдЯреИрдЯрд┐рдХ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ред рдпрд╣ рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕реНрдЯреЗрдЯрдлреБрд▓ рд▓реИрдореНрдмреНрдбрд╛ рдЙрджрд╛рд╣рд░рдг рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ, рдпрд╣ рдХреЗрд╡рд▓ рдореМрдЬреВрджрд╛ рдФрд░ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрджрд┐ рдХреЛрдб рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди рдЖрдк рдЬрд┐рди рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд╡реИрдзрд╛рдирд┐рдХ рд░реВрдк рд╕реЗ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдлрд┐рд░ рд╕реЗ рд╕реЛрдЪрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рд▓реИрдореНрдмрдбрд╛ рдХреЛ рдмрд╛рдж рдХреА рдХреЙрд▓ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдореЗрдВ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХрд░реЗрдЧрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдЧрд░ рдпреЗ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдЖрд░рдВрднреАрдХрд░рдг рдХреЗ рджреМрд░рд╛рди рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЙрдиреНрд╣реЗрдВ рд╕реНрдерд┐рд░ рдирд╣реАрдВ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред4. рд╣рдо рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрддреЗ рд╣реИрдВ
рд▓реИрдореНрдмреНрдбрд╛ рдХреЛрдб рдХреЛ рдЙрд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рджреНрд╡рд╛рд░рд╛ рдХрд╡рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЖрдк рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рд▓реЗрдЦ рдХреЛ рдЖрдЧреЗ рднреА рдмрдврд╝рдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рд▓реИрдВрдмрдбрд╛ рдкрд░реАрдХреНрд╖рдг рдФрд░ рдСрди-рдкреНрд░рд┐рдорд╛рдЗрд╕реЗрд╕ рд╡рд┐рдХрд╛рд╕ рдкрд░ рд╕рд░реНрд╡рд░ рд░рд╣рд┐рдд рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдХрд╡рд░ рдХрд░реВрдВрдЧрд╛ред рдпрджреНрдпрдкрд┐ рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рднрдВрдбрд╛рд░ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ ред5. рд╣рдо рдПрд╕рдПрдПрдо рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдПрдХ рдЦрд╛рдХрд╛ рд▓рд┐рдЦрддреЗ рд╣реИрдВ
рдЬрдм рд╣рдордиреЗ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдЕрдкрдиреЗ рд▓рдВрдмреЛ рдХреЛ рд▓рд┐рдЦрд╛ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛, рдЙрд╕рдХреЗ рдмрд╛рдж рд╣рдореЗрдВ рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рдореЗрдВ рдЗрди рд╕рднреА рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрд╕рдПрдПрдо-рдЯреЗрдореНрдкрд▓реЗрдЯ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛редрд╕реИрдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рд╕рд╛Serverless Application Model тАУ serverless . , CloudFormation DSL, тАУ Lambda, Gateway, DynamoDB . .
SAM, CloudFormation, Terraform тАУ
IaC-. SAM Serverless-, Terraform .
Terraform
DINS.
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдПрд╕рдПрдПрдо-рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рд╣рдореЗрдВ рдХрд┐рди рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ редAWS :: Serverless :: рдлрд╝рдВрдХреНрд╢рдирдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣рдорд╛рд░реЗ рд▓рд┐рдП рднрд░реА рд╣реБрдИ рд╣реИрдВ рдпрджрд┐ рд╣рдордиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрд╕рдПрдПрдо рдЗрдирд┐рдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣рд╛рдБ рд╣реИ рдХрд┐ рд╡реЗ рдореЗрд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдХреИрд╕реЗ рджрд┐рдЦрддреЗ рд╣реИрдВ:CodeUri: contact-us-function
Handler: com.gralll.sam.App::handleRequest
Runtime: java8
MemorySize: 256
рдпрд╣рд╛рдВ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рдкрд░реНрдпрд╛рдкреНрдд рд╕реНрдкрд╖реНрдЯ рд╣реИредрдХреЛрдбрдпреВрд░реА рд╣рдорд╛рд░реЗрд╣реИрдВрдбрд▓рд░ рд▓реИрдореНрдмреНрдбрд╛ рдХреЗ рд╕рд╛рде рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╣реИ -рд░рдирдЯрд╛рдЗрдо рд╡рд┐рдзрд┐ рдХрд╛ рдкреВрд░рд╛ рд░рд╛рд╕реНрддрд╛ -рдореЗрдореЛрд░реАрдЬрд╛рдЗрдЬ тАЛтАЛрд▓реИрдореНрдмрдбрд╛ рдкрд░ рдХреНрдпрд╛ рд▓рд┐рдЦрд╛ рд╣реИ - рдЦреБрдж рдХреЗ рд▓рд┐рдП рдмреЛрд▓рддрд╛рд╣реИ рдореЗрдореЛрд░реА рдХреА рдмрд╛рдд : рд▓реИрдореНрдмреНрдбрд╛ рдореЗрдВ 3 рдЬреАрдмреА рддрдХ рд░реИрдо рдЙрдкрд▓рдмреНрдз рд╣реИ, рдЬреЛ 2 рд╕реАрдкреАрдпреВ рдХреЗ рд╕рдВрд╕рд╛рдзрди рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИред рдЕрд░реНрдерд╛рдд, рдЖрдк CPU рдХреЛ рдЕрд▓рдЧ рд╕реЗ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ, рдХреЗрд╡рд▓ рдореЗрдореЛрд░реА рдХреА рдорд╛рддреНрд░рд╛ рдХреЛ рдмрдврд╝рд╛ / рдШрдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВредрддреИрдирд╛рддреА рд╡рд┐рдзрд┐ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЧрд▓реЗ рдмреНрд▓реЙрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИредAutoPublishAlias: live
DeploymentPreference:
Type: Canary10Percent10Minutes
AutoPublishAlias - рдЖрдкрдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдирдП рддреИрдирд╛рдд рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдПрдХ рдЙрдкрдирд╛рдо рдЬреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ ред рдХреИрдирд░реА рддреИрдирд╛рддреА рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИредCanary10Percent10Minutes - рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреА рддреИрдирд╛рддреА рдЬреЛ рдЖрдкрдХреЛ рд▓реИрдореНрдмреНрдбрд╛ рдХреЗ рджреЛ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рдПрдХ рд╕рд╛рде рд░рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧреА: рдкреБрд░рд╛рдиреЗ рдФрд░ рдирдП, рд▓реЗрдХрд┐рди рдирдП рдкрд░ рдЯреНрд░реИрдлрд╝рд┐рдХ рдХрд╛ рдХреЗрд╡рд▓ 10% рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░реЗрдВред рдЕрдЧрд░ рджрд╕ рдорд┐рдирдЯ рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рддреЛ рдмрд╛рдХреА рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреЛ рднреА рдирдП рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛редрдЖрдк рдПрд╕рдПрдПрдо рдкреГрд╖реНрда рдкрд░ рдЙрдиреНрдирдд рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ редрдЕрдЧрд▓реЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рд╣реИрдВ рдЬреЛ рдХреЛрдб рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред рдЙрд╕рдХреЗ рдмрд╛рдж, рд▓рдВрдмреЛрджрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдмреНрд▓реЙрдХ:Events:
ContactUs:
Type: Api
Properties:
Path: /contact
Method: post
рдЗрд╕рдореЗрдВ, рд╣рдореЗрдВ рд▓рдВрдмреЛрджрд░ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреНрд░рд┐рдЧрд░ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпреЗ рдПрдкреАрдЖрдИ рдЧреЗрдЯрд╡реЗ рдЕрдиреБрд░реЛрдз рд╣реЛрдВрдЧреЗ редрдпрд╣ рдПрдкреАрдЖрдИ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╕рд░рд▓ рддрд░реАрдХрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдирдП рдмрдирд╛рдП рдЧрдП рдЧреЗрдЯрд╡реЗ рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рд▓реИрдореНрдмреНрдбрд╛ рдХреЗ рд╕рднреА POST / рд╕рдВрдкрд░реНрдХ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ редрдмреЗрд╢рдХ, рд╣рдореЗрдВ рд╕реБрд░рдХреНрд╖рд╛ рдкрд╣рд▓реБрдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░, рдмрдирд╛рдП рдЧрдП рд▓реИрдореНрдмреНрдбрд╛ рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдпрд╛ рдИрдореЗрд▓ рд╕реЗрд╡рд╛ рддрдХ рдкрд╣реБрдВрдЪ рдирд╣реАрдВ рд╣реЛрдЧреАред рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЕрдиреБрдорддрд┐ рджреА рдЬрд╛рдПрдЧреАред AWS рдХреЗ рдЕрдВрджрд░ рдкрд╣реБрдБрдЪ рджреЗрдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВ ред рд╣рдо рд╕рдВрд╕рд╛рдзрди-рдЖрдзрд╛рд░рд┐рдд рдиреАрддрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ:Policies:
- AWSLambdaExecute
- Version: '2012-10-17'
Statement:
- Effect: Allow
Action:
- ses:SendEmail
- ses:SendRawEmail
Resource: 'arn:aws:ses:eu-west-1:548476639829:identity/aleksandrgruzdev11@gmail.com'
- Effect: Allow
Action:
- dynamodb:List*
Resource: '*'
- Effect: Allow
Action:
- dynamodb:Get*
- dynamodb:PutItem
- dynamodb:DescribeTable
Resource: 'arn:aws:dynamodb:*:*:table/ContactUsTable'
рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдбреЗрдЯрд╛рдмреЗрд╕ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рд╣рдордиреЗ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд╛рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП, рд╣рдореЗрдВ рдЙрд╕реА рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАредSES рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ: рдЖрдк рдореЗрд░рд╛ рдИрдореЗрд▓ рдкрддрд╛ рджреЗрдЦреЗрдВред рдЖрдкрдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдЖрдкрдХрд╛ рдЕрдкрдирд╛ рдкрдХреНрдХрд╛ рдкрддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ, рдпрд╣рд╛рдВ рджреЗрдЦреЗрдВ редрдЙрд╕рдХреЗ рдареАрдХ рдмрд╛рдж, рдЖрдк рдмрдирд╛рдП рдЧрдП рдкрддреЗ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рдЗрд╕ рд╕рдВрд╕рд╛рдзрди рдХреЗ рдЖрдЗрдбреЗрдВрдЯрд┐рдЯреА ARN рдХреЛ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдИрдореЗрд▓ рд╕реЗ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВредрдЙрдиреНрд╣реЛрдВрдиреЗ рдореЗрдордиреЗ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ред рдЕрдм рдбреЗрдЯрд╛рдмреЗрд╕ рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВредAWS :: рд╕рд░реНрд╡рд░ рд░рд╣рд┐рдд :: SimpleTableрд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рд╣рдо рдХреЗрд╡рд▓ рдПрдХ ContactUsTable рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдПрдВрдЧреЗ:ContactUsTable:
Type: AWS::Serverless::SimpleTable
Properties:
PrimaryKey:
Name: Id
Type: String
TableName: ContactUsTable
ProvisionedThroughput:
ReadCapacityUnits: 2
WriteCapacityUnits: 2
рдЖрд╡рд╢реНрдпрдХ рдлрд╝реАрд▓реНрдб рдореЗрдВ - рдХреЗрд╡рд▓ Id, рдФрд░ ReadCapacityUnits рдФрд░ WriteCapacityUnits рднреА рдЗрдВрдЧрд┐рдд рдХрд░реЗрдВред рд╣рдо рдХрд┐рди рдореВрд▓реНрдпреЛрдВ рдХреЛ рдЪреБрдирдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдирд╣реАрдВ рдмрддрд╛рдПрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рднреА рдПрдХ рд╡реНрдпрд╛рдкрдХ рд╡рд┐рд╖рдп рд╣реИред рдЖрдк рдЗрд╕реЗ рдпрд╣рд╛рдБ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ ред рдПрдХ рдкрд░реАрдХреНрд╖рдг рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП, 1-2 рдХреЗ рдЖрджреЗрд╢ рдХреЗ рдЫреЛрдЯреЗ рдореВрд▓реНрдп рднреА рдкрд░реНрдпрд╛рдкреНрдд рд╣реИрдВредрдЧреНрд▓реЛрдмрд▓реНрд╕рдЬрдирд░рд▓ рдкреИрд░рд╛рдореАрдЯрд░ рдЗрд╕ рдмреНрд▓реЙрдХ рдореЗрдВ рдирд┐рдХрд╛рд▓реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдлрд╝рдВрдХреНрд╢рди рдпрд╛ рдПрдкреАрдЖрдИ рдХреЗ рдХрдИ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╣реИрдВредGlobals:
Function:
Timeout: 15
Api:
Cors:
AllowOrigin: "'*'"
AllowHeaders: "'Content-Type,X-WARM-UP,X-Amz-Date,Authorization,X-Api-Key'"
рдореИрдВрдиреЗ рдЗрд╕реЗ рдлрдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдордЖрдЙрдЯ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдХреБрдЫ рдХреЙрд░реНрд╕ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд▓рд┐рдП рдЧреЗрдЯрд╡реЗ рдПрдкреАрдЖрдИ рдХреЛ рдмрд╛рдж рдореЗрдВ рдХреЙрдиреНрдЯреИрдХреНрдЯрдпреВ рдлреЙрд░реНрдо рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рд╕реНрдерд┐рд░ рдкреЗрдЬ рд╕реЗ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛редрдЖрдЙрдЯрдкреБрдЯрдпрд╣ рдмреНрд▓реЙрдХ рдЖрдкрдХреЛ рд╡реИрд╢реНрд╡рд┐рдХ AWS CloudFormation рд╕рдВрджрд░реНрдн рдореЗрдВ рдХреБрдЫ рдЪрд░ рдХреЛ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИредOutputs:
ContactUsApi:
Description: "API Gateway endpoint URL for Prod stage for ContactUs function"
Value: !Sub "https://${ServerlessRestApi}.execute-api.${AWS::Region}.amazonaws.com/Prod/contact/"
ContactUsFunction:
Description: "ContactUs Lambda Function ARN"
Value: !GetAtt ContactUsFunction.Arn
ContactUsFunctionIamRole:
Description: "Implicit IAM Role created for ContactUs function"
Value: !GetAtt ContactUsFunctionRole.Arn
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ рдПрдХ ContactUsApi рд╡реИрд░рд┐рдПрдмрд▓ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛, рдЬреЛ рдХрд┐ рд╣рдорд╛рд░реЗ рдмрдирд╛рдП рдПрдкреАрдЖрдИ рдПрдВрдбрдкреЙрдЗрдВрдЯ рдХреЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдкрддреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдореВрд▓реНрдп рдкрд░ рд╕реЗрдЯ рд╣реЛрдЧрд╛редрдЪреВрдБрдХрд┐ рд╣рдо $ {ServerlessRestApi} рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ , AWS рд╣рдорд╛рд░реЗ рдирдП рдЧреЗрдЯрд╡реЗ рдПрдкреАрдЖрдИ рдХреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░реЗрдЧрд╛ред рдирддреАрдЬрддрди, CloudFormation рддрдХ рдкрд╣реБрдВрдЪ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рднреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдпрд╣ рдкрддрд╛ рдорд┐рд▓ рд╕рдХреЗрдЧрд╛ - рдЬрд┐рд╕рд╕реЗ рдЖрдк рдЕрдкрдиреА рд╕реЗрд╡рд╛рдУрдВ рдХреЗ URL рдХреЛ рд╣рд╛рд░реНрдбрдХреЛрдб рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдЦреИрд░, рдПрдХ рдФрд░ рдкреНрд▓рд╕ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдЙрдЯрдкреБрдЯ рдХреА рд╕реВрдЪреА рдХреЛ рджреЗрдЦрдирд╛ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ - рдЖрдкрдХреЗ рд╕реНрдЯреИрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдореЗрдЯрд╛ рдЬрд╛рдирдХрд╛рд░реАредрдХрд╛рд░реНрдпреЛрдВ рдХреА рдПрдХ рдкреВрд░реА рд╕реВрдЪреА рдФрд░ рдЖрдк рдХрд┐рди рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ редрдкреИрд░рд╛рдореАрдЯрд░рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдк рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░реНрд╕ рдмреНрд▓реЙрдХ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдпреЗ рд╡рд┐рдХрд▓реНрдк рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рдЕрдзрд┐рдХ рдмрд╣реБрдореБрдЦреА рдмрдирд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдВрдЧреЗред рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рдХрд┐рд╕реА рдЕрдиреНрдп рдмреНрд▓реЙрдХ рдореЗрдВ, рдЖрдк рдЗрди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рдВрджрд░реНрдн рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдХреБрдЫ рдорд╛рдиреЛрдВ рдХреЛ рд╣рд╛рд░реНрдбрдХреЛрдб рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореЗрд░реЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рдпрд╣ рдИрдореЗрд▓, рдПрд╕рдИрдПрд╕ рдПрдЖрд░рдПрди, рдореЗрдореЛрд░реА рдХреА рдорд╛рддреНрд░рд╛ рдЖрджрд┐ рд╣реЛ рд╕рдХрддрд╛ рд╣реИредрд╡рд╣ рдкреВрд░рд╛ рдЦрд╛рдХрд╛ рд╣реИред рдХреЛрдИ рднреА рдПрдХ рдЬреЛрдбрд╝реЗ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдордирд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ S3 рдмрд╛рд▓реНрдЯреА, рдХрд┐рд╕реА рднреА рдЕрдиреНрдп CloudFormation рд╕рдВрд╕рд╛рдзрди, рдпрд╛ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдПрдХ рдХрд╕реНрдЯрдо рд╕рдВрд╕рд╛рдзрди ред6. рд╣рдо рддреИрдирд╛рддреА рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВ
рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЧреНрд░реИрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдПрд╕рдПрдПрдоредрд╕рднрд╛F:\aws\projects\contact-us-sam-app>sam build
Building resource 'ContactUsFunction'
Running JavaGradleWorkflow:GradleBuild
Running JavaGradleWorkflow:CopyArtifacts
Build Succeeded
Built Artifacts : .aws-sam\build
Built Template : .aws-sam\build\template.yaml
Commands you can use next
=========================
[*] Invoke Function: sam local invoke
[*] Deploy: sam deploy тАУguided
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд░реВрдЯ рд╕реЗ рд╕реИрдо рдмрд┐рд▓реНрдб рдХрдорд╛рдВрдб рдХреЛ рд░рди рдХрд░рдирд╛ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ .aws-sam рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдПрдХрддреНрд░рд┐рдд рдХрд░реЗрдЧрд╛ : рдХрдХреНрд╖рд╛рдПрдВ, рдирд┐рд░реНрднрд░рддрд╛, рдПрд╕рдПрдПрдо рдЯреЗрдореНрдкрд▓реЗрдЯредрдЗрд╕рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдПрдХ S3 рдмрд╛рд▓реНрдЯреА рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдПрд╕рдПрдПрдо рдмрд╛рдж рдореЗрдВ рд╕рднреА рдПрдХрддреНрд░рд┐рдд рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдХреЛ рдЕрдкрд▓реЛрдб рдХрд░рддрд╛ рд╣реИредрдпрд╣ рдмреНрд░рд╛рдЙрдЬрд╝рд░-рдЖрдзрд╛рд░рд┐рдд AWS рдХрдВрд╕реЛрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдпрд╛ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИaws s3 mb s3://bucket-name
рдиреЛрдЯ: рд╕рднреА рдмрд╛рд▓реНрдЯрд┐рдпрд╛рдБ рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рд╕рдВрджрд░реНрдн рдореЗрдВ рдмрдирд╛рдИ рдЧрдИ рд╣реИрдВ, рдФрд░ рдпрд╣ рд╕рднреА рдЦрд╛рддреЛрдВ рдХреЗ рдмреАрдЪ рд░рдореНрдорд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд┐рд╕реА рдХреЛ рдЕрдкрдиреЗ рдЦрд╛рддреЗ рдореЗрдВ рдмрдирд╛ рдЪреБрдХреЗ рд╣реИрдВ рддреЛ рдЖрдк рдПрдХ рдмрд╛рд▓реНрдЯреА рдирд╣реАрдВ рдмрдирд╛ рд╕рдХрддреЗредрдЬрдм рдмрд╛рд▓реНрдЯреА рддреИрдпрд╛рд░ рд╣реЛ рдЬрд╛рдП, рддреЛ рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ:sam package --output-template-file packaged.yaml --s3-bucket <YOUR_BACKET>
рдкреИрдХреЗрдЬ рдкрд░рд┐рдгрд╛рдоF:\aws\projects\contact-us-sam-app>sam package --output-template-file packaged.yaml --s3-bucket contact-us-sam-app
Uploading to ea0c122c06a50d9676fbf9000a80a3bf 9212768 / 9212768.0 (100.00%)
Successfully packaged artifacts and wrote output template to file packaged.yaml.
Execute the following command to deploy the packaged template
sam deploy --template-file F:\aws\projects\contact-us-sam-app\packaged.yaml --stack-name <YOUR STACK NAME>
рдореИрдВрдиреЗ рдЕрдкрдирд╛ рд╕рдВрдкрд░реНрдХ us-sam-app рдмрд╛рд▓реНрдЯреА рдмрддрд╛рдпрд╛, рдФрд░ рдПрд╕рдПрдПрдо рдиреЗ рд╕рднреА рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕реНрдерд╛рди рдкрд░ рдЕрдкрд▓реЛрдб рдХрд░ рджрд┐рдпрд╛ред рдЕрдЧрд▓рд╛, рдПрд╕рдПрдПрдо рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдЯреИрдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрджреЗрд╢ рдмрддрд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕ рддрд░рд╣ рдЖрдкрдХреЗ рдирд┐рд░реНрдгрдп рдХреЛ рдПрдореНрдмреЗрдб рдХрд░рддрд╛ рд╣реИред рд╣рдо рдЖрджреЗрд╢ рдХреЛ рдЕрдВрдЬрд╛рдо рджреЗрддреЗ рд╣реИрдВ, рдереЛрдбрд╝рд╛ рдЕрдВрддрд┐рдо рд░реВрдк рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:sam deploy --template-file packaged.yaml --region eu-west-1 --capabilities CAPABILITY_IAM --stack-name contact-us-sam-app
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдореИрдВрдиреЗ рдЬреЛрдбрд╝рд╛ - рдпреЛрдЧреНрдпрддрд╛рдПрдБ рдХреНрд╖рдорддрд╛ + рдЖрдИрдПрдПрдо ред рдпрд╣ CloudFormation рдХреЛ IAM рд╕рдВрд╕рд╛рдзрди рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдХрд░реЗрдЧрд╛ред рдЕрдиреНрдпрдерд╛, рдЖрдкрдХреЛ рдмрдирд╛рддреЗ рд╕рдордп рдПрдХ рдЕрдкрд░реНрдпрд╛рдкреНрдд рдЕрдкрд░реНрдпрд╛рдкреНрддрддрд╛ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧреАредрдЗрд╕ рдХрдорд╛рдВрдб рдХреЗ рдХрд╛рд░реНрдп рдХрд╛ рд▓реЙрдЧ рдирд┐рдореНрди рд╣реИ (рдЪрд┐рддреНрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИ)ред рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрд╕рд╛рдзрди рдХреА рд╕реНрдерд┐рддрд┐ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рдорд╛рди рдЬреИрд╕реЗ рд╡рд┐рд╡рд░рдг SAM CLI рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реБрдПред
7. CloudFormation рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ
рд╣рдо рд╕рд╛рдВрддреНрд╡рдирд╛ рдореЗрдВ рддреИрдирд╛рддреА рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рддрдХ рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрдм рддрдХ рдХрд┐ рдХреЛрдИ рд╕рдВрджреЗрд╢ рдпрд╣ рдирд╣реАрдВ рдХрд╣рддрд╛ рдХрд┐ рд╕реНрдЯреИрдХ рдХреЛ рддреИрдирд╛рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдкрд┐рдЫрд▓реЗ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рдореЗрдВ рддреИрдирд╛рддреА рдХрдорд╛рдВрдб рд▓реЙрдЧ):Successfully created/updated stack - contact-us-sam-app in eu-west-1
рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдкрдХреЛ рдпрд╣ рд╕рдВрджреЗрд╢ рдХреИрдирд░реА рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдореЛрдб рдХреЗ рдХрд╛рд░рдг рдХреЗрд╡рд▓ рджрд╕ рдорд┐рдирдЯ рдмрд╛рдж рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред рдЗрд╕рд▓рд┐рдП, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрдВрд╕реЛрд▓ рдЦреЛрд▓рдирд╛ рдФрд░ рд╡рд╣рд╛рдВ рд╕реНрдЯреИрдХ рджреЗрдЦрдирд╛ рдЖрд╕рд╛рди рд╣реИред
рдХреБрдЫ рд╕рдордп рдмрд╛рдж, рд╕реНрдерд┐рддрд┐ CREATE_COMPLETE рдореЗрдВ рдмрджрд▓ рдЬрд╛рдПрдЧреА , рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╕рдлрд▓ рд╕рдорд╛рдкрди рд╣реЛрдЧрд╛ред рдИрд╡реЗрдВрдЯреНрд╕рдЯреИрдм рдореЗрдВ, рдЖрдк рд╕рднреА рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рд╕реНрдерд┐рддрд┐ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдкрдХрд╛ рд╕реНрдЯреИрдХ рдлреНрд▓реЙрдк рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ рдЖрдк рд╡рд┐рд╕реНрддреГрдд рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣: UPDATE_FAILED - рдпрджрд┐ рдЖрдк рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдЧреЗрдЯрд╡реЗ рдПрдкреАрдЖрдИ рдХреЛ рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддреЗ рд╣реИрдВред
рд╕рдВрд╕рд╛рдзрди рдЯреИрдм рдореЗрдВ, рдЖрдк рд╕рднреА рдмрдирд╛рдП рдЧрдП рд╕рдВрд╕рд╛рдзрди рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЙрдирдХреА рдорд╛рддреНрд░рд╛ рдкрд░ рдЖрд╢реНрдЪрд░реНрдп рди рдХрд░реЗрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╣рдордиреЗ рдПрд╕рдПрдПрдо рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдФрд░ рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рддрд╛рд▓рд┐рдХрд╛ рдШреЛрд╖рд┐рдд рдХреА, рдХреНрд▓рд╛рдЙрдбрдлрд╝реЙрд░реНрдореЗрд╢рди рдиреЗ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдХрдИ рдЕрдиреНрдп рд╕рдВрд╕рд╛рдзрди рдмрдирд╛рдПред рдпрджрд┐ рдЖрдк рдЙрдирдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╕рдордЭ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗ рдХрд┐рд╕ рд╕реЗрд╡рд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВредрдЕрдкреА рдЧреЗрдЯрд╡реЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛:- ServerlessRestApi
- ServerlessRestApiDeployment
- ServerlessRestApiProdStage
рд▓реИрдореНрдмреНрдбрд╛ рдХреЗ рд▓рд┐рдП рднреА рдХрдИ рдЕрддрд┐рд░рд┐рдХреНрдд рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдП рдЧрдП рдереЗредрдЕрдм рдЖрдЙрдЯрдкреБрдЯ рдЦреЛрд▓реЗрдВ рдФрд░ рд╣рдорд╛рд░реЗ рдПрдкреАрдЖрдИ рдХрд╛ URL рдвреВрдВрдвреЗрдВред рдЗрд╕реЗ рдХреЙрдкреА рдХрд░реЗрдВ, рдпрд╣ рдЬрд▓реНрдж рд╣реА рдХрд╛рдо рдЖрдПрдЧрд╛ред8. HTML рд╕рдВрдкрд░реНрдХ рдлрд╝реЙрд░реНрдо
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдХреЛ рдпрд╛рдж рд╣реИ, рдореИрдВрдиреЗ рдХреЙрдиреНрдЯреИрдХреНрдЯреНрд╕ рдлреЙрд░реНрдо рдмрдирд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдФрд░ рдЕрдм рд╣рдореЗрдВ рдХрд┐рд╕реА рддрд░рд╣ рдЗрд╕реЗ рди рдХреЗрд╡рд▓ рд╕реНрдерд╛рдиреАрдп рдорд╢реАрди рдкрд░ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИредрдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗрд░реВрдк рдореЗрдВ рд╕реНрд╡рдпрдВ рдХреЗ рд▓рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рд╕рд░рд▓рддрдо HTML рдлреЙрд░реНрдо рд▓реЗрдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдФрд░ рдЧреЗрдЯрд╡реЗ рдПрдкреАрдЖрдИ рдХреЙрд▓ рдХреЛ рдЕрдЬрд╛рдХреНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬреЛрдбрд╝рд╛ред
рдлреЙрд░реНрдо рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВрдиреЗ рдбрд┐рдмрдЧрд┐рдВрдЧ рдФрд░ рднрд░рдиреЗ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдмрдЯрди рдЬреЛрдбрд╝реЗ:рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реЗрдЯ рдХрд░реЗрдВ - рд╡рд┐рдХрд▓реНрдк, рдЬреИрд╕рд╛ рдХрд┐ рдЕрдкреЗрдХреНрд╖рд┐рдд рдерд╛, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкреИрд░рд╛рдореАрдЯрд░ HTML рдХреЗ рдЕрдВрджрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдП рдЧрдП рд╣реИрдВред$("#url-input").val("https://4ykskscuq0.execute-api.eu-west-1.amazonaws.com/Prod/contact");
$("#name-input").val("Mike");
$("#email-input").val("Mike@somemail.com");
$("#phone-input").val("+79999999999");
$("#description-input").val("How much does it cost?");
рдпрджрд┐ рдЖрдк рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ url-input рдХреЛ рдЕрдкрдиреЗ рдЧреЗрдЯрд╡реЗ API рдХреЗ рдкрде рдореЗрдВ рдмрджрд▓реЗрдВ, рдЬрд┐рд╕реЗ рдЖрдкрдиреЗ рдЖрдЙрдЯрдкреБрдЯ рд╕реЗ рдХреЙрдкреА рдХрд┐рдпрд╛ рдерд╛ редрдореЗрдЬрдмрд╛рдиреА- рдПрдХ рдирдпрд╛ S3 рдмрд╛рд▓реНрдЯреА рдмрдирд╛рдПрдБред
- рд╣рдо рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдЪреБрдирдХрд░ HTML рдлрд╝рд╛рдЗрд▓ рдХреЛ рдмрд╛рд▓реНрдЯреА рдореЗрдВ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВред
- рд╣рдо рдЙрд╕ рдмрд╛рд▓реНрдЯреА рдореЗрдВ рдЬрд╛рддреЗ рд╣реИрдВ рдЬрд╣рд╛рдБ рд╣рдордиреЗ рдлрд╛рдЗрд▓ рдЕрдкрд▓реЛрдб рдХреА рдереАред
- рдкреНрд░реЙрдкрд░реНрдЯреАрдЬ рдкрд░ рдЬрд╛рдПрдВ, рдлрд┐рд░ рд╕реНрдЯреЗрдЯрд┐рдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдЪрд╛рд▓реВ рдХрд░реЗрдВ рдФрд░ рдЕрдкрдирд╛ рдирдпрд╛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдк рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ рджреЗрдЦреЗрдВред
9. рд╕реНрд╡рд╛рд╕реНрдереНрдп рдЬрд╛рдБрдЪ
рдорд╛рдирдХ рдЕрдиреБрд░реЛрдзрдЕрдм рдЖрдк рдЕрдкрдиреЗ рдлрд╝реЙрд░реНрдо рдХреЗ рд▓рд┐рдВрдХ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реЗрдЯ рдХрд░реЗрдВ рдФрд░ рднреЗрдЬреЗрдВ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВредрдЗрд╕ рддрд░рд╣ рдЖрдк рдПрдХ рдЕрдиреБрд░реЛрдз рдХрд░реЗрдВрдЧреЗ рдЬреЛ рдЧреЗрдЯрд╡реЗ рдПрдкреАрдЖрдИ рд╕реЗ рд╣реЛрдХрд░ рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рд▓рд╛рдореНрдмрд╛ рддрдХ рдЬрд╛рдПрдЧрд╛редрдпрджрд┐ рдЖрдкрдиреЗ рдХреБрдЫ рд╕рдордп рдмрд╛рдж рд╕рдм рдХреБрдЫ рдареАрдХ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рд╣реИ рддреЛ рдЖрдкрдХреЛ рдПрдХ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧрд╛:рд╕рдлрд▓: рд╕рдВрджреЗрд╢ 0102016f28b06243-ae897a1e-b805-406b-9987-019f21547682-000000 рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рднреЗрдЬрд╛ рдЧрдпрд╛ рд╣реИред
рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╕рдВрджреЗрд╢ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЕрдкрдиреЗ рдореЗрд▓рдмреЙрдХреНрд╕ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ рдЬрд┐рд╕реЗ рдЖрдкрдиреЗ рдПрд╕рдПрдПрдо рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдиреЗ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдирд╣реАрдВ рдмрджрд▓рд╛ рд╣реИ, рддреЛ рдкрддреНрд░ рдЗрд╕ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╣реЛрдЧрд╛:
рдЖрдк рдбрд╛рдпрдирд╛рдореЛрдбреАрдмреА рднреА рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдПрдХ рдирдИ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рджрд┐рдЦрд╛рдИ рджреА рд╣реИредрдПрдХ рдардВрдб рд╢реБрд░реВ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВрдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рд╕рдлрд▓ рднреЗрдЬрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрджреЗрд╢ рдХрд╛рдлреА рд▓рдВрдмреЗ рд╕рдордп рдХреЗ рдмрд╛рдж рдЖрдпрд╛ рдерд╛ред рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рд▓реИрдВрдмрдбрд╛ рд╕реЗрд╡рд╛, рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдиреБрд░реЛрдз рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реА рд╣реИ, рдЖрдкрдХреЗ рдЬрд╛рд╡рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдЙрджрд╛рд╣рд░рдг рдЙрдард╛рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдореЗрдВ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдФрд░ рдЬреЗрдЖрд░рдИ рдХреЗ рд╕рд╛рде рдХрдВрдЯреЗрдирд░ рдХреЛ рдЙрдард╛рдирд╛ , рдХреНрд▓рд╛рд╕рдкреИрде рдХреЛ рд▓реЛрдб рдХрд░рдирд╛, рд╕рднреА рдЪрд░ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ, рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА рд╣реИрдВрдбрд▓ рдХреА рд╢реБрд░реБрдЖрдд рд╣реЛрддреА рд╣реИ ( ) рдХрд╛ рд╣реИ ред рдЗрд╕реЗ рдХреЛрд▓реНрдб рд╕реНрдЯрд╛рд░реНрдЯ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИредрдлрд┐рд░ рд╕реЗ рдлреЙрд░реНрдо рднрд░рдиреЗ рдФрд░ рд╕рдмрдорд┐рдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдЗрд╕ рдмрд╛рд░ рдЬрд╡рд╛рдм рд▓рдЧрднрдЧ рддреБрд░рдВрдд рдЖрдпрд╛, рд╣реИ рдирд╛? рдпрджрд┐ рдкрд╣рд▓реЗ рдФрд░ рджреВрд╕рд░реЗ рдЕрдиреБрд░реЛрдз рдХреЗ рдмреАрдЪ 20-30 рдорд┐рдирдЯ рд╕реЗ рдЕрдзрд┐рдХ рдмреАрдд рдЪреБрдХреЗ рд╣реИрдВ, рддреЛ рдкрд░рд┐рдгрд╛рдо рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВредрдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдХреНрдпрд╛ рд╣реИ? рдФрд░ рдЗрд╕ рддрдереНрдп рдХреЗ рд╕рд╛рде рдХрд┐ рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рд▓рд╛рдореНрдмрд╛ рдХреИрд╢ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдкрдиреЗ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рд▓реИрдВрдмрдбрд╛рд╕ рдХреЗ рд╕рд╛рде рдХрдВрдЯреЗрдирд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рдереЗред рдпрд╣ рд╡рд┐рдзрд┐ рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреВрд░реЗ рд╕рдВрджрд░реНрдн рдХреЗ рд╢реБрд░реБрдЖрддреА рд╕рдордп рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИредрдЗрд╕ рдмрд╛рдд рдкрд░ рдХреЛрдИ рд╕реНрдкрд╖реНрдЯ рд╕рд╣рд╕рдВрдмрдВрдз рдирд╣реАрдВ рд╣реИ рдХрд┐ рд▓рдореНрдмреЗ рд╕рдордп рддрдХ рд▓реИрдВрдмрдбрд╕ рдХрд┐рд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХреИрд╢ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдиреЗ рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдкрд╛рдпрд╛ рдХрд┐ рдпрд╣ рд╕реАрдзреЗ рд░реИрдо рдХреЗ рдЪреБрдиреЗ рд╣реБрдП рдореВрд▓реНрдп рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдпрд╛рдиреА 128MB рдореЗрдореЛрд░реА рд╡рд╛рд▓рд╛ рдПрдХ рд▓реИрдореНрдмреНрдбрд╛ 3GB рдХреЗ рд╕рд╛рде рдЬреНрдпрд╛рджрд╛ рд╕рдордп рддрдХ рдЙрдкрд▓рдмреНрдз рд░рд╣реЗрдЧрд╛ред рд╢рд╛рдпрдж рдЕрдиреНрдп рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрд╕ рдХреНрд╖реЗрддреНрд░ рдкрд░ рдФрд╕рдд рд▓реЛрдб рдЬрд┐рд╕рдореЗрдВ рдЖрдкрдХреЗ рд▓реИрдореНрдмреНрдбрд╛ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЧрд▓рдд рд╣реИредрдЗрд╕рд▓рд┐рдП, рдЕрдкрдиреЗ рдЖрдк рдХреЛ рдкреНрд░рдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ рдпрджрд┐ рдЖрдк рддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдХреИрд╢рд┐рдВрдЧ рд╕рдордп рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рдПрдВредрд╡рд╛рд░реНрдорд┐рдВрдЧ рдЕрдкрдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдк рд▓реИрдореНрдмрдбрд╛ рд╣реАрдЯрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдХреЛрдб рдореЗрдВ, рдореИрдВрдиреЗ рдПрдХ X-WAMP-UP рд╣реЗрдбрд░ рдЪреЗрдХ рдЬреЛрдбрд╝рд╛ ред рдпрджрд┐ рдХреЛрдИ рд╣реИ, рддреЛ рд▓реИрдореНрдмрдбрд╛ рдмрд╕ рдХрд┐рд╕реА рднреА рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрдВрдЯреЗрдирд░ рдмрд╛рдж рдХреА рдХреЙрд▓ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реЛрдЧрд╛редрдЖрдк рдЕрдкрдиреЗ рд▓реИрдореНрдмреНрдбрд╛ рдХреЛ рд╕реНрд╡рдпрдВ рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреНрд░рд╛рдЙрди рдЯрд╛рдЗрдорд░ рджреНрд╡рд╛рд░рд╛, рдХреНрд▓рд╛рдЙрдбрд╡рдЪ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗред рдпрд╣ рдорджрдж рдХрд░реЗрдЧрд╛ рдпрджрд┐ рдЖрдк рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рдХрд┐ рдЖрдкрдХреЗ рдЧреНрд░рд╛рд╣рдХ рдХреЛрд▓реНрдб рд╕реНрдЯрд╛рд░реНрдЯ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВредHTML рдлреЙрд░реНрдо рдореЗрдВ, рдЖрдк рд╡рд╛рд░реНрдордЕрдк рдореЛрдб рдмрдЯрди рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рд╣реЗрдбрд░ рдХреЛ рдЕрдиреБрд░реЛрдз рдореЗрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдЖрдк рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рди рддреЛ рдкрддреНрд░ рднреЗрдЬрдирд╛ рдФрд░ рди рд╣реА рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рд▓рд┐рдЦрдирд╛ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд▓реИрдореНрдмрдбрд╛ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЖрддреА рд╣реИ, рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЕрдиреБрд░реЛрдз рдХреЗ рдмрд╛рдж рдХреЗ рдХреЙрд▓ рдореЗрдВ рдЕрдзрд┐рдХ рд╕рдордп рдирд╣реАрдВ рд▓рдЧреЗрдЧрд╛редрд╕рд╛рд░рд╛рдВрд╢
рд▓реЗрдЦ рдХреЗ рджреМрд░рд╛рди, рд╣рдо рддрдерд╛рдХрдерд┐рдд рдбрд┐рдЬрд╛рдЗрди рдореЗрдВ рдЗрд╕рдХреА рд░рд┐рд▓реАрдЬ рдХреЗ рд▓рд┐рдП рдЖрд╡реЗрджрди рдХреЗ рдбрд┐рдЬрд╛рдЗрди рд╕реЗ рд╕рднреА рдореБрдЦреНрдп рдЪрд░рдгреЛрдВ рд╕реЗ рдЧреБрдЬрд░реЗ редрдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЛ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рд░реНрд╡рд░рд╣рд┐рдд рдФрд░ рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рд▓реИрдВрдмрдбрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реБрди рдЪреБрдХреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЬрд┐рдирдХреЗ рдкрд╛рд╕ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЕрдиреБрднрд╡ рдирд╣реАрдВ рд╣реИ, рд╡реЗ рдЗрд╕ рдЧрд╛рдЗрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗ рдФрд░ рдорд╣рд╕реВрд╕ рдХрд░ рдкрд╛рдПрдВрдЧреЗ рдХрд┐ рдпрд╣ рдХреБрдЫ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреА рддреИрдирд╛рддреА рдХреА рдЧрддрд┐ рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд▓рд╛рдн рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХреЗрд╡рд▓ рдпрд╣реА рдирд╣реАрдВред рдЕрдкрдиреЗ рд▓рд┐рдПрд▓рд╛рдн, рдореИрдВрдиреЗ рд╕рдмрд╕реЗ рдореВрд▓реНрдпрд╡рд╛рди рд▓рд╛рднреЛрдВ рдХреА рдкрд╣рдЪрд╛рди рдХреА рд╣реИ:- Free Tier , , .
- 1-2 . /.
- , , .
- Serverless . , тАФ . SAM AWS. AWS , , .
- Lambda , .
- Serverless , , . ELK/Promethes/Grafana .
- , API. API Key, IAM , .
- рдЦреИрд░, рд╢рд╛рдпрдж рд╕рдмрд╕реЗ рдмреБрдирд┐рдпрд╛рджреА рдмрд╛рдд рд╕рд░реНрд╡рд░ рд░рд╣рд┐рдд рд╣реИред рдЗрд╕ рдмрд╛рдд рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдИрд╕реА 2 рдЙрджрд╛рд╣рд░рдг рдЖрдкрдХреЛ рдХрд┐рд╕рдХреЗ рд▓рд┐рдП рднреБрдЧрддрд╛рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреНрд░реИрд╢ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЕрд▓рд░реНрдЯ рдХреИрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ, рдСрдЯреЛ-рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ рдЖрджрд┐ред
рдиреБрдХрд╕рд╛рдирджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЕрдм рдЖрдк рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХреЛ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдХреНрдпреВрдмреЗрд░ рдореЗрдВ рдЕрдкрдиреЗ рдкрд╕рдВрджреАрджрд╛ рдорд╛рдЗрдХреНрд░реЛрд╕рд┐рд╕реНрдЯрд░реНрд╕ рдХреЗ рдмрдЬрд╛рдп рдЙрджреНрдпрдо рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдмрд╣реБрдд рдмрд╛рд░, рдЖрдкрдХреЛ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЙрдкрдпреБрдХреНрдд рд╕рдорд╛рдзрд╛рди рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЧрд╣рд░реА рдЦреБрджрд╛рдИ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИредрдФрд░ рдореЗрд░реА рдпрд╣ рднреА рдЯрд┐рдкреНрдкрдгреА рд╣реИ рдХрд┐ рд▓реИрдореНрдмрдбрд╛ рдХреЛ рдЪреБрдирддреЗ рд╕рдордп рдЖрдкрдХреЛ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП:- рдардВрдбреА рд╢реБрд░реБрдЖрддред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЬрдм рддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд░рд╢реНрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЬрд╛рд╡рд╛ рдпрд╛ рд╕реА # рдЬреИрд╕реА рднрд╛рд╖рд╛рдПрдВред рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЧрд░реНрдо рдХрд░рдХреЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рд╕реЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдирд╛ рдФрд░ рд▓рд╛рдЧрдд рдФрд░ рд╕рдВрднрд╛рд╡рд┐рдд рд▓рд╛рднреЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ
- . 3GB , 2 , , - Fargate, , .
- API, , .
- / 1-2 Serverless, .
- рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА Coober рдореЗрдВ microservices рдФрд░ CI / CD рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪрд╛ рд╣реИ, рддреЛ рдпрд╣ рдлрд┐рд░ рд╕реЗ рдмрд╣рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рд╣реЛрдЧрд╛ (рд╡рд┐рд╢реЗрд╖рдХрд░ рдкреНрд░рдмрдВрдзрдХреЛрдВ рдХреЗ рд▓рд┐рдП) рдПрдХ рдФрд░ CI / CD рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ред
- рдЦреИрд░, рдмрд┐рдирд╛ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдХрд╣рд╛рдВред рдФрд░ рдереНрд░реВрдкреБрдЯ рдХреЗ рд▓рд┐рдП рд▓реИрдореНрдмреНрдбрд╛ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдХрд╛рдлреА рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрднреА рднреА рд╕рд╛рдорд╛рдиреНрдп рдЫрд┐рдбрд╝рдХрд╛рд╡ рдкрд░реАрдХреНрд╖рдг рд╕реЗ рдЕрд▓рдЧ рд╣реИ, рдФрд░ рдХрдИ рдХрд╛рд░рдХреЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЙрдкрдпреЛрдЧрд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, AWS рд▓реИрдВрдмрдбрд╛ рдФрд░ рдЕрдиреНрдп рд╕рд░реНрд╡рд░ рд░рд╣рд┐рдд рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ, рдПрд╕рд┐рдВрдХреНрд╕ рдФрд░ рдЗрд╡реЗрдВрдЯ-рд╕рдВрдЪрд╛рд▓рд┐рдд рд╡рд┐рдХрд╛рд╕ рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдлрд┐рдЯ рдмреИрдарддрд╛ рд╣реИред рдФрд░ рдпрд╣ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣реИ рдХрд┐ рдкреНрд░рджрд░реНрд╢рди рдФрд░ рд▓рд╛рдЧрдд рджреЛрдиреЛрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЗрд╖реНрдЯрддрдо рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рджреА рдЧрдИ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕рд░реНрд╡рд░рд╕ рд╕рдорд╛рдзрд╛рди рдорд╣рддреНрд╡рдкреВрд░реНрдг рднреВрдорд┐рдХрд╛ рдирд┐рднрд╛рдПрдВрдЧреЗ:
рдкреБрдирд╢реНрдЪ
рдЪреВрдВрдХрд┐ рд▓реЗрдЦ рдХрд╛рдлреА рд╡реНрдпрд╛рдкрдХ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдореИрдВ рдЗрд╕реЗ рдФрд░ рднреА рдЕрдзрд┐рдХ рдирд╣реАрдВ рдмрдврд╝рд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдореИрдВ рд╕рдВрднрд╡рддрдГ рдПрдХ рдирд┐рд░рдВрддрд░рддрд╛ рддреИрдпрд╛рд░ рдХрд░реВрдВрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рдореИрдВ рдпрд╣ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ рдХрд┐ рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рдХрдВрд╕реЛрд▓, рдПрд╕рдПрдПрдо рдлреНрд░реЗрдорд╡рд░реНрдХ, рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдбреЗрд▓реНрдЬреАрдбрд╛ рдХреА рд╕рднреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдзрд┐рдХ рдХреБрд╢рд▓рддрд╛ рд╕реЗ рд╡рд┐рдХрд╛рд╕ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдЦреИрд░, рдЪреВрдВрдХрд┐ рдореИрдВрдиреЗ рдкрд░реАрдХреНрд╖рдг рднрд╛рдЧ рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдЗрд╕ рдкрд╣рд▓реВ рдХреЛ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реВрдВрдЧрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдЧрд░ рдЖрдкрдХреЛ рдХреЛрдИ рдЗрдЪреНрдЫрд╛ рд╣реИ рдХрд┐ рдЕрдЧрд▓реЗ рд▓реЗрдЦ, рдпрд╛ рдкреНрд░рд╢реНрдиреЛрдВ рдореЗрдВ рдХреНрдпрд╛ рдЬреЛрдбрд╝рдирд╛ рд╣реИ, рддреЛ рдЯрд┐рдкреНрдкрдгреА рдпрд╛ рдирд┐рдЬреА рд╕рдВрджреЗрд╢реЛрдВ рдореЗрдВ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВредрдЬреЛрдбрд╝рд╛ рдЧрдпрд╛: рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рд▓рд╛рдореНрдмрд╛ рдЗрди рдПрдХреНрд╢рдиред рднрд╛рдЧ 2 рд▓реЗрдЦ рдХреЗрдХреБрдЫ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдФрд░ рдЙрдкрдпреЛрдЧреА рд▓рд┐рдВрдХ: