рдХреНрд░реЙрд╕-рдХреНрд▓рд╛рдЙрдб рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдЧреЛ рдХреНрд▓рд╛рдЙрдб рдХреЗ рд╕рд╛рде

рдкрд░рд┐рдЪрдп


рдЖрдЬ (рд▓рдЧрднрдЧред рдЯреНрд░рд╛рдВрд╕рд▓реЗрдЯрд░ 07-24-2018), Google рдХреА рдЧреЛ рдЯреАрдо рдиреЗ рдирдП рдУрдкрди рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЧреЛ рдХреНрд▓рд╛рдЙрдб , рдПрдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдФрд░ рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдЯреВрд▓реНрд╕ рдХреЛ рдУрдкрди рдХреНрд▓рд╛рдЙрдб рдореЗрдВ рдЬрд╛рд░реА рдХрд┐рдпрд╛ ред рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕рд╛рде, рд╣рдо рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдХреНрд░реЙрд╕-рдХреНрд▓рд╛рдЙрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЧреЛ рднрд╛рд╖рд╛ рдЪреБрдирдиреЗ рдХрд╛ рд▓рдХреНрд╖реНрдп рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВред

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

рдХреНрд░реЙрд╕-рдХреНрд▓рд╛рдЙрдб рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреНрдпреЛрдВ? рдЕрдм рдХреНрдпреЛрдВ?


рд╣рдорд╛рд░рд╛ рдЕрдиреБрдорд╛рди рд╣реИ рдХрд┐ рджреБрдирд┐рдпрд╛ рдореЗрдВ рдЧреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдПрдХ рдорд┐рд▓рд┐рдпрди рд╕реЗ рдЕрдзрд┐рдХ рдбреЗрд╡рд▓рдкрд░ рд╣реИрдВред рдЧреЛ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХреНрд▓рд╛рдЙрдб-рдЙрдиреНрдореБрдЦ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рд╕реЗ рдХрдИ рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕, рдЗрд╕реНрддрд┐рдпреЛ рдФрд░ рдбреЙрдХрд░ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред Lyft, Capital One, Netflix, рдФрд░ рдХрдИ рдЕрдиреНрдп рдХрдВрдкрдирд┐рдпрд╛рдВ рдЙрддреНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП Go рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИрдВред рдЗрди рд╡рд░реНрд╖реЛрдВ рдореЗрдВ, рд╣рдордиреЗ рдкрд╛рдпрд╛ рд╣реИ рдХрд┐ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЕрдкрдиреА рджрдХреНрд╖рддрд╛, рдЙрддреНрдкрд╛рджрдХрддрд╛, рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛ рдФрд░ рдХрдо рд╡рд┐рд▓рдВрдмрддрд╛ рдХреЗ рдХрд╛рд░рдг рдХреНрд▓рд╛рдЙрдб рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдЧреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВред

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

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

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

рдЧреЛ рдХреНрд▓рд╛рдЙрдб рдХреНрдпрд╛ рд╣реИ?


рд╣рдордиреЗ рдХреНрд▓рд╛рдЙрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╕рд╛рдорд╛рдиреНрдп рд╕реЗрд╡рд╛рдУрдВ рдХреА рдкрд╣рдЪрд╛рди рдХреА рд╣реИ рдФрд░ рдХреНрд▓рд╛рдЙрдб рдкреНрд░рджрд╛рддрд╛рдУрдВ рдХреЗ рдмреАрдЪ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдПрдкреАрдЖрдИ рдмрдирд╛рдпрд╛ рд╣реИред рдЖрдЬ, рдЧреЛ рдХреНрд▓рд╛рдЙрдб рдмреНрд▓реЙрдм рд╕реНрдЯреЛрд░реЗрдЬ, MySQL рдбреЗрдЯрд╛рдмреЗрд╕, рд░рдирдЯрд╛рдЗрдо рд╕реЗрдЯрд┐рдВрдЧреНрд╕ (рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди), рдФрд░ HTTP рд╕рд░реНрд╡рд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ, рдЕрдиреБрд░реЛрдз рд▓реЙрдЧрд┐рдВрдЧ, рдирд┐рдЧрд░рд╛рдиреА рдФрд░ рд╕реНрд╡рд╛рд╕реНрдереНрдп рдЬрд╛рдБрдЪ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЧреЛ рдХреНрд▓рд╛рдЙрдб Google рдХреНрд▓рд╛рдЙрдб рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо (GCP) рдФрд░ рдЕрдореЗрдЬрд╝рди рд╡реЗрдм рд╕рд░реНрд╡рд┐рд╕реЗрдЬ (AWS) рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд╣рдо рдирд┐рдХрдЯ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЕрдиреНрдп рдХреНрд▓рд╛рдЙрдб рдкреНрд░рджрд╛рддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд╛рдЙрдб рдЙрджреНрдпреЛрдЧ рдФрд░ рдЧреЛ рд╕рдореБрджрд╛рдп рдореЗрдВ рднрд╛рдЧреАрджрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдВрдЧреЗред

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

рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?


рдЧреЛ рдХреНрд▓рд╛рдЙрдб рдХреНрд░реЙрд╕-рдХреНрд▓рд╛рдЙрдб рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рдПрдкреАрдЖрдИ рдХреЗ рд╕реЗрдЯ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред рдЖрдЗрдП рдмреНрд▓реЙрдм рд╕реНрдЯреЛрд░реЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВред рдЖрдк рдХрд┐рд╕реА рд╕реНрдерд╛рдиреАрдп рдбреНрд░рд╛рдЗрд╡ рд╕реЗ рдХреНрд▓рд╛рдЙрдб рдкрд░ рдлрд╝рд╛рдЗрд▓ рдХреЙрдкреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЗрдиреЗрд░рд┐рдХ * blob.Storage рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдЗрдП рдмрдВрдбрд▓ S3blob рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ S3 рд╕реНрдЯреЛрд░реЗрдЬ рдЦреЛрд▓рдХрд░ рд╢реБрд░реВ рдХрд░реЗрдВ:

// setupBucket opens an AWS bucket. func setupBucket(ctx context.Context) (*blob.Bucket, error) { // Obtain AWS credentials. sess, err := session.NewSession(&aws.Config{ Region: aws.String("us-east-2"), }) if err != nil { return nil, err } // Open a handle to s3://go-cloud-bucket. return s3blob.OpenBucket(ctx, sess, "go-cloud-bucket") } 

рдХреНрд╖рдг рд╕реЗ * blob.Bucket рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ, рдЖрдкрдХреЛ * blob.Writer рдмрдирд╛рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рдорд┐рд▓рддрд╛ рд╣реИ, рдЬреЛ рдмрджрд▓реЗ рдореЗрдВ io.Writer рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдХреНрд╖рдг рд╕реЗ, рдПрдкреНрд▓рд┐рдХреЗрд╢рди (рдкреНрд░реЛрдЧреНрд░рд╛рдо) рдХреНрд▓рд╛рдЙрдб рд╕реНрдЯреЛрд░реЗрдЬ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП * blob.Writer рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣ рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХреНрд▓реЛрдЬ рдПрдХ рддреНрд░реБрдЯрд┐ рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

 ctx := context.Background() b, err := setupBucket(ctx) if err != nil { log.Fatalf("Failed to open bucket: %v", err) } data, err := ioutil.ReadFile("gopher.png") if err != nil { log.Fatalf("Failed to read file: %v", err) } w, err := b.NewWriter(ctx, "gopher.png", nil) if err != nil { log.Fatalf("Failed to obtain writer: %v", err) } _, err = w.Write(data) if err != nil { log.Fatalf("Failed to write to bucket: %v", err) } if err := w.Close(); err != nil { log.Fatalf("Failed to close: %v", err) } 

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╕реНрдЯреЛрд░реЗрдЬ (рдмрд╛рд▓реНрдЯреА) рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рддрд░реНрдХ AWS S3 рдХреА рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЧреЛ рдХреНрд▓рд╛рдЙрдб, рдХреНрд▓рд╛рдЙрдб рд╕реНрдЯреЛрд░реЗрдЬ рдХреЛ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рд░рд┐рдкреНрд▓реЗрд╕ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдлрдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рд░рд┐рдкреНрд▓реЗрд╕рдореЗрдВрдЯ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ * рдмреНрд▓реЙрдм.рдмрдХреЗрдЯ рдХреЛ рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХреЛрдИ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЖрд╕рд╛рдиреА рд╕реЗ Google рдХреНрд▓рд╛рдЙрдб рд╕реНрдЯреЛрд░реЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рддреБрд░рдВрдд рд╕реНрд╡рд┐рдЪ рдХрд░ рд╕рдХрддрд╛ рд╣реИ * blob.Bucket рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ gcsblob.OpenBucket рдЙрд╕ рдХреЛрдб рдХреЛ рдмрджрд▓реЗ рдмрд┐рдирд╛ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдХреЙрдкреА рдХрд░рддрд╛ рд╣реИ:

 // setupBucket opens a GCS bucket. func setupBucket(ctx context.Context) (*blob.Bucket, error) { // Open GCS bucket. creds, err := gcp.DefaultCredentials(ctx) if err != nil { return nil, err } c, err := gcp.NewHTTPClient(gcp.DefaultTransport(), gcp.CredentialsTokenSource(creds)) if err != nil { return nil, err } // Open a handle to gs://go-cloud-bucket. return gcsblob.OpenBucket(ctx, "go-cloud-bucket", c) } 

рдЕрдм рддрдХ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╡рд┐рднрд┐рдиреНрди рдХреНрд▓рд╛рдЙрдб рдкреНрд░рджрд╛рддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕реНрдЯреЛрд░реЗрдЬ рдХреЛ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЪрд░рдгреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдЕрдВрддрд┐рдо рдкреНрд░рдХрд╛рд░ рдПрдХ рд╣реА * blob.Bucket рд░рд╣рддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдб рдХреНрд▓рд╛рдЙрдб-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреЛрдб рд╕реЗ рдЕрд▓рдЧ-рдерд▓рдЧ рд░рд╣рддрд╛ рд╣реИред рдореМрдЬреВрджрд╛ рдЧреЛ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрддрддрд╛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, Go рдХреНрд▓рд╛рдЙрдб рдорд╛рдирдХ рдЧреЛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рдореМрдЬреВрджрд╛ рдЗрдВрдЯрд░рдлреЗрд╕, рдЬреИрд╕реЗ io.Writer , io.Reader, рдФрд░ * sql.DB рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

рдХреНрд▓рд╛рдЙрдб рд╕реЗрд╡рд╛рдУрдВ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдХреЛрдб ( рд╕реЗрдЯрдЕрдкрдмреБрдЯреЗрдЯ () рдКрдкрд░ рдХреЗ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ) рдирд┐рдореНрди рдкреИрдЯрд░реНрди рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддрд╛ рд╣реИ: рдЕрдзрд┐рдХ рдореВрд▓ (рдХрдо) рд╕рд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрдЪреНрдЪ рд╕рд╛рд░ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬрдм рдЖрдк рдкреЗрди рдХреЗ рд╕рд╛рде рдЗрд╕ рддрд░рд╣ рдХрд╛ рдХреЛрдб рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, Go Cloud рдЗрд╕реЗ рд╡рд╛рдпрд░ рдХреЗ рд╕рд╛рде рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдПрдХ рдЯреВрд▓ рдЬреЛ рдЖрдкрдХреЗ рд▓рд┐рдП рдХреНрд▓рд╛рдЙрдб-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред рд╡рд╛рдпрд░ рдкреНрд░рд▓реЗрдЦрди рдпрд╣ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдП, рдЬрдмрдХрд┐ рдЙрджрд╛рд╣рд░рдг рд╡рд╛рдпрд░ рдХреЛ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдореЗрдВ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВред

рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдХреИрд╕реЗ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВ рдФрд░ рдЕрдзрд┐рдХ рдЬрд╛рдиреЗрдВ?


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

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

рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдпреЛрдЧрджрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЙрд╕реА рдпреЛрдЧрджрд╛рдирдХрд░реНрддрд╛ рд▓рд╛рдЗрд╕реЗрдВрд╕ рд╕рдордЭреМрддреЗ рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬреЛ рдЧреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рджреНрд╡рд╛рд░рд╛ рдЕрдкрдирд╛рдИ рдЬрд╛рддреА рд╣реИред рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдпреЛрдЧрджрд╛рдирдХрд░реНрддрд╛ рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛ рдкрдврд╝реЗрдВред

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

Source: https://habr.com/ru/post/hi418131/


All Articles