Копирование данных с S3 в другой AWS регион/аккаунт

Thank you for reading this post, don't forget to subscribe!

Ино­гда при­хо­дит­ся копи­ро­вать дан­ные с одно­го AWS реги­о­на в дру­гой. Или, с одно­го акка­ун­та (одно­го реги­о­на), в дру­гой AWS акка­унт како­го-то региона.

Для нача­ла, нуж­но знать от куда и куда мы копи­ру­ем данные:

Где:

  • Source bucket — Это AWS S3 кор­зи­на с кото­рый будут ско­пи­ро­ва­ны дан­ные (Напри­мер ваш акка­унт име­ет ID: 666666666666).
  • User policy/role — Полиси\Роль от кото­рой будем копи­ро­вать данные.
  • Destination bucket — Соб­ствен­но, AWS S3 бакет в кото­рый будем копи­ро­вать дан­ные (Напри­мер ваш акка­унт име­ет ID: 777777777777).

В дан­ном при­ме­ре, я буду копи­ро­вать дан­ные с одно­го AWS реги­о­на в дру­гой. Но так же, мож­но выпол­нять копи­ро­ва­ние с одно­го AWS акка­ун­та в дру­гой. Суть не изменится.

Откры­ва­ем AWS Console акка­ун­та в кото­рый буде­те копи­ро­вать дан­ные. И пере­хо­дим в «Support Center» через вклад­ку «Support» и после это­го полу­ча­ем ID ваше­го аккаунта:

Напри­мер: 777777777777. Идем дальше.

После того как вы узна­ли ИД акка­ун­та в кото­рый буде­те копи­ро­вать дан­ные, пере­хо­дим в акка­унт с кото­ро­го вы копи­ру­е­те дан­ные ( У меня это акка­унт 666666666666) и после чего, пере­хо­дим во S3 и нахо­дим вашу корзину(бакет). В Дан­ном баке­те, име­ет­ся вклад­ка «Permissions». Кли­ка­ем по ней и пере­хо­дим в «Bucket Policy» поли­си через кото­рые, соб­ствен­но, и выпол­ня­ет­ся раз­ре­ше­ние или запре­ще­ние опе­ра­ций с корзиной:

AWS S3 bucket policies

В поле сто­ит вста­вить сле­ду­ю­щий текст:

Или, вот такая полиси:


или

После чего, нажи­ма­ем на «Save» кнопку.

Далее, нуж­но создать поль­зо­ва­те­ля в акка­ун­ту (Destination) куда буде­те копи­ро­вать дан­ные (777777777777). Напри­мер, у меня он будет назы­вать­ся так: s3-user-sync. Для это­го поль­зо­ва­те­ля нуж­но при­кре­пить поли­си что­бы он мог ско­пи­ро­вать дан­ные, а поли­си выгля­дит так:

Соб­ствен­но, вот и все.

Копируем данных с S3 в другой AWS регион/аккаунт в Unix/Linux

После всех дей­ствий мож­но выпол­нить копи­ро­ва­ние, коман­да выгля­дит так:

$ aws s3 sync s3://YOUR_SOURCE_AWS_S3_BUCKET_NAME_HERE s3://YOUR_DESTINATION_AWS_S3_BUCKET_NAME_HERE --source-region SOURCE_REGION_NAME_HERE --region DESTINATION_REGION_NAME_HERE

Напри­мер

$ aws s3 sync s3://my-us-west-2-bucket s3://my-us-east-1-bucket --source-region us-west-2 --region us-east-1