Yandex.Cloud рд░ Python рдХреЛ рд╕рд░реНрднрд░рд▓реЗрд╕ рдкреНрд░рдХрд╛рд░реНрдпрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдПрд▓рд┐рд╕рдХреЛ рд▓рд╛рдЧрд┐ рд╕реНрдЯреЗрдЯрдлреБрд▓ рд╕реАрдк рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджреИ

рд╕рдорд╛рдЪрд╛рд░рдмрд╛рдЯ рд╕реБрд░реБ рдЧрд░реМрдВред рд╣рд┐рдЬреЛ Yandex.Cloud рд▓реЗ рд╕рд░реНрднрд░рд▓реЗрд╕ рдХрдореНрдкреНрдпреБрдЯрд┐рдЩ рд╕реЗрд╡рд╛ рд╕реБрд░реБ рдЧрд░реНрдиреЗ рдШреЛрд╖рдгрд╛ рдЧрд░реНтАНрдпреЛ рдпрд╛рдиреНрдбреЗрдХреНрд╕ рдХреНрд▓рд╛рдЙрдб рдкреНрд░рдХрд╛рд░реНрдпрд╣рд░реВред рдпрд╕рдХреЛ рдорддрд▓рдм: рддрдкрд╛рдИрдВрд▓реЗ рдЖрдлреНрдиреЛ рд╕реЗрд╡рд╛рдХреЛ рд▓рд╛рдЧрд┐ рдХреЛрдб рдорд╛рддреНрд░ рд▓реЗрдЦреНрдиреБрд╣реБрдиреНрдЫ (рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд╛ рдЪреНрдпрд╛рдЯрдмрдЯ), рд░ рдХреНрд▓рд╛рдЙрдбрд▓реЗ рдЖрдлреИрдВрд▓реЗ рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рдирд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рд░ рдорд░реНрдордд рдЧрд░реНрджрдЫ рдЬрд╣рд╛рдБ рдпреЛ рдЪрд▓реНрдЫ, рд░ рд▓реЛрдб рдмрдвреЗрдорд╛ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдкреНрд░рддрд┐рдХреГрддрд┐ рдкрдирд┐ рдмрдирд╛рдЙрдБрдЫред рддрдкрд╛рдИрд▓реЗ рд╕реЛрдЪреНрди рдЖрд╡рд╢реНрдпрдХ рдЫреИрди, рдпреЛ рдзреЗрд░реИ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЫред рд░ рднреБрдХреНрддрд╛рдиреА рдЧрдгрдирд╛ рд╕рдордпрдХреЛ рд▓рд╛рдЧрд┐ рдорд╛рддреНрд░ рд╣реЛред

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

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

Yandex.Cloud рд░ Python рдХреЛ рд╕рд░реНрднрд░рд▓реЗрд╕ рдкреНрд░рдХрд╛рд░реНрдпрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдПрд▓рд┐рд╕рдХреЛ рд▓рд╛рдЧрд┐ рд╕реНрдЯреЗрдЯрдлреБрд▓ рд╕реАрдк рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджреИ

рдиреИрддрд┐рдХ рддрдпрд╛рд░реА

рдЕрдзреАрд░рдХрд╛ рд▓рд╛рдЧрд┐: рдо рдХреНрд▓рд╛рдЙрдбрдорд╛ рдкреНрд░рдХрд╛рд░реНрдп рдЕрдкрд▓реЛрдб рдЧрд░реНрдиреБ рдЕрдШрд┐ рдореЗрдХрдлрд╛рдЗрд▓рдХреЛ рд╕рд╛рде рдЖрд╡рд╢реНрдпрдХ рдирд┐рд░реНрднрд░рддрд╛рд╣рд░реВ рд╕рдЩреНрдХрд▓рди рдЧрд░реНрдЫреБ, рдо рд╕рдВрд╡рд╛рджрдХреЛ рдЕрд╡рд╕реНрдерд╛ Yandex рд╡рд╕реНрддреБ рднрдгреНрдбрд╛рд░рдгрдорд╛ рднрдгреНрдбрд╛рд░ рдЧрд░реНрдЫреБ (рдпрд╕рд▓реЗ S3 API рд▓рд╛рдИ рд╕рдорд░реНрдерди рдЧрд░реНрджрдЫ), рд░ рдо рд╕рдВрд╡рд╛рдж рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдЧрд░реНрди рдореЗрд░реЛ рдЖрдлреНрдиреИ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫреБред tgaliceред рдЕрдиреНрддрдорд╛ рдпреЛ рдмрд╛рд╣рд┐рд░ рдЬрд╛рдиреНрдЫ рдпрд╕реНрддреЛ рдбреЗрдореЛ рдХреМрд╢рд▓ред рдЕрдм рдпреА рд╕рдмреИрд▓рд╛рдИ рдереЛрд░реИ рд╡рд┐рд╕реНрддрд╛рд░рдорд╛ рд╣реЗрд░реМрдВред

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

рд╣рд╛рдореА рдпрд╣рд╛рдБ рдХреЗрдХреЛ рд▓рд╛рдЧрд┐ рд▓рдбрд┐рд░рд╣реЗрдХрд╛ рдЫреМрдВ рднрдиреЗрд░ рддреБрд░реБрдиреНрддреИ рдорд╣рд╕реБрд╕ рдЧрд░реНрди рдЪрд╛рд╣рдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рдПрд▓рд┐рд╕рд▓рд╛рдИ рд╕реЛрдзреНрдиреБрд╣реЛрд╕реНред"IT рд░рд╛рд╢рд┐рдлрд▓" рдХреМрд╢рд▓ рд╕рдХреНрд╖рдо рдЧрд░реНрдиреБрд╣реЛрд╕реН'ред рдирд┐рдореНрдирд╕рдБрдЧ рдорд┐рд▓реНрджреЛрдЬреБрд▓реНрджреЛ рд╕рдВрд╡рд╛рдж рд╣реБрдиреБрдкрд░реНрджрдЫ:

рдПрд▓рд┐рд╕: рдирдорд╕реНрддреЗ! рддрдкрд╛рдИрдВ "IT рд░рд╛рд╢рд┐рдлрд▓" рдХреМрд╢рд▓рдорд╛ рд╣реБрдиреБрд╣реБрдиреНрдЫред рддрд╛рд░рд╛рд╣рд░реВрд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдХреЗ рдкреНрд░рддрд┐рдЬреНрдЮрд╛ рдЧрд░реНрдЫрдиреН рднрдиреЗрд░ рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрди "рд╕реБрд░реБ рдЧрд░реНрдиреБрд╣реЛрд╕реН" рднрдиреНрдиреБрд╣реЛрд╕реНред
рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛: рд╕реБрд░реБ рдЧрд░реНрдиреБрд╣реЛрд╕реН
A: рдХреГрдкрдпрд╛ рдЖрдлреНрдиреЛ рдирд╛рдо рдмрддрд╛рдЙрдиреБрд╣реЛрд╕реН
Yu: Vasisualiy
A: рдЕрдм рдорд▓рд╛рдИ рддрд┐рдореНрд░реЛ рдЬрдиреНрдордХреЛ рд╡рд░реНрд╖ рднрдиреНрдиреБрд╣реЛрд╕реНред рдЪрд╛рд░ рдЕрдВрдХ рдорд╛рддреНрд░реИ, рдердк рдХреЗрд╣реА рдЫреИрди ред
рдпреБ: рджреЛрд╕реНрд░реЛ
A: рдХреГрдкрдпрд╛ рдкреБрди: рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрдиреБрд╣реЛрд╕реНред рдЖрдлреНрдиреЛ рдЬрдиреНрдо рд╡рд░реНрд╖ рдкреНрд░рд╡рд┐рд╖реНрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН - рдЪрд╛рд░ рдЕрдВрдХред
рдпреБ: 2002
рдорд╣рд╛рди! рдЕрдм рдЖрдлреНрдиреЛ рдЬрдиреНрдо рдорд╣рд┐рдирд╛рдХреЛ рдирд╛рдо рджрд┐рдиреБрд╣реЛрд╕реНред
рдпреБ: рдлреЗрдмреНрд░реБрдЕрд░реА
рдорд╣рд╛рди! рдЕрдиреНрддрдорд╛, рдорд▓рд╛рдИ рддрдкрд╛рдИрдВрдХреЛ рдЬрдиреНрдо рдорд┐рддрд┐ рдмрддрд╛рдЙрдиреБрд╣реЛрд╕реН - рдХреЗрд╡рд▓ рдПрдХ рд╕рдВрдЦреНрдпрд╛, рдХреЗрд╡рд▓ рдПрдХ рд╡рд╛ рджреБрдИ рдЕрдВрдХред
рдпреБ: 18
A: рдзрдиреНрдпрд╡рд╛рдж, Vasisuali! рдЕрдм рд╣рд╛рдореА рдЬрд╛рдиреНрджрдЫреМрдВ: рддрдкрд╛рдИрдВ 17 рд╡рд░реНрд╖рдХреЛ рд╣реБрдиреБрд╣реБрдиреНрдЫ рд░ рдХреБрдореНрдн рд░рд╛рд╢рд┐ рд╣реБрдиреБрд╣реБрдиреНрдЫред рдЦреИрд░, рдкрдХреНрдХреИ рдкрдирд┐, рддрдкрд╛рдИрдВ рднрд╛рдЧреНрдпрд╢рд╛рд▓реА рд╣реБрдиреБрд╣реБрдиреНрдЫ! рддрд╛рд░рд╛рд╣рд░реВрд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рднрдиреНрдЫрдиреН: ╨░ ╤З╤В╨╛ ╨│╨╛╨▓╨╛╤А╤П╤В ╨╖╨▓╤С╨╖╨┤╤Л, ╨▓╤Л ╤Г╨╖╨╜╨░╨╡╤В╨╡, ╨╖╨░╨┐╤Г╤Б╤В╨╕╨▓ ╨╜╨░╨▓╤Л╨║.

рд╕рдорд╕реНрдпрд╛ рдпреЛ рд╣реЛ рдХрд┐ рдпрд╕реНрддреЛ рд╕рд╛рдзрд╛рд░рдг рд╕рдВрд╡рд╛рджрд▓рд╛рдИ рдкрдирд┐ рдХрд╛рдпрдо рд░рд╛рдЦреНрдирдХреЛ рд▓рд╛рдЧрд┐, рддрдкрд╛рдИрдВрд▓реЗ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рдХреЛ рдирд╛рдо рд░ рдЬрдиреНрдо рдорд┐рддрд┐ рдпрд╛рдж рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ, рд░ рд╕рд░реНрднрд░рд▓реЗрд╕ рдкреНрд░рдХрд╛рд░реНрдп рд╡рд╛рддрд╛рд╡рд░рдгрдорд╛ рдпреЛ рдЧреИрд░-рддреБрдЪреНрдЫ рдЫред рд╕рдиреНрджрд░реНрднрд▓рд╛рдИ RAM рдорд╛ рд╡рд╛ рдбрд┐рд╕реНрдХрдорд╛ рдлрд╛рдЗрд▓рдХреЛ рд░реВрдкрдорд╛ рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрди рд╕рдореНрднрд╡ рдЫреИрди, рдХрд┐рдирднрдиреЗ Yandex.Cloud рд▓реЗ рдПрдХреИ рд╕рдордпрдорд╛ рдзреЗрд░реИ рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рдирд╣рд░реВрдорд╛ рдПрдХ рдкреНрд░рдХрд╛рд░реНрдп рдЪрд▓рд╛рдЙрди рд╕рдХреНрдЫ рд░ рдЗрдЪреНрдЫрд╛ рдЕрдиреБрд╕рд╛рд░ рддрд┐рдиреАрд╣рд░реВ рдмреАрдЪ рд╕реНрд╡рд┐рдЪ рдЧрд░реНрди рд╕рдХреНрдЫред рддрдкрд╛рдИрдВрд▓реЗ рдХреЗрд╣рд┐ рдкреНрд░рдХрд╛рд░рдХреЛ рдмрд╛рд╣реНрдп рднрдгреНрдбрд╛рд░рдг рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрдкрд░реНрдиреЗрдЫред рд╡рд╕реНрддреБ рднрдгреНрдбрд╛рд░рдгрд▓рд╛рдИ Yandex.Cloud (рдЕрд░реНрдерд╛рдд, рд╕рдореНрднрд╡рддрдГ рдЫрд┐рдЯреЛ) рдорд╛ рд╕реАрдзрд╛ рдПрдХрджрдо рд╕рд╕реНрддреЛ рд░ рдЬрдЯрд┐рд▓ рднрдгреНрдбрд╛рд░рдгрдХреЛ рд░реВрдкрдорд╛ рдЫрдиреМрдЯ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛред рдирд┐: рд╢реБрд▓реНрдХ рд╡рд┐рдХрд▓реНрдкрдХреЛ рд░реВрдкрдорд╛, рддрдкрд╛рдЗрдБ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдирд┐: рд╢реБрд▓реНрдХ рдЯреБрдХреНрд░рд╛ рдмрд╛рджрд▓ рд▓рд╛рдЧреЗрдХреЛ рдореЛрдВрдЧрд╛ рдХрддреИ рдЯрд╛рдврд╛ред рд╡рд╕реНрддреБ рднрдгреНрдбрд╛рд░рдг (рдЬрд╕рд▓реЗ S3 рдЗрдиреНрдЯрд░рдлреЗрд╕рд▓рд╛рдИ рд╕рдорд░реНрдерди рдЧрд░реНрджрдЫ) рд░ рдордЩреНрдЧреЛ рджреБрд╡реИрдХрд╛ рд▓рд╛рдЧрд┐ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдкрд╛рдЗрдерди рд░реНрдпрд╛рдкрд░рд╣рд░реВ рдЫрдиреНред

рдЕрд░реНрдХреЛ рд╕рдорд╕реНрдпрд╛ рдпреЛ рд╣реЛ рдХрд┐ рд╡рд╕реНрддреБ рднрдгреНрдбрд╛рд░рдг, MongoDB, рд░ рдХреБрдиреИ рдкрдирд┐ рдЕрдиреНрдп рдбрд╛рдЯрд╛рдмреЗрд╕ рд╡рд╛ рдбрд╛рдЯрд╛ рд╕реНрдЯреЛрд░ рдкрд╣реБрдБрдЪ рдЧрд░реНрди, рддрдкрд╛рдИрдВрд▓рд╛рдИ рдХреЗрд╣рд┐ рдмрд╛рд╣реНрдп рдирд┐рд░реНрднрд░рддрд╛рд╣рд░реВ рдЪрд╛рд╣рд┐рдиреНрдЫ рдЬреБрди рддрдкрд╛рдИрдВрдХреЛ рдкреНрд░рдХрд╛рд░реНрдп рдХреЛрдбрдХреЛ рд╕рд╛рде Yandex рдкреНрд░рдХрд╛рд░реНрдпрд╣рд░реВрдорд╛ рдЕрдкрд▓реЛрдб рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред рд░ рдо рдпреЛ рд╕рд╣рдЬ рд░реВрдкрдорд╛ рдЧрд░реНрди рдЪрд╛рд╣рдиреНрдЫреБред рджреБрд░реНрднрд╛рдЧреНрдпрд╡рд╢, рдпреЛ рдкреВрд░реНрдгрддрдпрд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реБрдиреЗрдЫреИрди (рдЬрд╕реНрддреИ Heroku рдорд╛), рддрд░ рдХреЗрд╣рд┐ рдЖрдзрд╛рд░рднреВрдд рдЖрд░рд╛рдо рд╡рд╛рддрд╛рд╡рд░рдг рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓реЗрдЦреЗрд░ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ (рдлрд╛рдЗрд▓ рдмрдирд╛рдЙрдиреБрд╣реЛрд╕реН)ред

рд░рд╛рд╢рд┐рдлрд▓ рдХреМрд╢рд▓ рдХрд╕рд░реА рд╕реБрд░реБ рдЧрд░реНрдиреЗ

  1. рддрдпрд╛рд░реА рдЧрд░реНрдиреБрд╣реЛрд╕реН: рд▓рд┐рдирдХреНрд╕рдХреЛ рд╕рд╛рде рдХреЗрд╣реА рдореЗрд╕рд┐рдирдорд╛ рдЬрд╛рдиреБрд╣реЛрд╕реНред рд╕рд┐рджреНрдзрд╛рдиреНрддрдорд╛, рддрдкрд╛рдЗрдБ рд╕рдореНрднрд╡рддрдГ рд╡рд┐рдиреНрдбреЛрдЬрд╕рдБрдЧ рдкрдирд┐ рдХрд╛рдо рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рддрд░ рддрдкрд╛рдЗрдБрд▓реЗ рдореЗрдХрдлрд╛рдЗрд▓ рд╕реБрд░реБ рдЧрд░реНрди рдХреЗрд╣рд┐ рдЬрд╛рджреВ рдЧрд░реНрдиреБ рдкрд░реНрдЫред рд░ рдХреБрдиреИ рдкрдирд┐ рдЕрд╡рд╕реНрдерд╛рдорд╛, рддрдкрд╛рдИрдВрд▓рд╛рдИ рдХрдореНрддрд┐рдорд╛ рдкрд╛рдЗрдерди 3.6 рд╕реНрдерд╛рдкрдирд╛ рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрджрдЫред
  2. Github рдмрд╛рдЯ рдХреНрд▓реЛрди рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░рд╛рд╢рд┐рдлрд▓ рдХреМрд╢рд▓ рдХреЛ рдЙрджрд╛рд╣рд░рдг.
  3. Y.Cloud рдорд╛ рджрд░реНрддрд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН: https://cloud.yandex.ru
  4. рдЖрдлреИрдВрдорд╛ рджреБрдИ рдмрд╛рд▓реНрдЯрд┐рдирд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд╡рд╕реНрддреБ рднрдгреНрдбрд╛рд░рдг, рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдХреБрдиреИ рдкрдирд┐ рдирд╛рдорд▓реЗ рдмреЛрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН {BUCKET NAME} ╨╕ tgalice-test-cold-storage (рдпреЛ рджреЛрд╕реНрд░реЛ рдирд╛рдо рдЕрдм рд╣рд╛рд░реНрдбрдХреЛрдб рдЧрд░рд┐рдПрдХреЛ рдЫ main.py рдореЗрд░реЛ рдЙрджрд╛рд╣рд░рдг)ред рдкрд╣рд┐рд▓реЛ рдмрд╛рд▓реНрдЯрд┐рди рдорд╛рддреНрд░ рдкреНрд░рдпреЛрдЧрдХреЛ рд▓рд╛рдЧрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реБрдиреЗрдЫ, рджреЛрд╕реНрд░реЛ - рд╕рдВрд╡рд╛рдж рдЕрд╡рд╕реНрдерд╛рд╣рд░реВ рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрдиред
  5. рд╕рд┐рд░реНрдЬрдирд╛ рд╕реЗрд╡рд╛ рдЦрд╛рддрд╛рдЙрд╕рд▓рд╛рдИ рднреВрдорд┐рдХрд╛ рджрд┐рдиреБрд╣реЛрд╕реН editor, рд░ рдпрд╕рдХреЛ рд▓рд╛рдЧрд┐ рд╕реНрдерд┐рд░ рдкреНрд░рдорд╛рдгрд╣рд░реВ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреБрд╣реЛрд╕реН {KEY ID} ╨╕ {KEY VALUE} - рд╣рд╛рдореА рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рд╕рдВрд╡рд╛рджрдХреЛ рдЕрд╡рд╕реНрдерд╛ рд░реЗрдХрд░реНрдб рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗрдЫреМрдВред рдпреЛ рд╕рдмреИ рдЖрд╡рд╢реНрдпрдХ рдЫ рддрд╛рдХрд┐ Ya.Cloud рдХреЛ рдПрдХ рдкреНрд░рдХрд╛рд░реНрдпрд▓реЗ Ya.Cloud рдмрд╛рдЯ рднрдгреНрдбрд╛рд░рдг рдкрд╣реБрдБрдЪ рдЧрд░реНрди рд╕рдХреНрдЫред рдХреБрдиреИ рджрд┐рди, рдорд▓рд╛рдИ рдЖрд╢рд╛ рдЫ, рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╣реБрдиреЗрдЫ, рддрд░ рдЕрд╣рд┐рд▓реЗрдХреЛ рд▓рд╛рдЧрд┐ рдпреЛ рддреНрдпрд╕реНрддреИ рдЫред
  6. (рд╡реИрдХрд▓реНрдкрд┐рдХ) рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН рдХрдорд╛рдгреНрдб рд▓рд╛рдЗрди рдЗрдиреНрдЯрд░рдлреЗрд╕ ycред рддрдкрд╛рдЗрдБ рд╡реЗрдм рдЗрдиреНрдЯрд░рдлреЗрд╕ рдорд╛рд░реНрдлрдд рдПрдХ рдкреНрд░рдХрд╛рд░реНрдп рдкрдирд┐ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рддрд░ CLI рд░рд╛рдореНрд░реЛ рдЫ рдХрд┐рдирднрдиреЗ рд╕рдмреИ рдкреНрд░рдХрд╛рд░рдХрд╛ рдирд╡рд╛рдЪрд╛рд░рд╣рд░реВ рдпрд╕рдорд╛ рдЫрд┐рдЯреЛ рджреЗрдЦрд╛ рдкрд░реНрджрдЫред
  7. рдЕрдм рддрдкрд╛рдЗрдБ рд╡рд╛рд╕реНрддрд╡рдорд╛ рдирд┐рд░реНрднрд░рддрд╛ рдЕрд╕реЗрдВрдмрд▓реА рддрдпрд╛рд░ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ: рдпрд╕рд▓рд╛рдИ рдХреМрд╢рд▓ рдЙрджрд╛рд╣рд░рдгрдХреЛ рд╕рд╛рде рдлреЛрд▓реНрдбрд░рдмрд╛рдЯ рдХрдорд╛рдгреНрдб рд▓рд╛рдЗрдирдорд╛ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН make allред рдкреБрд╕реНрддрдХрд╛рд▓рдпрд╣рд░реВрдХреЛ рдЧреБрдЪреНрдЫрд╛ (рдЕрдзрд┐рдХрд╛рдВрд╢, рд╕рд╛рдорд╛рдиреНрдп рд░реВрдкрдорд╛, рдЕрдирд╛рд╡рд╢реНрдпрдХ) рдлреЛрд▓реНрдбрд░рдорд╛ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░рд┐рдиреЗрдЫред dist.
  8. рд╣рд╛рддрд▓реЗ рд╡рд╕реНрддреБ рднрдгреНрдбрд╛рд░рдгрдорд╛ рд╣рд╛рд▓реНрдиреБрд╣реЛрд╕реН (рдмрд╛рд▓реНрдЯреАрдорд╛ {BUCKET NAME}) рдЕрдШрд┐рд▓реНрд▓реЛ рдЪрд░рдгрдорд╛ рдкреНрд░рд╛рдкреНрдд рдЕрднрд┐рд▓реЗрдЦ dist.zipред рдпрджрд┐ рдЪрд╛рд╣рд╛рдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рддрдкрд╛рдЗрдБ рдпрд╕рд▓рд╛рдИ рдХрдорд╛рдВрдб рд▓рд╛рдЗрдирдмрд╛рдЯ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ AWS CLI.
  9. рд╡реЗрдм рдЗрдиреНрдЯрд░рдлреЗрд╕ рдорд╛рд░реНрдлрдд рд╡рд╛ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╕рд░реНрднрд░рд▓реЗрд╕ рдкреНрд░рдХрд╛рд░реНрдп рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН ycред рдЙрдкрдпреЛрдЧрд┐рддрд╛рдХреЛ рд▓рд╛рдЧрд┐, рдЖрджреЗрд╢ рдпрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ:

yc serverless function version create
    --function-name=horoscope
    --environment=AWS_ACCESS_KEY_ID={KEY ID},AWS_SECRET_ACCESS_KEY={KEY VALUE}
    --runtime=python37
    --package-bucket-name={BUCKET NAME}
    --package-object-name=dist.zip
    --entrypoint=main.alice_handler
    --memory=128M
    --execution-timeout=3s

рдореНрдпрд╛рдиреБрдЕрд▓ рд░реВрдкрдорд╛ рдкреНрд░рдХрд╛рд░реНрдп рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджрд╛, рд╕рдмреИ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ рдЙрд╕реНрддреИ рддрд░рд┐рдХрд╛рд▓реЗ рднрд░рд┐рдиреНрдЫрдиреНред

рдЕрдм рддрдкрд╛рдИрдВрд▓реЗ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрднрдПрдХреЛ рдкреНрд░рдХрд╛рд░реНрдп рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛ рдХрдиреНрд╕реЛрд▓ рдорд╛рд░реНрдлрдд рдкрд░реАрдХреНрд╖рдг рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ, рд░ рддреНрдпрд╕рдкрдЫрд┐ рдХреМрд╢рд▓ рд╕реБрдзрд╛рд░ рд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред

Yandex.Cloud рд░ Python рдХреЛ рд╕рд░реНрднрд░рд▓реЗрд╕ рдкреНрд░рдХрд╛рд░реНрдпрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдПрд▓рд┐рд╕рдХреЛ рд▓рд╛рдЧрд┐ рд╕реНрдЯреЗрдЯрдлреБрд▓ рд╕реАрдк рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджреИ

рд╣реБрдб рдореБрдирд┐ рдХреЗ рдЫ

рдореЗрдХрдлрд╛рдЗрд▓рд▓реЗ рд╡рд╛рд╕реНрддрд╡рдорд╛ рдирд┐рд░реНрднрд░рддрд╛рд╣рд░реВ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрди рд░ рдЕрднрд┐рд▓реЗрдЦрдорд╛ рд░рд╛рдЦреНрдирдХреЛ рд▓рд╛рдЧрд┐ рдПрдХрджрдо рд╕рд░рд▓ рд▓рд┐рдкрд┐ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджрдЫред dist.zip, рд▓рдЧрднрдЧ рдпреЛ рдЬрд╕реНрддреИ:

mkdir -p dist/
pip3 install -r requirements.txt --target dist/ 
cp main.py dist/main.py
cp form.yaml dist/form.yaml
cd dist && zip --exclude '*.pyc' -r ../dist.zip ./*

рдмрд╛рдБрдХреА рдкреБрд╕реНрддрдХрд╛рд▓рдпрдорд╛ рдмреЗрд░рд┐рдПрдХрд╛ рдХреЗрд╣реА рд╕рд░рд▓ рдЙрдкрдХрд░рдгрд╣рд░реВ рд╣реБрдиреН tgaliceред рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рдбреЗрдЯрд╛ рднрд░реНрдиреЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрди рдЧрд░рд┐рдПрдХреЛ рдЫ form.yaml:

form_name: 'horoscope_form'
start:
  regexp: '╤Б╤В╨░╤А╤В|╨╜╨░╤З(╨░╤В╤М|╨╜╨╕)'
  suggests:
    - ╨б╤В╨░╤А╤В
fields:
  - name: 'name'
    question: ╨Я╨╛╨╢╨░╨╗╤Г╨╣╤Б╤В╨░, ╨╜╨░╨╖╨╛╨▓╨╕╤В╨╡ ╤Б╨▓╨╛╤С ╨╕╨╝╤П.
  - name: 'year'
    question: ╨в╨╡╨┐╨╡╤А╤М ╤Б╨║╨░╨╢╨╕╤В╨╡ ╨╝╨╜╨╡ ╨│╨╛╨┤ ╨▓╨░╤И╨╡╨│╨╛ ╤А╨╛╨╢╨┤╨╡╨╜╨╕╤П. ╨в╨╛╨╗╤М╨║╨╛ ╤З╨╡╤В╤Л╤А╨╡ ╤Ж╨╕╤Д╤А╤Л, ╨╜╨╕╤З╨╡╨│╨╛ ╨╗╨╕╤И╨╜╨╡╨│╨╛.
    validate_regexp: '^[0-9]{4}$'
    validate_message: ╨Я╨╛╨╢╨░╨╗╤Г╨╣╤Б╤В╨░, ╨┐╨╛╨┐╤А╨╛╨▒╤Г╨╣╤В╨╡ ╨╡╤Й╤С ╤А╨░╨╖. ╨Э╨░╨╖╨╛╨▓╨╕╤В╨╡ ╨│╨╛╨┤ ╨▓╨░╤И╨╡╨│╨╛ ╤А╨╛╨╢╨┤╨╡╨╜╨╕╤П - ╤З╨╡╤В╤Л╤А╨╡ ╤Ж╨╕╤Д╤А╤Л.
  - name: 'month'
    question: ╨Ч╨░╨╝╨╡╤З╨░╤В╨╡╨╗╤М╨╜╨╛! ╨в╨╡╨┐╨╡╤А╤М ╨╜╨░╨╖╨╛╨▓╨╕╤В╨╡ ╨╝╨╡╤Б╤П╤Ж ╨▓╨░╤И╨╡╨│╨╛ ╤А╨╛╨╢╨┤╨╡╨╜╨╕╤П.
    options:
      - ╤П╨╜╨▓╨░╤А╤М
     ...
      - ╨┤╨╡╨║╨░╨▒╤А╤М
    validate_message: ╨в╨╛, ╤З╤В╨╛ ╨▓╤Л ╨╜╨░╨╖╨▓╨░╨╗╨╕, ╨╜╨╡ ╨┐╨╛╤Е╨╛╨╢╨╡ ╨╜╨░ ╨╝╨╡╤Б╤П╤Ж. ╨Я╨╛╨╢╨░╨╗╤Г╨╣╤Б╤В╨░, ╨╜╨░╨╖╨╛╨▓╨╕╤В╨╡ ╨╝╨╡╤Б╤П╤Ж ╨▓╨░╤И╨╡╨│╨╛ ╤А╨╛╨╢╨┤╨╡╨╜╨╕╤П, ╨▒╨╡╨╖ ╨┤╤А╤Г╨│╨╕╤Е ╤Б╨╗╨╛╨▓.
  - name: 'day'
    question: ╨Ю╤В╨╗╨╕╤З╨╜╨╛! ╨Э╨░╨║╨╛╨╜╨╡╤Ж, ╨╜╨░╨╖╨╛╨▓╨╕╤В╨╡ ╨╝╨╜╨╡ ╨┤╨░╤В╤Г ╨▓╨░╤И╨╡╨│╨╛ ╤А╨╛╨╢╨┤╨╡╨╜╨╕╤П - ╤В╨╛╨╗╤М╨║╨╛ ╤З╨╕╤Б╨╗╨╛, ╨▓╤Б╨╡╨│╨╛ ╨╛╨┤╨╜╨░ ╨╕╨╗╨╕ ╨┤╨▓╨╡ ╤Ж╨╕╤Д╤А╤Л.
    validate_regexp: '[0123]?d$'
    validate_message: ╨Я╨╛╨╢╨░╨╗╤Г╨╣╤Б╤В╨░, ╨┐╨╛╨┐╤А╨╛╨▒╤Г╨╣╤В╨╡ ╨╡╤Й╤С ╤А╨░╨╖. ╨Т╨░╨╝ ╨╜╤Г╨╢╨╜╨╛ ╨╜╨░╨╖╨▓╨░╤В╤М ╤З╨╕╤Б╨╗╨╛ ╤Б╨▓╨╛╨╡╨│╨╛ ╤А╨╛╨╢╨┤╨╡╨╜╨╕╤П (╨╜╨░╨┐╤А╨╕╨╝╨╡╤А, ╨┤╨▓╨░╨┤╤Ж╨░╤В╨╛╨╡); ╤Н╤В╨╛ ╨╛╨┤╨╜╨░ ╨╕╨╗╨╕ ╨┤╨▓╨╡ ╤Ж╨╕╤Д╤А╤Л.

рдпреЛ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдкрд╛рд░реНрд╕ рдЧрд░реНрдиреЗ рд░ рдЕрдиреНрддрд┐рдо рдирддрд┐рдЬрд╛ рдЧрдгрдирд╛ рдЧрд░реНрдиреЗ рдХрд╛рдо рдкрд╛рдЗрдерди рдХреНрд▓рд╛рд╕рд▓реЗ рд▓рд┐рдПрдХреЛ рдЫ

class CheckableFormFiller(tgalice.dialog_manager.form_filling.FormFillingDialogManager):
    SIGNS = {
        '╤П╨╜╨▓╨░╤А╤М': '╨Ъ╨╛╨╖╨╡╤А╨╛╨│',
        ...
    }

    def handle_completed_form(self, form, user_object, ctx):
        response = tgalice.dialog_manager.base.Response(
            text='╨б╨┐╨░╤Б╨╕╨▒╨╛, {}! ╨в╨╡╨┐╨╡╤А╤М ╨╝╤Л ╨╖╨╜╨░╨╡╨╝: ╨▓╨░╨╝ {} ╨╗╨╡╤В, ╨╕ ╨▓╤Л {}. n'
                 '╨Т╨╛╤В ╤Н╤В╨╛ ╨▓╨░╨╝, ╨║╨╛╨╜╨╡╤З╨╜╨╛, ╨┐╨╛╨▓╨╡╨╖╨╗╨╛! ╨Ч╨▓╤С╨╖╨┤╤Л ╨│╨╛╨▓╨╛╤А╤П╤В ╨▓╨░╨╝: {}'.format(
                form['fields']['name'],
                2019 - int(form['fields']['year']),
                self.SIGNS[form['fields']['month']],
                random.choice(FORECASTS),
            ),
            user_object=user_object,
        )
        return response

рдердк рд╕реНрдкрд╖реНрдЯ рд░реВрдкрдорд╛, рдЖрдзрд╛рд░ рд╡рд░реНрдЧ FormFillingDialogManager "рдлрд╛рд░рдо" рднрд░реНрдиреЗ рд░ рдмрд╛рд▓ рдХрдХреНрд╖рд╛ рд╡рд┐рдзрд┐рд╕рдБрдЧ рд╕рдореНрдмрдиреНрдзрд┐рдд рдЫ handle_completed_form рдЙрдиреА рддрдпрд╛рд░ рд╣реБрдБрджрд╛ рдХреЗ рдЧрд░реНрдиреЗ рднрдиреЗрд░ рдмрддрд╛рдЙрдБрдЫрд┐рдиреНред

рд╕рдВрд╡рд╛рджрдХреЛ рдпреЛ рдореБрдЦреНрдп рдкреНрд░рд╡рд╛рд╣рдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд, рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд▓рд╛рдИ рдкрдирд┐ рдЕрднрд┐рд╡рд╛рджрди рдЧрд░реНрдиреБрдкрд░реНрджрдЫ, рд╕рд╛рдереИ "рд╣реЗрд▓реНрдк" рдХрдорд╛рдгреНрдб рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдорджреНрджрдд рджрд┐рдиреБрдкрд░реНрдЫ рд░ "рдирд┐рдХрд╛рд╕" рдЖрджреЗрд╢ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╕реАрдкрдмрд╛рдЯ рдореБрдХреНрдд рд╣реБрдиреБрдкрд░реНрджрдЫред рдорд╛ рдпреЛ рдЧрд░реНрди рдХреЛ рд▓рд╛рдЧреА tgalice рддреНрдпрд╣рд╛рдБ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдкрдирд┐ рдЫ, рддреНрдпрд╕реИрд▓реЗ рд╕рдореНрдкреВрд░реНрдг рд╕рдВрд╡рд╛рдж рдкреНрд░рдмрдиреНрдзрдХ рдЯреБрдХреНрд░рд╛рд╣рд░реВ рдорд┐рд▓реЗрд░ рдмрдиреЗрдХреЛ рдЫ:

dm = tgalice.dialog_manager.CascadeDialogManager(
    tgalice.dialog_manager.GreetAndHelpDialogManager(
        greeting_message=DEFAULT_MESSAGE,
        help_message=DEFAULT_MESSAGE,
        exit_message='╨Ф╨╛ ╤Б╨▓╨╕╨┤╨░╨╜╨╕╤П, ╨┐╤А╨╕╤Е╨╛╨┤╨╕╤В╨╡ ╨▓ ╨╜╨░╨▓╤Л╨║ "╨Р╨╣╤В╨╕╤И╨╜╤Л╨╣ ╨│╨╛╤А╨╛╤Б╨║╨╛╨┐" ╨╡╤Й╤С!'
    ),
    CheckableFormFiller(`form.yaml`, default_message=DEFAULT_MESSAGE)
)

CascadeDialogManager рдпрд╕рд▓реЗ рд╕рд░рд▓ рд░реВрдкрдорд╛ рдХрд╛рдо рдЧрд░реНрджрдЫ: рдпрд╕рд▓реЗ рдпрд╕рдХреЛ рд╕рдмреИ рдХрдореНрдкреЛрдиреЗрдиреНрдЯрд╣рд░реВ рд╕рдВрд╡рд╛рджрдХреЛ рд╡рд░реНрддрдорд╛рди рдЕрд╡рд╕реНрдерд╛рдорд╛ рд▓рд╛рдЧреВ рдЧрд░реНрди рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрджрдЫ, рд░ рдкрд╣рд┐рд▓реЛ рдЙрдкрдпреБрдХреНрдд рдЪрдпрди рдЧрд░реНрджрдЫред

рд╕рдВрд╡рд╛рдж рдкреНрд░рдмрдиреНрдзрдХрд▓реЗ рдкреНрд░рддреНрдпреЗрдХ рд╕рдиреНрджреЗрд╢рдХреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдХреЛ рд░реВрдкрдорд╛ рдкрд╛рдЗрдерди рд╡рд╕реНрддреБ рдлрд░реНрдХрд╛рдЙрдБрдЫред Response, рдЬреБрди рддреНрдпрд╕рдкрдЫрд┐ рд╕рд╛рджрд╛ рдкрд╛рдардорд╛, рд╡рд╛ рдПрд▓рд┐рд╕ рд╡рд╛ рдЯреЗрд▓рд┐рдЧреНрд░рд╛рдордорд╛ рд╕рдиреНрджреЗрд╢рдорд╛ рд░реВрдкрд╛рдиреНрддрд░рдг рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ - рдмреЛрдЯ рдХрд╣рд╛рдБ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдЫ рднрдиреНрдиреЗ рдЖрдзрд╛рд░рдорд╛; рдпрд╕рд▓реЗ рд╕рдВрд╡рд╛рджрдХреЛ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░рд┐рдПрдХреЛ рдЕрд╡рд╕реНрдерд╛ рдкрдирд┐ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджрдЫ рдЬреБрди рдмрдЪрдд рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред рдпреЛ рд╕рдореНрдкреВрд░реНрдг рднрд╛рдиреНрд╕рд╛ рдЕрд░реНрдХреЛ рд╡рд░реНрдЧ рджреНрд╡рд╛рд░рд╛ рд╣реНрдпрд╛рдиреНрдбрд▓ рдЧрд░рд┐рдПрдХреЛ рдЫ, DialogConnector, рддреНрдпрд╕реИрд▓реЗ Yandex рдкреНрд░рдХрд╛рд░реНрдпрд╣рд░реВрдорд╛ рдХреМрд╢рд▓ рд╕реБрд░реБ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░рддреНрдпрдХреНрд╖ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдпрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ:

...
session = boto3.session.Session()
s3 = session.client(
    service_name='s3',
    endpoint_url='https://storage.yandexcloud.net',
    aws_access_key_id=os.environ['AWS_ACCESS_KEY_ID'],
    aws_secret_access_key=os.environ['AWS_SECRET_ACCESS_KEY'],
    region_name='ru-central1',
)
storage = tgalice.session_storage.S3BasedStorage(s3_client=s3, bucket_name='tgalice-test-cold-storage')
connector = tgalice.dialog_connector.DialogConnector(dialog_manager=dm, storage=storage)
alice_handler = connector.serverless_alice_handler

рддрдкрд╛рдИрд▓реЗ рджреЗрдЦреНрди рд╕рдХреНрдиреБрд╣реБрдиреЗ рд░реВрдкрдорд╛, рдпрд╕ рдХреЛрдбрдХреЛ рдзреЗрд░реИ рдЬрд╕реЛ рд╡рд╕реНрддреБ рднрдгреНрдбрд╛рд░рдгрдХреЛ S3 рдЗрдиреНрдЯрд░рдлреЗрд╕рдорд╛ рдЬрдбрд╛рди рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджрдЫред рддрдкрд╛рдЗрдБ рдкрдвреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рдХрд╕рд░реА рдпреЛ рдЬрдбрд╛рди рдкреНрд░рддреНрдпрдХреНрд╖ рд░реВрдкрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫ tgalice рдХреЛрдб рдорд╛.
рдЕрдиреНрддрд┐рдо рд░реЗрдЦрд╛рд▓реЗ рдкреНрд░рдХрд╛рд░реНрдп рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджрдЫ alice_handler тАФ рд╣рд╛рдореАрд▓реЗ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░ рд╕реЗрдЯ рдЧрд░реНрджрд╛ рддрд╛рдиреНрди Yandex.Cloud рднрдиреНрдпреМрдВ --entrypoint=main.alice_handler.

рддреНрдпреЛ рд╕рдмреИ рд╣реЛ, рд╡рд╛рд╕реНрддрд╡рдорд╛ред рд╕рдореНрдореЗрд▓рдирдХрд╛ рд▓рд╛рдЧрд┐ рдореЗрдХрдлрд╛рдЗрд▓рд╣рд░реВ, рд╕рдиреНрджрд░реНрдн рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ S3-рдЬрд╕реНрддреЛ рд╡рд╕реНрддреБ рднрдгреНрдбрд╛рд░рдг, рд░ рдкрд╛рдЗрдерди рдкреБрд╕реНрддрдХрд╛рд▓рдп tgaliceред рдкрд╛рдЗрдердирдХреЛ рд╕рд░реНрднрд░рд▓реЗрд╕ рдХрд╛рд░реНрдпрд╣рд░реВ рд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрддрд╛рд╕рдБрдЧ рдорд┐рд▓рд╛рдПрд░, рдпреЛ рдПрдХ рд╕реНрд╡рд╕реНрде рдорд╛рдирд╡ рдХреМрд╢рд▓ рд╡рд┐рдХрд╛рд╕ рдЧрд░реНрди рдкрд░реНрдпрд╛рдкреНрдд рдЫред

рддрдкрд╛рдИрд▓реЗ рд╕реЛрдзреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рдХрд┐рди рдпреЛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдерд┐рдпреЛ tgalice? JSON рд▓рд╛рдИ рдЕрдиреБрд░реЛрдзрдмрд╛рдЯ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд░ рднрдгреНрдбрд╛рд░рдгрдмрд╛рдЯ рдореЗрдореЛрд░реА рд░ рдмреНрдпрд╛рдХрдорд╛ рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдЧрд░реНрдиреЗ рд╕рдмреИ рдмреЛрд░рд┐рдЩ рдХреЛрдб рдпрд╕рдорд╛ рдЫред рддреНрдпрд╣рд╛рдБ рдПрдХ рдирд┐рдпрдорд┐рдд рдХреЛрдб рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдкрдирд┐ рдЫ, "рдлреЗрдмреНрд░реБрдЕрд░реА" "рдлреЗрдмреНрд░реБрдЕрд░реА" рдЬрд╕реНрддреИ рд╣реЛ рднрдиреЗрд░ рдмреБрдЭреНрдирдХреЛ рд▓рд╛рдЧрд┐ рдПрдЙрдЯрд╛ рдХрд╛рд░реНрдп, рд░ рдЧрд░рд┐рдмрд╣рд░реВрдХрд╛ рд▓рд╛рдЧрд┐ рдЕрдиреНрдп NLUред рдореЗрд░реЛ рд╡рд┐рдЪрд╛рд░рдХреЛ рдЕрдиреБрд╕рд╛рд░, рдпреЛ рдкрд╣рд┐рд▓реЗ рдиреИ рдкрд░реНрдпрд╛рдкреНрдд рд╣реБрдиреБрдкрд░реНрджрдЫ рддрд╛рдХрд┐ рддрдкрд╛рдЗрдБ рдкреНрд░рд╛рд╡рд┐рдзрд┐рдХ рд╡рд┐рд╡рд░рдгрд╣рд░реВрдмрд╛рдЯ рдзреЗрд░реИ рд╡рд┐рдЪрд▓рд┐рдд рдирдЧрд░реА yaml рдлрд╛рдЗрд▓рд╣рд░реВрдорд╛ рд╕реАрдкрд╣рд░реВрдХреЛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдкрд╣рд░реВ рд╕реНрдХреЗрдЪ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред

рдпрджрд┐ рддрдкрд╛рдЗрдБ рдердк рдЧрдореНрднреАрд░ NLU рдЪрд╛рд╣рдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рддрдкрд╛рдЗрдБ рдпрд╕рд▓рд╛рдИ рддрдкрд╛рдЗрдБрдХреЛ рд╕реАрдкрдорд╛ рд╕рдВрд▓рдЧреНрди рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рд░рд╕рд╛ рд╡рд╛ рджреАрдкрдкрд╛рднрд▓реЛрдн, рддрд░ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рд╕реЗрдЯрдЕрдк рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдЯреНрдпрд╛рдореНрдмреЛрд░рд┐рдирдХреЛ рд╕рд╛рде рдЕрддрд┐рд░рд┐рдХреНрдд рдиреГрддреНрдпрд╣рд░реВ рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрджрдЫ, рд╡рд┐рд╢реЗрд╖ рдЧрд░реА рд╕рд░реНрднрд░рд░рд╣рд┐рддрдорд╛ред рдпрджрд┐ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдХреЛрдбрд┐рдЩ рдЬрд╕реНрддреЛ рд▓рд╛рдЧреНрджреИрди рднрдиреЗ, рддрдкрд╛рдИрдВрд▓реЗ рднрд┐рдЬреБрдЕрд▓ рдХрдиреНрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрдкрд░реНрдЫ Aimylogicред tgalice рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджрд╛, рдореИрд▓реЗ рдХреБрдиреИ рдкреНрд░рдХрд╛рд░рдХреЛ рдордзреНрдпрд╡рд░реНрддреА рдорд╛рд░реНрдЧрдХреЛ рдмрд╛рд░реЗрдорд╛ рд╕реЛрдЪреЗрдВред рдпрд╕рдмрд╛рдЯ рдХреЗ рдЖрдЙрдБрдЫ рд╣реЗрд░реМрдВред

рдЦреИрд░, рдЕрдм рд╕рд╛рдореЗрд▓ рд╣реБрдиреБрд╣реЛрд╕реН рдПрд▓рд┐рд╕ рдХреМрд╢рд▓ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛ рдЪреНрдпрд╛рдЯ, рдкрдвреНрдиреБрд╣реЛрд╕реН рдХрд╛рдЧрдЬрд╛рддрд░ рдЕрджреНрднреБрдд рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН рдХреМрд╢рд▓!

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди