Yandex.Cloud рдФрд░ Python рдХреЗ рд╕рд░реНрд╡рд░ рд░рд╣рд┐рдд рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдРрд▓рд┐рд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдЯреЗрдЯрдлреБрд▓ рдХреМрд╢рд▓ рдмрдирд╛рдирд╛

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

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

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

Yandex.Cloud рдФрд░ Python рдХреЗ рд╕рд░реНрд╡рд░ рд░рд╣рд┐рдд рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдРрд▓рд┐рд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдЯреЗрдЯрдлреБрд▓ рдХреМрд╢рд▓ рдмрдирд╛рдирд╛

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

рдЕрдзреАрд░ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП: рдореИрдВ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреНрд▓рд╛рдЙрдб рдкрд░ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдореЗрдХрдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдЖрд╡рд╢реНрдпрдХ рдирд┐рд░реНрднрд░рддрд╛рдПрдБ рдПрдХрддреНрд░ рдХрд░рддрд╛ рд╣реВрдВ, рдореИрдВ рдбрд╛рдпрд▓реЙрдЧ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдпрд╛рдВрдбреЗрдХреНрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реНрдЯреЛрд░реЗрдЬ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реВрдВ (рдпрд╣ S3 рдПрдкреАрдЖрдИ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ), рдФрд░ рдореИрдВ рдбрд╛рдпрд▓реЙрдЧ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ tgalice. рдЕрдВрдд рдореЗрдВ рдмрд╛рдд рдмрди рд╣реА рдЬрд╛рддреА рд╣реИ рдРрд╕рд╛ рдбреЗрдореЛ рдХреМрд╢рд▓. рдЕрдм рдЖрдЗрдП рдЗрд╕ рд╕рдм рдХреЛ рдереЛрдбрд╝рд╛ рдФрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рджреЗрдЦреЗрдВред

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

рдпрджрд┐ рдЖрдк рддреБрд░рдВрдд рдорд╣рд╕реВрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рдпрд╣рд╛рдВ рдХрд┐рд╕ рд▓рд┐рдП рд▓рдбрд╝ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдРрд▓рд┐рд╕ рд╕реЗ рдкреВрдЫреЗрдВ '"рдЖрдИрдЯреА рд░рд╛рд╢рд┐рдлрд▓" рдХреМрд╢рд▓ рд╕рдХреНрд╖рдо рдХрд░реЗрдВ'. рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЗ рд╕рдорд╛рди рдПрдХ рд╕рдВрд╡рд╛рдж рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:

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

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

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

рдХреБрдВрдбрд▓реА рдХреМрд╢рд▓ рдХреИрд╕реЗ рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ

  1. рддреИрдпрд╛рд░реА рдХрд░реЗрдВ: рд▓рд┐рдирдХреНрд╕ рд╡рд╛рд▓реА рдХрд┐рд╕реА рдорд╢реАрди рдкрд░ рдЬрд╛рдПрдВред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдЖрдк рд╢рд╛рдпрдж рд╡рд┐рдВрдбреЛрдЬрд╝ рдХреЗ рд╕рд╛рде рднреА рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рдЖрдкрдХреЛ рдореЗрдХрдлрд╝рд╛рдЗрд▓ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдЬрд╛рджреВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдФрд░ рдХрд┐рд╕реА рднреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЖрдкрдХреЛ рдХрдо рд╕реЗ рдХрдо Python 3.6 рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
  2. рдЗрд╕реЗ рдЬреАрдереВрдм рд╕реЗ рдХреНрд▓реЛрди рдХрд░реЗрдВ рдХреБрдВрдбрд▓реА рдХреМрд╢рд▓ рдХрд╛ рдЙрджрд╛рд╣рд░рдг.
  3. рд╡рд╛рдИ.рдХреНрд▓рд╛рдЙрдб рдореЗрдВ рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд░реЗрдВ: 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. рдЖрдк рд╡реЗрдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рднреА рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕реАрдПрд▓рдЖрдИ рдЕрдЪреНрдЫрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдирд╡рд╛рдЪрд╛рд░ рддреЗрдЬреА рд╕реЗ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВред
  7. рдЕрдм рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛ рдЕрд╕реЗрдВрдмрд▓реА рддреИрдпрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рдЗрд╕реЗ рдХреМрд╢рд▓ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рдлрд╝реЛрд▓реНрдбрд░ рд╕реЗ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░ рдЪрд▓рд╛рдПрдБ make all. рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ (рдЬреНрдпрд╛рджрд╛рддрд░, рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рдЕрдирд╛рд╡рд╢реНрдпрдХ) рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ dist.
  8. рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реНрдЯреЛрд░реЗрдЬ рдореЗрдВ рд╣рд╛рде рд╕реЗ (рдмрд╛рд▓реНрдЯреА рдореЗрдВ) рдбрд╛рд▓реЗрдВ {BUCKET NAME}) рдкрд┐рдЫрд▓реЗ рдЪрд░рдг рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рд╕рдВрдЧреНрд░рд╣ dist.zip. рдпрджрд┐ рд╡рд╛рдВрдЫрд┐рдд рд╣реИ, рддреЛ рдЖрдк рдЗрд╕реЗ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ AWS рд╕реАрдПрд▓рдЖрдИ.
  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, рдЗрд╕рд▓рд┐рдП рдпрд╛рдВрдбреЗрдХреНрд╕ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдкрд░ рдПрдХ рдХреМрд╢рд▓ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреА рд╕реАрдзреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИ:

...
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 рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕реЗ рдХрдиреЗрдХреНрд╢рди рдмрдирд╛рддрд╛ рд╣реИред рдЖрдк рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕ рдХрдиреЗрдХреНрд╢рди рдХрд╛ рд╕реАрдзреЗ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЯреАрдЧреИрд▓рд┐рд╕ рдХреЛрдб рдореЗрдВ.
рдЕрдВрддрд┐рдо рдкрдВрдХреНрддрд┐ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рддреА рд╣реИ alice_handler тАФ рд╡рд╣реА рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗрдЯ рдХрд░рддреЗ рд╕рдордп Yandex.Cloud рдХреЛ рдЦреАрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдерд╛ --entrypoint=main.alice_handler.

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╕ рдЗрддрдирд╛ рд╣реАред рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рд▓рд┐рдП рдореЗрдХрдлрд╝рд╛рдЗрд▓реЗрдВ, рд╕рдВрджрд░реНрдн рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП S3-рдЬреИрд╕рд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реНрдЯреЛрд░реЗрдЬ рдФрд░ рдПрдХ рдкрд╛рдпрдерди рд▓рд╛рдЗрдмреНрд░реЗрд░реА tgalice. рдкрд╛рдпрдерди рдХреЗ рд╕рд░реНрд╡рд░ рд░рд╣рд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдФрд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд╕рд╛рде рд╕рдВрдпреБрдХреНрдд, рдпрд╣ рдПрдХ рд╕реНрд╡рд╕реНрде рдорд╛рдирд╡ рдХреМрд╢рд▓ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред

рдЖрдк рдкреВрдЫ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕реЗ рдмрдирд╛рдирд╛ рдХреНрдпреЛрдВ рдЬрд░реВрд░реА рдерд╛ tgalice? рд╕рднреА рдмреЛрд░рд┐рдВрдЧ рдХреЛрдб рдЬреЛ JSONs рдХреЛ рдЕрдиреБрд░реЛрдз рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рддрдХ рдФрд░ рд╕реНрдЯреЛрд░реЗрдЬ рд╕реЗ рдореЗрдореЛрд░реА рдФрд░ рдмреИрдХ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рд╡рд╣ рдЗрд╕рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИред рдПрдХ рдирд┐рдпрдорд┐рдд рдХреЛрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рднреА рд╣реИ, рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХрд┐ "рдлрд░рд╡рд░реА" "рдлрд░рд╡рд░реА" рдХреЗ рд╕рдорд╛рди рд╣реИ, рдФрд░ рдЧрд░реАрдмреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рдПрдирдПрд▓рдпреВред рдореЗрд░реЗ рд╡рд┐рдЪрд╛рд░ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ рдЖрдк рддрдХрдиреАрдХреА рд╡рд┐рд╡рд░рдгреЛрдВ рд╕реЗ рд╡рд┐рдЪрд▓рд┐рдд рд╣реБрдП рдмрд┐рдирд╛ YAML рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдХреМрд╢рд▓ рдХреЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЛ рд╕реНрдХреЗрдЪ рдХрд░ рд╕рдХреЗрдВред

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

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

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ