
Предположим, что нам надо скопировать данные из баккета в одном аккаунте, в баккет в другом аккаунте, да еще и в другом регионе.
Что нам понадобится
- Два AWS аккаунта (один для исходного баккета, второй для баккета назначения)
- IAM пользователь в аккаунте с баккетом, куда мы будем копировать данные (тут есть документация, как создать IAM пользователя в аккаунте)
- Настроенная утилита aws-cli на локальной машине с ключами ранее созданного пользователя (документация по утилите)
Шаг 1: Получаем номер аккаунта
Заходим в аккаунт назначения. Переходим в Support
→ Support center
и копируем номер аккаунта.
Шаг 2: Настраиваем исходный S3 баккет
Заходим в аккаунт-источник. Создаем баккет источник (если его еще не было, то что вы тут делаете? ;) документация как создать баккет). Аттачим полиси, которое представлено ниже (как приаттачить полиси). Если вы только создали баккет, то залейте несколько файлов туда для теста.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DelegateS3Access",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::DESTINATION_BUCKET_ACCOUNT_NUMBER:root"
},
"Action": [
"s3:ListBucket",
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::SOURCE_BUCKET_NAME/*",
"arn:aws:s3:::SOURCE_BUCKET_NAME"
]
}
]
}
Шаг 3: Настраиваем баккет назначения
Заходим в аккаунт назначения. Создаем баккет, куда будем копировать данные.
Шаг 4: Аттачим полиси к созданному пользователю
Аттачим к созданному пользователю полиси, которое представлено ниже (как приаттачить полиси пользователю).
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::SOURCE_BUCKET_NAME",
"arn:aws:s3:::SOURCE_BUCKET_NAME/*"
]
},
{
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:PutObject",
"s3:PutObjectAcl"
],
"Resource": [
"arn:aws:s3:::DESTINATION_BUCKET_NAME",
"arn:aws:s3:::DESTINATION_BUCKET_NAME/*"
]
}
]
}
Шаг 5: Синхронизируем данные
Если вы сделали все шаги, описанные выше, то можно начать синхронизацию.
aws s3 sync s3://SOURCE-BUCKET-NAME s3://DESTINATION-BUCKET-NAME --source-region SOURCE-REGION-NAME --region DESTINATION-REGION-NAME