Настройка правила межрегиональной репликации для ведер S3 с помощью AWS CLI.

S3 — это служба объектного хранения, предоставляемая AWS. Объектное хранилище берет каждую часть данных и обозначает ее как объект. Данные хранятся в отдельных хранилищах, а не в файлах в папках, и объединяются с соответствующими метаданными и уникальным идентификатором, образуя пул хранения.

Доступ к объектному хранилищу S3 осуществляется через Web API, что упрощает его использование, в отличие от блочного хранилища типа EBS, для доступа к которому необходимо подключить EC2 Instance.

Вам не нужно платить за создание ведра S3, но вы должны платить за Объекты! Это означает, что каждый файл, загруженный в ведро, а также то, как долго он будет храниться, определяет ваш счет.

ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ

  1. Что такое правило репликации?
    Правило репликации — это правило для репликации объектов из одного ведра в другое.
    Правило привязывается к определенному ведру (оно же Source bucket), которое имеет различные параметры, но самое главное — Destination bucket.
    Правило автоматически реплицирует объекты в ведро назначения всякий раз, когда мы загружаем что-то в ведро источника.

  2. Что мы подразумеваем под кросс-региональностью?
    Кросс-региональность означает, что наши ведра развернуты в разных регионах. Например, я развернул ведро в us-west-1 (Северная Калифорния), но хочу реплицировать объекты в другое ведро, развернутое в ap-northeast-1 (Токио).

  3. Зачем нам нужна репликация между ведрами?
    В основном для аварийного восстановления (DR). Если ведро, размещенное в нашем первичном центре данных, выйдет из строя, мы сможем немедленно и легко перенаправить его в наш вторичный центр данных, который может находиться в той же зоне или другой зоне/регионе.

Итак, давайте начнем настраивать правило репликации на ведро!

Но прежде чем использовать CLI, мы должны настроить его. Для настройки мы должны создать ключ доступа в нашем AWS acc.


Здесь мы указали id ключа доступа и секретный ключ доступа, полученный из созданного нами «ключа доступа».
В качестве основного региона я выбрал us-west-1, а формат вывода — json, который используется по умолчанию.

Создание ведер источника и назначения в CLI

  • Давайте создадим ведро-источник и включим в нем версионность.

Команда Create bucket -> aws s3api create-bucket --bucket <source-bucket-name> --region <region-code> --create-bucket-configuration LocationConstraint=<region-code>.

Примечание: При развертывании ведра S3 в регионе us-east-1 нам не нужно указывать тег LocationConstraint.

Включите команду Versioning -> aws s3api put-bucket-versioning --bucket <source-bucket-name> --versioning-configuration Status=Enabled.

  • Теперь давайте создадим целевое ведро в другом регионе и включим в нем версионность.

Команда создания ведра -> aws s3api create-bucket --bucket <destination-bucket-name> --region us-east-1.

Примечание: Поскольку мы развернули ведро назначения в регионе us-east-1, вы можете видеть, что нам не нужно использовать тег LocationConstraint.

Включите команду Versioning -> aws s3api put-bucket-versioning --bucket <destination-bucket-name> --versioning-configuration Status=Enabled.

Итак, мы видим, что наши исходный и целевой ведра развернуты в разных регионах…


Создание роли IAM и правила репликации

Для создания правила репликации нам нужна роль IAM, чтобы прикрепить правило к исходному ведру. Для создания IAM-роли нам понадобятся 2 JSON-файла. Первый — для политики доверия, второй — для разрешений роли.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "s3.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
Вход в полноэкранный режим Выход из полноэкранного режима

Сохраните этот код как s3-trust-policy.json

Затем используйте следующую команду для создания IAM-роли и прикрепления к ней политики доверия,

Примечание: Сохраните json файлы в директории, где вы запустили CMD, иначе вам придется правильно указать местоположение файла.

Теперь прикрепите ролевое разрешение к роли IAM,

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObjectVersionForReplication",
        "s3:GetObjectVersionAcl",
        "s3:GetObjectVersionTagging"
      ],
      "Resource": ["arn:aws:s3:::<source-bucket-name>/*"] 
    },
    {
      "Effect": "Allow",
      "Action": ["s3:ListBucket", "s3:GetReplicationConfiguration"],
      "Resource": ["arn:aws:s3:::source-bucket"]
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:ReplicateObject",
        "s3:ReplicateDelete",
        "s3:ReplicateTags"
      ],
      "Resource": "arn:aws:s3:::<destination-bucket-name>/*" 
    }
  ]
}
Войдите в полноэкранный режим Выйти из полноэкранного режима

Замените и на соответствующие имена ведра источника и назначения и сохраните его как s3-role-perms.json

Теперь прикрепите файл к роли с помощью следующей команды,


Теперь давайте создадим файл Replication Config, который установит правило репликации для нашего исходного ведра.

{
  "Role": "<Role-ARN>",
  "Rules": [
    {
      "Status": "Enabled",
      "Priority": 1,
      "DeleteMarkerReplication": { "Status": "Disabled" },
      "Filter": { "Prefix": "Documents" },
      "Destination": {
        "Bucket": "arn:aws:s3:::<destination-bucket-name>"
      }
    }
  ]
}
Вход в полноэкранный режим Выйти из полноэкранного режима

Замените ARN (номер ресурса Amazon) роли IAM, которую мы создали в предыдущих шагах…

… и именем ведра назначения & сохраните файл как replicationConf.json

Затем с помощью следующей команды прикрепите этот файл конфигурации к исходному ведру, чтобы установить правило репликации,


Давайте проверим, правильно ли подключено правило репликации или нет!

Используйте команду для проверки в CLI,

или мы можем проверить в консоли,

Оцените статью
devanswers.ru
Добавить комментарий