Yandex.Cloud рдЖрдгрд┐ Python рдЪреНрдпрд╛ рд╕рд░реНрд╡реНрд╣рд░рд▓реЗрд╕ рдлрдВрдХреНрд╢рдиреНрд╕рд╡рд░ рдЕреЕрд▓рд┐рд╕рд╕рд╛рдареА рд╕реНрдЯреЗрдЯрдлреБрд▓ рд╕реНрдХрд┐рд▓ рддрдпрд╛рд░ рдХрд░рдгреЗ

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

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

рдкрдг рдХрд╛рд╣реА рдмрд╛рд░рдХрд╛рд╡реЗ рдЖрд╣реЗрдд. рдкреНрд░рдердо, рдЖрдкрд▓реНрдпрд╛ рдкрд┐рдЯ рдХреЛрдбрд╕рд╛рдареА рдХрд╛рд╣реА рдЕрд╡рд▓рдВрдмрд┐рддреНрд╡ рдЖрд╡рд╢реНрдпрдХ рдЕрд╕реВ рд╢рдХрддрд╛рдд рдЖрдгрд┐ рддреНрдпрд╛рдВрдирд╛ рдХреНрд▓рд╛рдЙрдбрдордзреНрдпреЗ рдбреНрд░реЕрдЧ рдХрд░рдгреЗ рдХреНрд╖реБрд▓реНрд▓рдХ рдирд╛рд╣реА. рджреБрд╕рд░реЗ рдореНрд╣рдгрдЬреЗ, рдХреЛрдгрддреНрдпрд╛рд╣реА рд╕рд╛рдорд╛рдиреНрдп рдЪреЕрдЯрдмреЙрдЯрд▓рд╛ рд╕рдВрд╡рд╛рджрд╛рдЪреА рд╕реНрдерд┐рддреА рдХреБрдареЗрддрд░реА рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ (рдореНрд╣рдгреВрдирдЪ рд░рд╛рдЬреНрдп); рд╕рд░реНрд╡реНрд╣рд░рд▓реЗрд╕ рдлрдВрдХреНрд╢рдирдордзреНрдпреЗ рд╣реЗ рдХрд░рдгреНрдпрд╛рдЪрд╛ рд╕рд░реНрд╡рд╛рдд рд╕реЛрдкрд╛ рдорд╛рд░реНрдЧ рдХреЛрдгрддрд╛ рдЖрд╣реЗ? рддрд┐рд╕рд░реЗ рдореНрд╣рдгрдЬреЗ, рддреБрдореНрд╣реА рдЕреЕрд▓рд┐рд╕рд╕рд╛рдареА рдХрд┐рдВрд╡рд╛ рдЕрдЧрджреА рд╢реВрдиреНрдп рдирд╕рд▓реЗрд▓реНрдпрд╛ рдкреНрд▓реЙрдЯрд╕рд╣ рдХрд╛рд╣реА рдкреНрд░рдХрд╛рд░рдЪреЗ рдмреЙрдЯ рдХрд╕реЗ рд▓рд┐рд╣реВ рд╢рдХрддрд╛? рд▓реЗрдЦ рдЦрд░рдВ рддрд░ рдпрд╛ рдмрд╛рд░рдХрд╛рд╡реЗ рдмрджреНрджрд▓ рдЖрд╣реЗ.

Yandex.Cloud рдЖрдгрд┐ Python рдЪреНрдпрд╛ рд╕рд░реНрд╡реНрд╣рд░рд▓реЗрд╕ рдлрдВрдХреНрд╢рдиреНрд╕рд╡рд░ рдЕреЕрд▓рд┐рд╕рд╕рд╛рдареА рд╕реНрдЯреЗрдЯрдлреБрд▓ рд╕реНрдХрд┐рд▓ рддрдпрд╛рд░ рдХрд░рдгреЗ

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

рдЕрдзреАрд░рд╛рдВрд╕рд╛рдареА: рдХреНрд▓рд╛рдЙрдбрд╡рд░ рдлрдВрдХреНрд╢рди рдЕрдкрд▓реЛрдб рдХрд░рдгреНрдпрд╛рдкреВрд░реНрд╡реА рдореА рдореЗрдХрдлрд╛рдЗрд▓рд╕рд╣ рдЖрд╡рд╢реНрдпрдХ рдЕрд╡рд▓рдВрдмрд┐рддреНрд╡ рдЧреЛрд│рд╛ рдХрд░рддреЛ, рдореА рдпрд╛рдВрдбреЗрдХреНрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реНрдЯреЛрд░реЗрдЬрдордзреНрдпреЗ рд╕рдВрд╡рд╛рджрд╛рдЪреА рд╕реНрдерд┐рддреА рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХрд░рддреЛ (рддреЗ S3 API рд▓рд╛ рд╕рдорд░реНрдерди рджреЗрддреЗ), рдЖрдгрд┐ рд╕рдВрд╡рд╛рдж рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдореА рдорд╛рдЭреА рд╕реНрд╡рддрдГрдЪреА рд▓рд╛рдпрдмреНрд░рд░реА рд╡рд╛рдкрд░рддреЛ. tgalice. рд╢реЗрд╡рдЯреА рддреЗ рдмрд╛рд╣реЗрд░ рд╡рд│рддреЗ рдЕрд╢рд╛ рдбреЗрдореЛ рдХреМрд╢рд▓реНрдп. рдЖрддрд╛ рд╣реЗ рд╕рд░реНрд╡ рдереЛрдбреЗ рд╡рд┐рд╕реНрддрд╛рд░рд╛рдиреЗ рдкрд╛рд╣реВ.

рдЬреЗ рдереЛрдбреЗрд╕реЗ рдХрдореА рдЕрдзреАрд░ рдЖрд╣реЗрдд, рддреНрдпрд╛рдВрдЪреНрдпрд╛рд╕рд╛рдареА, рдорд╛рдЭреНрдпрд╛ рдХрдереЗрдЪреА рдЬрдЯрд┐рд▓рддрд╛ рдЬрд╛рдгреВрди рдШреЗрдгреНрдпрд╛рдкреВрд░реНрд╡реА, рдореА рдЕрдЧрджреА рд╕реЛрдкреНрдпрд╛ рдЧреЛрд╖реНрдЯреАрдкрд╛рд╕реВрди рд╕реБрд░реБрд╡рд╛рдд рдХрд░рдгреНрдпрд╛рдЪреА рд╢рд┐рдлрд╛рд░рд╕ рдХрд░рддреЛ. рдореНрд╣рдгрдЬреЗ, рдПрдХрд▓-рдлрд╛рдЗрд▓ рдЗрдХреЛрдмреЙрдЯ рдлрдВрдХреНрд╢рди рддрдпрд╛рд░ рдХрд░рд╛, рдиреЛрдВрджрдгреА рдХрд░рд╛ рдЖрдгрд┐ рдбрд╛рдпрд▓реЙрдЧ рдбреЗрд╡реНрд╣рд▓рдкрд░ рдХрдиреНрд╕реЛрд▓рдордзреНрдпреЗ рддреНрдпрд╛рдЪреА рдЪрд╛рдЪрдгреА рдХрд░рд╛; рддрдкрд╢реАрд▓ - рдордзреНрдпреЗ рд╕рдВрд╡рд╛рдж рдмреНрд▓реЙрдЧ ╨╕ рдореЗрдШ рджрд╕реНрддрдРрд╡рдЬреАрдХрд░рдг. рдЖрдгрд┐ рдордЧрдЪ рд╕реБрд░реБрд╡рд╛рдд рдХрд░рд╛.

рдЖрдореНрд╣реА рдЗрдереЗ рдХрд╢рд╛рд╕рд╛рдареА рд▓рдврдд рдЖрд╣реЛрдд рд╣реЗ рддреБрдореНрд╣рд╛рд▓рд╛ рд▓рдЧреЗрдЪ рдЬрд╛рдгрд╡рд╛рдпрдЪреЗ рдЕрд╕реЗрд▓ рддрд░ рдЕреЕрд▓рд┐рд╕рд▓рд╛ рд╡рд┐рдЪрд╛рд░рд╛'"рдЖрдпрдЯреА рдкрддреНрд░рд┐рдХрд╛" рдХреМрд╢рд▓реНрдп рд╕рдХреНрд╖рдо рдХрд░рд╛'. рдЦрд╛рд▓реАрд▓ рдкреНрд░рдорд╛рдгреЗ рд╕рдВрд╡рд╛рдж рд╡реНрд╣рд╛рдпрд▓рд╛ рд╣рд╡рд╛:

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

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

рджреБрд╕рд░реА рд╕рдорд╕реНрдпрд╛ рдЕрд╢реА рдЖрд╣реЗ рдХреА рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реНрдЯреЛрд░реЗрдЬ, рдореЛрдВрдЧреЛрдбреАрдмреА рдЖрдгрд┐ рдЗрддрд░ рдХреЛрдгрддреНрдпрд╛рд╣реА рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд┐рдВрд╡рд╛ рдбреЗрдЯрд╛ рд╕реНрдЯреЛрдЕрд░рдордзреНрдпреЗ рдкреНрд░рд╡реЗрд╢ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдХрд╛рд╣реА рдмрд╛рд╣реНрдп рдЕрд╡рд▓рдВрдмрдирд╛рдВрдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ рдЬреА рдЖрдкрд▓реНрдпрд╛ рдлрдВрдХреНрд╢рди рдХреЛрдбрд╕рд╣ рдпрд╛рдВрдбреЗрдХреНрд╕ рдлрдВрдХреНрд╢рдиреНрд╕рд╡рд░ рдЕрдкрд▓реЛрдб рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдЖрдгрд┐ рдорд▓рд╛ рд╣реЗ рд╕реЛрдпреАрд╕реНрдХрд░рдкрдгреЗ рдХрд░рд╛рдпрд▓рд╛ рдЖрд╡рдбреЗрд▓. рджреБрд░реНрджреИрд╡рд╛рдиреЗ, рд╣реЗ рдкреВрд░реНрдгрдкрдгреЗ рд╕реЛрдпреАрд╕реНрдХрд░ рд╣реЛрдгрд╛рд░ рдирд╛рд╣реА (рдЬрд╕реЗ Heroku рд╡рд░), рдкрд░рдВрддреБ рд╡рд╛рддрд╛рд╡рд░рдг рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рд╣реВрди рдХрд╛рд╣реА рдореВрд▓рднреВрдд рд╕реЛрдпреА рддрдпрд╛рд░ рдХреЗрд▓реНрдпрд╛ рдЬрд╛рдК рд╢рдХрддрд╛рдд (рдлрд╛рдЗрд▓ рдмрдирд╡рд╛).

рдХреБрдВрдбрд▓реА рдХреМрд╢рд▓реНрдп рдХрд╕реЗ рд╕реБрд░реВ рдХрд░рд╛рд╡реЗ

  1. рддрдпрд╛рд░ рдХрд░рд╛: рд▓рд┐рдирдХреНрд╕рд╕рд╣ рдХрд╛рд╣реА рдорд╢реАрдирд╡рд░ рдЬрд╛. рддрддреНрд╡рддрдГ, рдЖрдкрдг рдХрджрд╛рдЪрд┐рдд Windows рд╕рд╣ рджреЗрдЦреАрд▓ рдХрд╛рд░реНрдп рдХрд░реВ рд╢рдХрддрд╛, рдкрд░рдВрддреБ рдирдВрддрд░ рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдореЗрдХрдлрд╛рдЗрд▓ рд▓реЙрдиреНрдЪ рдХрд░реВрди рдХрд╛рд╣реА рдЬрд╛рджреВ рдХрд░рд╛рд╡реА рд▓рд╛рдЧреЗрд▓. рдЖрдгрд┐ рдХреЛрдгрддреНрдпрд╛рд╣реА рдкрд░рд┐рд╕реНрдерд┐рддреАрдд, рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдХрд┐рдорд╛рди рдкрд╛рдпрдерди 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. рдЗрдЪреНрдЫрд┐рдд рдЕрд╕рд▓реНрдпрд╛рд╕, рдЖрдкрдг рд╣реЗ рдХрдорд╛рдВрдб рд▓рд╛рдЗрдирд╡рд░реВрди рдХрд░реВ рд╢рдХрддрд╛, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рд╡рд╛рдкрд░реВрди рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рд╕реАрдПрд▓рдЖрдп.
  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 рд╣реЗ рдлрдХреНрдд рдХрд╛рд░реНрдп рдХрд░рддреЗ: рддреЗ рддреНрдпрд╛рдЪреЗ рд╕рд░реНрд╡ рдШрдЯрдХ рд╕рдВрд╡рд╛рджрд╛рдЪреНрдпрд╛ рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддреАрд╡рд░ рд▓рд╛рдЧреВ рдХрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░рддреЗ рдЖрдгрд┐ рдкреНрд░рдердо рдпреЛрдЧреНрдп рдирд┐рд╡рдбрддреЗ.

рдбрд╛рдпрд▓реЙрдЧ рдореЕрдиреЗрдЬрд░ рдкреНрд░рддреНрдпреЗрдХ рдореЗрд╕реЗрдЬрд▓рд╛ рдкреНрд░рддрд┐рд╕рд╛рдж рдореНрд╣рдгреВрди Python рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░рдд рдХрд░рддреЛ. Response, рдЬреЗ рдирдВрддрд░ рд╕рд╛рдзреНрдпрд╛ рдордЬрдХреБрд░рд╛рдд рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ рдХрд┐рдВрд╡рд╛ рдПрд▓рд┐рд╕ рдХрд┐рдВрд╡рд╛ рдЯреЗрд▓рд┐рдЧреНрд░рд╛рдордордзреАрд▓ рд╕рдВрджреЗрд╢рд╛рдд - рдмреЙрдЯ рдХреБрдареЗ рдЪрд╛рд▓рдд рдЖрд╣реЗ рдпрд╛рд╡рд░ рдЕрд╡рд▓рдВрдмреВрди; рддреНрдпрд╛рдд рд╕рдВрд╡рд╛рджрд╛рдЪреА рдмрджрд▓рд▓реЗрд▓реА рд╕реНрдерд┐рддреА рджреЗрдЦреАрд▓ рдЖрд╣реЗ рдЬреА рдЬрддрди рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рд╣реЗ рд╕рдВрдкреВрд░реНрдг рд╕реНрд╡рдпрдВрдкрд╛рдХрдШрд░ рджреБрд╕рд░рд╛ рд╡рд░реНрдЧ рд╣рд╛рддрд╛рд│рддреЛ, DialogConnector, рддреНрдпрд╛рдореБрд│реЗ рдпрд╛рдВрдбреЗрдХреНрд╕ рдлрдВрдХреНрд╢рдиреНрд╕рд╡рд░ рдХреМрд╢рд▓реНрдп рд▓рд╛рдБрдЪ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдереЗрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдпрд╛рд╕рд╛рд░рдЦреЗ рджрд┐рд╕рддреЗ:

...
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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛