рдЕрдореЗрдЬрд╝реЕрди S3 рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдФрд░ рдмрд╛рд╕реНрдХреЗрдЯ рдХреЛ Windows Azure Storage рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ

рдЗрд╕ рдЖрд▓реЗрдЦ рдореЗрдВ, рдЕрдореЗрдЬрд╝реЕрди рдПрд╕ 3 рд╕реЗ рд╡рд┐рдВрдбреЛрдЬ рдПрдЬрд╝реНрдпреЛрд░ рдмреНрд▓реЙрдм рд╕реНрдЯреЛрд░реЗрдЬ рдХреЗ рд▓рд┐рдП рдСрдмреНрдЬреЗрдХреНрдЯ рдФрд░ рдмрд╛рд▓реНрдЯреА рдХреА рдирдХрд▓ рдХреИрд╕реЗ рдХрд░реЗрдВред

7 рдЬреВрди 2012 рдХреЗ рдмрд╛рдж рдХреЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╡рд╛рдЪрд╛рд░реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдерд╛ рдХреЙрдкреА рдмреНрд▓рдм рдХрд╛ рд╕реБрдзрд╛рд░ред рдЗрд╕ рд▓реЗрдЦ рдХреЛ рд▓рд┐рдЦрддреЗ рд╕рдордп, рдореИрдВрдиреЗ рд╡рд┐рдХрд╛рд╕ рдЯреАрдо рдХреА рд╕рд╛рдордЧреНрд░рд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдЬреЛ рдпрд╣рд╛рдВ рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИрдВ: http://blogs.msdn.com/b/windowsazurestorage/archive/2012/06/12/introducing-asynchronous-cross-acount-copy-blob.aspx ред рдореЗрд░рд╛ рдзреНрдпрд╛рди рдХреНрдпрд╛ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ - рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмреВрдБрдж рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЖрдкрдХреЛ рд╡рд┐рдВрдбреЛрдЬ рдПрдЬрд╝реНрдпреЛрд░ рдХреЗ рдмрд╛рд╣рд░ рд╕реЗ рдХреЙрдкреА рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ , рдЕрдЧрд░ рд╡реЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдк рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реИрдВред рдпрд╣реА рд╣реИ, рдЙрдиреНрд╣реЗрдВ рд╡рд┐рдВрдбреЛрдЬ рдПрдЬрд╝реНрдпреЛрд░ рдореЗрдВ рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

рдпрд╣ рдмрд╣реБрдд рдмрдбрд╝рд╛ рд╣реИ !!!



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

рдРрд╕рд╛ рдХреНрдпреЛрдВ?



рдореИрдВрдиреЗ рдХрдИ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрд╛, рдЬрд┐рд╕рдореЗрдВ рдЖрдкрдХреЛ рдПрдХ рдХреНрд▓рд╛рдЙрдб рдкреНрд░рджрд╛рддрд╛ рд╕реЗ рд╡рд┐рдВрдбреЛрдЬ рдПрдЬрд╝реНрдпреЛрд░ рдмреНрд▓реЙрдм рд╕реНрдЯреЛрд░реЗрдЬ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдХреЙрдкреА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред

рд╡рд┐рдВрдбреЛрдЬ Azure рдмреВрдБрдж рд╕рдВрдЧреНрд░рд╣рдг рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рд╣реИ

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

рдореМрдЬреВрджрд╛ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдмреИрдХрдЕрдк рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рдВрдбреЛрдЬ рдПрдЬрд╝реНрдпреЛрд░ рдмреНрд▓реЙрдм рд╕реНрдЯреЛрд░реЗрдЬ

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

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

рдореБрдЭреЗ рдХреЛрдб рджрд┐рдЦрд╛рдУ !!!


рдареАрдХ рд╣реИ, рдкрд░реНрдпрд╛рдкреНрдд рдмрд╛рдд! рдХреЛрдб рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВред рдореИрдВрдиреЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдХрдВрд╕реЛрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди (рдиреАрдЪреЗ рджрд┐рдпрд╛ рдЧрдпрд╛ рдХреЛрдб) рдмрдирд╛рдпрд╛, рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдореИрдВ рдЬрд╛рдКрдВ, рдореИрдВ рдХреБрдЫ рдФрд░ рдмрд┐рдВрджреБрдУрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред ред

рдЖрд╡рд╢реНрдпрдХ рд╢рд░реНрддреЗрдВ


рдХреЛрдб рдЪрд▓рд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдХрдИ рдХрд╛рд░реНрдп рдХрд░рдиреЗ рд╣реЛрдВрдЧреЗ:

1. рдПрдХ рддрд┐рдЬреЛрд░реА рдЦрд╛рддрд╛ рдмрдирд╛рдПрдБ: рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдирдИ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗрд╡рд▓ рддрднреА рдХрд╛рдо рдХрд░реЗрдЧреА рдЬрдм рддрд┐рдЬреЛрд░реА рдЦрд╛рддрд╛ 7 рдЬреВрди 2012 рдХреЗ рдмрд╛рдж рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ (рдЗрд╕рдХреЗ рд▓рд┐рдП - рдиреЛрдЯ , рдЕрдиреБрд╡рд╛рджрдХ рдиреЛрдЯ рджреЗрдЦреЗрдВ)ред

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

3. рд╡рд╕реНрддреБ / рдмреВрдБрдж рдХреА рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЙрдкрд▓рдмреНрдзрддрд╛ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ: рдХреЙрдкреА рдмреНрд▓реЙрдмреНрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗрд╡рд▓ рд╡рд┐рдВрдбреЛрдЬ рдЕрдЬрд╝реНрдпреЛрд░ рдХреЗ рдмрд╛рд╣рд░ рд╕реЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдк рд╕реЗ рд╕реБрд▓рдн рдмреНрд▓рдмреНрд╕ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЕрдореЗрдЬрд╝реЕрди S3 рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдкрдХреЛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдЕрдирд╛рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХрдо рд╕реЗ рдХрдо READ рдЕрдиреБрдорддрд┐рдпрд╛рдВ рд╣реИрдВред

рдХреЛрдб

рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдКрдкрд░ рдХрд╣рд╛, рдХреЛрдб рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ:

using System; using System.Collections.Generic; using System.Linq; using System.Text; using Microsoft.WindowsAzure; using Microsoft.WindowsAzure.StorageClient; namespace CopyAmazonObjectToBlobStorage { class Program { private static string azureStorageAccountName = тАЬ"; private static string azureStorageAccountKey = ""; private static string azureBlobContainerName = ""; private static string amazonObjectUrl = ""; private static string azureBlobName = ""; static void Main(string[] args) { CloudStorageAccount csa = new CloudStorageAccount(new StorageCredentialsAccountAndKey(azureStorageAccountName, azureStorageAccountKey), true); CloudBlobClient blobClient = csa.CreateCloudBlobClient(); var blobContainer = blobClient.GetContainerReference(azureBlobContainerName); Console.WriteLine("Trying to create the blob container...."); blobContainer.CreateIfNotExist(); Console.WriteLine("Blob container created...."); var blockBlob = blobContainer.GetBlockBlobReference(azureBlobName); Console.WriteLine("Created a reference for block blob in Windows Azure...."); Console.WriteLine("Blob Uri: " + blockBlob.Uri.AbsoluteUri); Console.WriteLine("Now trying to initiate copy...."); blockBlob.StartCopyFromBlob(new Uri(amazonObjectUrl), null, null, null); Console.WriteLine("Copy started...."); Console.WriteLine("Now tracking blob's copy progress...."); bool continueLoop = true; while (continueLoop) { Console.WriteLine(""); Console.WriteLine("Fetching lists of blobs in Azure blob container...."); var blobsList = blobContainer.ListBlobs(true, BlobListingDetails.Copy); foreach (var blob in blobsList) { var tempBlockBlob = (CloudBlob) blob; var destBlob = blob as CloudBlob; if (tempBlockBlob.Name == azureBlobName) { var copyStatus = tempBlockBlob.CopyState; if (copyStatus != null) { Console.WriteLine("Status of blob copy...." + copyStatus.Status); var percentComplete = copyStatus.BytesCopied / copyStatus.TotalBytes; Console.WriteLine("Total bytes to copy...." + copyStatus.TotalBytes); Console.WriteLine("Total bytes copied...." + copyStatus.BytesCopied); if (copyStatus.Status != CopyStatus.Pending) { continueLoop = false; } } } } Console.WriteLine(""); Console.WriteLine("=============================================="); System.Threading.Thread.Sleep(1000); } Console.WriteLine("Process completed...."); Console.WriteLine("Press any key to terminate the program...."); Console.ReadLine(); } } } 


рдХреЛрдб рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИред рдореИрдВ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реВрдВ: рдореИрдВ рд╡рд┐рдВрдбреЛрдЬ рдПрдЬрд╝реНрдпреЛрд░ рд╕реНрдЯреЛрд░реЗрдЬ рдФрд░ рд╕реЛрд░реНрд╕ рдмреНрд▓реЙрдм URL рддрдХ рдкрд╣реБрдБрдЪ рдХреЗ рд▓рд┐рдП рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реВрдВ (рдЕрдореЗрдЬрд╝реЕрди рдПрд╕ 3 рдореЗрдВ); рдореИрдВ рд╡рд┐рдВрдбреЛрдЬ рдПрдЬрд╝реНрдпреЛрд░ рдореЗрдВ рдмреВрдБрдж рдХрдВрдЯреЗрдирд░ рдмрдирд╛рддрд╛ рд╣реВрдВ рдФрд░ рд╕реНрд░реЛрдд URL рд╕реЗ рдмреВрдБрдж рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдирд╛ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реВрдВред рдХреЙрдкреА рдЕрдиреБрд░реЛрдз рднреЗрдЬрдиреЗ рдХреЗ рдмрд╛рдж, рд╕рднреА рдЖрд╡реЗрджрди рдХреЙрдкреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рддреЗ рд╣реИрдВред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╕реНрд░реЛрдд рд╕реЗ рд░рд┐рд╕реАрд╡рд░ рддрдХ рдмрд╛рдЗрдЯреНрд╕ рдХреЙрдкреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреА рдПрдХ рднреА рдкрдВрдХреНрддрд┐ рдирд╣реАрдВ рд╣реИред рдпрд╣ рд╕рдм Windows Azure рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдпрд╣рд╛рдБ рдЕрдореЗрдЬрд╝рди S3 рдореЗрдВ рдХреЛрдИ рд╡рд╕реНрддреБ рдХреИрд╕реА рджрд┐рдЦрддреА рд╣реИ:
рдЫрд╡рд┐

рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдХреЙрдкреА рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ рдЗрд╕реЗ рдХреНрд▓рд╛рдЙрдб рд╕реНрдЯреЛрд░реЗрдЬ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рдВрдбреЛрдЬ рдПрдЬрд╝реНрдпреЛрд░ рдмреНрд▓реЙрдм рд╕реНрдЯреЛрд░реЗрдЬ рдореЗрдВ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВред

рдЫрд╡рд┐

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

рдореИрдВрдиреЗ рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдпрд╛ рд╣реИ рдЬреЛ рдЕрдореЗрдЬрд╝реЕрди рдПрд╕ 3 рд╕реЗ рд╡рд┐рдВрдбреЛрдЬ рдПрдЬрд╝реНрдпреЛрд░ рдмреНрд▓реЙрдм рд╕реНрдЯреЛрд░реЗрдЬ рдХреА рдПрдХ рдлрд╛рдЗрд▓ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рддрд╛ рд╣реИред рдЕрдореЗрдЬрд╝реЕрди рдПрд╕ 3 рд░реАрд╕рд╛рдпрдХрд▓ рдмрд┐рди рд╕реЗ рд╡рд┐рдВрдбреЛрдЬ рдПрдЬрд╝реНрдпреЛрд░ рдмреНрд▓реЙрдмреНрд╕ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд╕рднреА рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рдХреЙрдкреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЖрдЗрдП рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдкрд░ рдЖрдЧреЗ рдмрдврд╝реЗрдВ - рдЕрдореЗрдЬрд╝реЕрди рдПрд╕ 3 рд╕реЗ рд╡рд┐рдВрдбреЛрдЬ рдПрдЬрд╝реНрдпреЛрд░ рдмреНрд▓реЙрдм рд╕реНрдЯреЛрд░реЗрдЬ рдХреА рдХреЙрдкреА рдмреНрд▓реЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рд░реНрдЯ рдХреЛ рдХреИрд╕реЗ рдХреЙрдкреА рдХрд░реЗрдВред

рдЖрд╡рд╢реНрдпрдХ рд╢рд░реНрддреЗрдВ


рдХреЛрдб рдЪрд▓рд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдХрдИ рдХрд╛рд░реНрдп рдХрд░рдиреЗ рд╣реЛрдВрдЧреЗ:

  1. рдСрдмреНрдЬреЗрдХреНрдЯ / рдмреВрдБрдж рдХреА рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЙрдкрд▓рдмреНрдзрддрд╛ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ: рдХреЙрдкреА рдмреНрд▓рдмреНрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗрд╡рд▓ рд╡рд┐рдВрдбреЛрдЬ рдЕрдЬрд╝реНрдпреЛрд░ рдХреЗ рдмрд╛рд╣рд░ рд╕реЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдк рд╕реЗ рд╕реБрд▓рдн рдмреНрд▓рдмреНрд╕ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЕрдореЗрдЬрд╝реЕрди S3 рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдкрдХреЛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдЕрдирд╛рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХрдо рд╕реЗ рдХрдо READ рдЕрдиреБрдорддрд┐рдпрд╛рдВ рд╣реИрдВред
  2. рдПрдХ рддрд┐рдЬреЛрд░реА рдЦрд╛рддрд╛ рдмрдирд╛рдПрдБ: рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдирдИ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗрд╡рд▓ рддрднреА рдХрд╛рдо рдХрд░реЗрдЧреА рдЬрдм рддрд┐рдЬреЛрд░реА рдЦрд╛рддрд╛ 7 рдЬреВрди 2012 рдХреЗ рдмрд╛рдж рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ (рдХреНрдпреЛрдВ - рдиреЛрдЯ , рдЕрдиреБрд╡рд╛рджрдХ рдиреЛрдЯ рджреЗрдЦреЗрдВ)ред
  3. рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рдХреНрд▓рд╛рдЗрдВрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ: рд▓реЗрдЦрди рдХреЗ рд╕рдордп, рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рдВрд╕реНрдХрд░рдг 1.7 рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдирдИ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЗрд╕рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЧрд┐рдЯрд╣рдм рд╕реЗ 1.7.1 рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ ред рд╕реНрд░реЛрдд рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдВред
  4. .Net рдХреЗ рд▓рд┐рдП Amazon SDK : рдЖрдкрдХреЛ Amazon AWS рд╕реЗ .net рдХреЗ рд▓рд┐рдП Amazon SDK рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
  5. Amazon рдХреЗ рд▓рд┐рдП рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рдкрд╛рд╕ рд░рдЦреЗрдВ : Amazon S3 рдХрдЪрд░рд╛ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╡рд╕реНрддреБрдУрдВ рдХреА рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ Amazon AccessKey рдФрд░ SecretKey рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред


рдХреЛрдб

рдХреЛрдб рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рдкреНрд░рджрд░реНрд╢рди рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИред рдЖрдк рдЗрд╕реЗ рдЖрд╡рд╢реНрдпрдХрддрд╛рдиреБрд╕рд╛рд░ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
 using System; using System.Collections.Generic; using System.Linq; using System.Text; using Amazon.S3; using Amazon.S3.Model; using Amazon.S3.Transfer; using Amazon.S3.Util; using Microsoft.WindowsAzure; using Microsoft.WindowsAzure.StorageClient; using System.Globalization; namespace CopyAmazonBucketToBlobStorage { class Program { private static string azureStorageAccountName = тАЬтАЭ; private static string azureStorageAccountKey = тАЬтАЭ; private static string azureBlobContainerName = тАЬтАЭ; private static string amazonAccessKey = тАЬтАЭ; private static string amazonSecretKey = тАЬтАЭ; private static string amazonBucketName = тАЬтАЭ; private static string objectUrlFormat = тАЬhttps://{0}.s3.amazonaws.com/{1}тАЭ; private static Dictionary<string, CopyBlobProgress> CopyBlobProgress; static void Main(string[] args) { //     Windows Azure CloudStorageAccount azureCloudStorageAccount = new CloudStorageAccount(new StorageCredentialsAccountAndKey(azureStorageAccountName, azureStorageAccountKey), true); //    ,    . var blobContainer = azureCloudStorageAccount.CreateCloudBlobClient().GetContainerReference(azureBlobContainerName); //  ,   . Console.WriteLine(┬лTrying to create the blob container....┬╗); blobContainer.CreateIfNotExist(); Console.WriteLine(┬лBlob container created....┬╗); //    Amazon AmazonS3Client amazonClient = new AmazonS3Client(amazonAccessKey, amazonSecretKey); //  CopyBlobProgress = new Dictionary<string, CopyBlobProgress>(); string continuationToken = null; bool continueListObjects = true; //  ListObjects        1000 , //    ,      . while (continueListObjects) { ListObjectsRequest requestToListObjects = new ListObjectsRequest() { BucketName = amazonBucketName, Marker = continuationToken, MaxKeys = 100, }; Console.WriteLine(┬лTrying to list objects from S3 Bucket....┬╗); //    Amazon S3 var listObjectsResponse = amazonClient.ListObjects(requestToListObjects); //  var objectsFetchedSoFar = listObjectsResponse.S3Objects; Console.WriteLine(┬лObject listing complete. Now starting the copy process....┬╗); //,     .    ,        continuation token. continuationToken = listObjectsResponse.NextMarker; foreach (var s3Object in objectsFetchedSoFar) { string objectKey = s3Object.Key; //ListObjects    ,  ,     S3 Object Key.     /,    . if (!objectKey.EndsWith(┬л/┬╗)) { // URL   string urlToCopy = string.Format(CultureInfo.InvariantCulture, objectUrlFormat, amazonBucketName, objectKey); //  CloudBlockBlob CloudBlockBlob blockBlob = blobContainer.GetBlockBlobReference(objectKey); var blockBlobUrl = blockBlob.Uri.AbsoluteUri; if (!CopyBlobProgress.ContainsKey(blockBlobUrl)) { CopyBlobProgress.Add(blockBlobUrl, new CopyBlobProgress() { Status = CopyStatus.NotStarted, }); // .     try/catch //    Amazon S3       . try { Console.WriteLine(string.Format(┬лTrying to copy \┬╗{0}\┬╗ to \┬╗{1}\┬╗┬л, urlToCopy, blockBlobUrl)); blockBlob.StartCopyFromBlob(new Uri(urlToCopy)); CopyBlobProgress[blockBlobUrl].Status = CopyStatus.Started; } catch (Exception exception) { CopyBlobProgress[blockBlobUrl].Status = CopyStatus.Failed; CopyBlobProgress[blockBlobUrl].Error = exception; } } } } Console.WriteLine(┬л┬л); Console.WriteLine(┬л==========================================================┬л); Console.WriteLine(┬л┬л); Console.WriteLine(┬лChecking the status of copy process....┬╗); //  bool checkForBlobCopyStatus = true; while (checkForBlobCopyStatus) { //      var blobsList = blobContainer.ListBlobs(true, BlobListingDetails.Copy); foreach (var blob in blobsList) { var tempBlockBlob = blob as CloudBlob; var copyStatus = tempBlockBlob.CopyState; if (CopyBlobProgress.ContainsKey(tempBlockBlob.Uri.AbsoluteUri)) { var copyBlobProgress = CopyBlobProgress[tempBlockBlob.Uri.AbsoluteUri]; if (copyStatus != null) { Console.WriteLine(string.Format(┬лStatus of \┬╗{0}\┬╗ blob copy....┬╗, tempBlockBlob.Uri.AbsoluteUri, copyStatus.Status)); switch (copyStatus.Status) { case Microsoft.WindowsAzure.StorageClient.CopyStatus.Aborted: if (copyBlobProgress != null) { copyBlobProgress.Status = CopyStatus.Aborted; } break; case Microsoft.WindowsAzure.StorageClient.CopyStatus.Failed: if (copyBlobProgress != null) { copyBlobProgress.Status = CopyStatus.Failed; } break; case Microsoft.WindowsAzure.StorageClient.CopyStatus.Invalid: if (copyBlobProgress != null) { copyBlobProgress.Status = CopyStatus.Invalid; } break; case Microsoft.WindowsAzure.StorageClient.CopyStatus.Pending: if (copyBlobProgress != null) { copyBlobProgress.Status = CopyStatus.Pending; } break; case Microsoft.WindowsAzure.StorageClient.CopyStatus.Success: if (copyBlobProgress != null) { copyBlobProgress.Status = CopyStatus.Success; } break; } } } } var pendingBlob = CopyBlobProgress.FirstOrDefault(c => c.Value.Status == CopyStatus.Pending); if (string.IsNullOrWhiteSpace(pendingBlob.Key)) { checkForBlobCopyStatus = false; } else { System.Threading.Thread.Sleep(1000); } } if (string.IsNullOrWhiteSpace(continuationToken)) { continueListObjects = false; } Console.WriteLine(┬л┬л); Console.WriteLine(┬л==========================================================┬л); Console.WriteLine(┬л┬л); } Console.WriteLine(┬лProcess completed....┬╗); Console.WriteLine(┬лPress any key to terminate the program....┬╗); Console.ReadLine(); } } public class CopyBlobProgress { public CopyStatus Status { get; set; } public Exception Error { get; set; } } public enum CopyStatus { NotStarted, Started, Aborted, Failed, Invalid, Pending, Success } } 


рдХреЛрдб рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИред рдкрд░рд┐рд╢рд┐рд╖реНрдЯ:

  1. рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рд╡рд┐рдВрдбреЛрдЬ рдПрдЬрд╝реНрдпреЛрд░ рд╕реНрдЯреЛрд░реЗрдЬ рдореЗрдВ рдПрдХ рдмреНрд▓реЙрдм рдХрдВрдЯреЗрдирд░ рдмрдирд╛рддрд╛ рд╣реИред
  2. рдЕрдореЗрдЬрд╝рди S3 рдмрд╛рд▓реНрдЯреА рд╕реЗ рд╡рд╕реНрддреБрдУрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЕрдореЗрдЬрд╝реЕрди рдПрд╕ 3 рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдореЗрдВ 1000 рдСрдмреНрдЬреЗрдХреНрдЯ рддрдХ рд▓реМрдЯ рд╕рдХрддрд╛ рд╣реИ, рдЕрдиреНрдпрдерд╛ рдПрдХ рдирд┐рд░рдВрддрд░ рдЯреЛрдХрди рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЗ рдЕрдЧрд▓реЗ рд╕рдмрд╕реЗрдЯ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдПрдХ рдорд╛рд░реНрдХрд░ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  3. рдкреНрд░рддреНрдпреЗрдХ рд▓реМрдЯреА рд╣реБрдИ рд╡рд╕реНрддреБ рдХреЗ рд▓рд┐рдП, рдПрдХ URL рдЬреЗрдирд░реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЙрдкреА рдмреНрд▓реЙрдм рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  4. рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЙрдкреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИред рд╕рднреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рд╕рдорд╛рдкреНрддрд┐ рдХреЗ рдмрд╛рдж, рд╕рднреА рд╡рд╕реНрддреБрдУрдВ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдП рдЬрд╛рдиреЗ рддрдХ рдЪрд░рдг 2-4 рджреЛрд╣рд░рд╛рдП рдЬрд╛рддреЗ рд╣реИрдВред


Amazon S3 рдкрд░ рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдмрдХреЗрдЯ рдПрдХреНрд╕рдкреНрд▓реЛрд░рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдЬреЛ рдирд┐рдореНрди рд╕реНрдерд┐рддрд┐ рджрд┐рдЦрд╛рддрд╛ рд╣реИ:

рдЫрд╡рд┐

рдХреЙрдкреА рдкреВрд░реА рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдХреНрд▓рд╛рдЙрдб рд╕реНрдЯреЛрд░реЗрдЬ рд╕реНрдЯреВрдбрд┐рдпреЛ рдиреЗ рд╡рд┐рдВрдбреЛрдЬ рдПрдЬрд╝реНрдпреЛрд░ рдмреНрд▓реЙрдм рд╕реНрдЯреЛрд░реЗрдЬ рдХреА рдирд┐рдореНрди рд╕реНрдерд┐рддрд┐ рджрд┐рдЦрд╛рдИред

рдЫрд╡рд┐

рд╕рд╛рд░рд╛рдВрд╢

рдореИрдВрдиреЗ рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдпрд╛ рд╣реИ рдЬреЛ рдЕрдореЗрдЬрд╝реЕрди рдПрд╕ 3 рд░реАрд╕рд╛рдпрдХрд▓ рдмрд┐рди рд╕реЗ рд╡рд┐рдВрдбреЛрдЬ рдПрдЬрд╝реНрдпреЛрд░ рдмреНрд▓реЙрдм рд╕реНрдЯреЛрд░реЗрдЬ рдХреА рд╕рднреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдХреЙрдкреА рдХрд░рддрд╛ рд╣реИред

рдЕрдиреБрд╡рд╛рджрдХ рд╕реЗ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ

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


рдЕрдиреБрд╡рд╛рджрдХ рд╕реЗ рдзреНрдпрд╛рди рджреЗрдВ

Windows Azure рд╕рдВрдЧреНрд░рд╣рдг рд╕реЗрд╡рд╛рдПрдБ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд╕рдХрддреА рд╣реИрдВ рдЬреЛ рдкреНрд░рддреНрдпреЗрдХ рдСрдкрд░реЗрд╢рди (рд╕реЗрд╡рд╛) рдХреЗ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рджрд░реНрд╢рд╛рддреА рд╣реИрдВ, рдФрд░ рдбреЗрд╡рд▓рдкрд░ x-ms-version рд╣реЗрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рд╡рд┐рднрд┐рдиреНрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдФрд░ рдХрд╛рд░реНрдп рдХреА рдХрд╛рд░реНрдпрдкреНрд░рдгрд╛рд▓реА (рд╡реИрдЪрд╛рд░рд┐рдХ рдирд╣реАрдВ) рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддреА рд╣реИред

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

1. рдпрджрд┐ рдЕрдиреБрд░реЛрдз рдореЗрдВ рдПрдХреНрд╕-рдПрдордПрд╕-рд╕рдВрд╕реНрдХрд░рдг рд╣реИрдбрд░ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд╛рдЗрди рдЗрди рдирд╣реАрдВ рд╣реИ, рддреЛ рд╕рдВрд╕реНрдХрд░рдг 2009-07-17 рдПрд╕рдПрдПрд╕ рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рдСрдкрд░реЗрд╢рди рдПрдХреНрд╕-рдПрдордПрд╕-рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

2. рдпрджрд┐ рдЕрдиреБрд░реЛрдз рдореЗрдВ рдПрдХреНрд╕-рдПрдордПрд╕-рд╕рдВрд╕реНрдХрд░рдг рд╣реЗрдбрд░ рдирд╣реАрдВ рд╣реИ рдФрд░ рдХреЛрдИ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЦрд╛рддрд╛ рдорд╛рд▓рд┐рдХ рдиреЗ рд╕реЗрдЯ рдмреНрд▓реЙрдм рд╕рд░реНрд╡рд┐рд╕ рдкреНрд░реЙрдкрд░реНрдЯреАрдЬ рдСрдкрд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реЗрд╡рд╛ рд╕рдВрд╕реНрдХрд░рдг рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рд╕рдВрд╕реНрдХрд░рдг 2009-07-07 рдПрд╕рдПрдПрд╕ рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдСрдкрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП, рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рдВрд╕реНрдХрд░рдг рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП рдЦрд╛рддрд╛ рд╕реНрд╡рд╛рдореАред

3. рдпрджрд┐ рдЕрдиреБрд░реЛрдз рдореЗрдВ рдПрдХреНрд╕-рдПрдордПрд╕-рд╕рдВрд╕реНрдХрд░рдг рд╣реЗрдбрд░ рдирд╣реАрдВ рд╣реИ, рддреЛ рдХреЛрдИ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЦрд╛рддрд╛ рдорд╛рд▓рд┐рдХ рдиреЗ рд╕реЗрд╡рд╛ рд╕рдВрд╕реНрдХрд░рдг рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рд╕рдВрд╕реНрдХрд░рдг 2009-07-17 рдПрд╕рдПрдПрд╕ рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрджрд┐ рдХрдВрдЯреЗрдирд░ рдХреЗ рдкрд╛рд╕ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЕрдзрд┐рдХрд╛рд░ рд╣реИрдВ рдФрд░ 2009-09-19 (рдпрд╛ рдмрд╛рдж рдХреЗ рд╕рдВрд╕реНрдХрд░рдг) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реЗрдЯ рдХрдВрдЯреЗрдирд░ ACL рдСрдкрд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдПрдХреНрд╕реЗрд╕ рдкреНрд░рддрд┐рдмрдВрдз рд▓рдЧрд╛рдП рдЧрдП рдереЗ, рддреЛ рдСрдкрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рд╕рдВрд╕реНрдХрд░рдг 2009-09-19 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдФрд░ рдЙрдирдХреЗ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА ред

рдЧреМрд░рд╡ рдордВрддреНрд░ рджреНрд╡рд╛рд░рд╛ рд╕рдВрдмрдВрдзрд┐рдд рдкреЛрд╕реНрдЯ рдХрд╛ рдЕрдиреБрд╡рд╛рдж:

рд╡рд╕реНрддреБрдПрдВ

рдЯреЛрдХрд░реА

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


All Articles