Включение межрегиональной репликации S3

Включение межрегиональной репликации S3#

Межрегиональная репликация (Cross-region replication или CRR) обеспечивает автоматическое асинхронное копирование объектов между корзинами S3, расположенными в одном и том же или в двух разных кластерах S3. Корзины, для которых настроена межрегиональная репликация, могут принадлежать одному и тому же пользователю. Репликация объектов может выполняться в одну или несколько корзин назначения.

Чтобы включить межрегиональную репликацию, необходимо добавить конфигурацию репликации к исходной корзине. Минимальная конфигурация должна обеспечивать корзины назначения, в которые будет выполняться репликация объектов, и пользователя с ролью, которая позволяет выполнение репликации объектов.

Ограничения

  • После включения межрегиональной репликации репликация будет выполняться только для новых объектов S3.

Предварительные требования

Настройка межрегиональной репликации между корзинами одного кластера S3

  1. Вам понадобятся одна исходная корзина и хотя бы одна корзина назначения. Если их нет, создайте их с помощью интерфейса командной строки AWS, стороннего приложения S3 или пользовательской панели продукта Кибер Хранилище. Например, чтобы создать корзины с помощью интерфейса командной строки AWS, выполните следующие шаги на машине, где выполняется настройка репликации:

    1. Добавьте профиль пользователя S3 в конфигурационный файл %USERPROFILE%\.aws\credentials для Windows или $HOME/.aws/credentials для Linux:

      [<s3-user-profile>]
      aws_access_key_id = <key-id>
      aws_secret_access_key = <key-secret>
      

      Где:

      <s3-user-profile>

      Имя профиля пользователя S3.

      <key-id>

      Идентификатор ключа доступа пользователя S3.

      <key-secret>

      Секретный ключ доступа пользователя S3.

    2. Создайте исходную корзину и от одной до нескольких корзин назначения:

      aws s3api create-bucket --bucket <bucket-name> --endpoint-url <s3-api-url> --profile <s3-user-profile>
      

      Где:

      <bucket-name>

      Имя корзины.

      <s3-api-url>

      URL-адрес S3 API.

      <s3-user-profile>

      Имя профиля пользователя S3.

  2. Включите поддержку версий для каждой из этих корзин:

    aws s3api put-bucket-versioning --bucket <bucket-name> --endpoint-url <s3-api-url> --profile <s3-user-profile> \
    --versioning-configuration 'Status=Enabled'
    

    Где:

    <bucket-name>

    Имя корзины.

    <s3-api-url>

    URL-адрес S3 API.

    <s3-user-profile>

    Имя профиля пользователя S3.

  3. Получите идентификатор пользователя-владельца исходной корзины из вывода команды ниже.

    aws s3api list-buckets --endpoint-url <s3-api-url> --profile <s3-user-profile>
    

    Где:

    <s3-api-url>

    URL-адрес S3 API.

    <s3-user-profile>

    Имя профиля пользователя S3.

    Пример вывода команды:

    {
        "Buckets": [
            {
                "Name": "destination",
                "CreationDate": "2023-07-27T13:01:08+00:00"
            },
            {
                "Name": "source",
                "CreationDate": "2023-07-27T12:58:21+00:00"
            }
        ],
        "Owner": {
            "DisplayName": "s3user",
            "ID": "e872c6783c209555"
        }
    }
    
  4. Создайте конфигурационный файл репликации на машине, где выполняется настройка репликации. Например, создайте файл replication.json со следующим содержимым:

    {
        "Role": "arn:aws:iam::<s3-user-id>:role/service-role/s3crr_role",
        "Rules": [
            {
                "Priority": 1,
                "DeleteMarkerReplication": {"Status": "Disabled"},
                "Filter": {},
                "Status": "Enabled",
                "Destination": {
                    "Bucket": "arn:aws:s3:::<destination-bucket-name>"
                }
            }
        ]
    }
    

Элементы конфигурации репликации

Role

Указывает роль, которая будет использоваться для репликации объектов. Задайте значение в формате arn:aws:iam::<source-s3-user-id>:role/service-role/s3crr_role, где <source-s3-user-id> — это идентификатор пользователя-владельца исходной корзины.

Rules

Правила репликации, указывающие, для каких объектов выполнять репликацию и где хранить реплики.

ID

Уникальный идентификатор правила длиной до 255 символов.

Priority

Указывает, какое правило обладает более высоким приоритетом, когда два или более правил конфликтуют.

Destination

Контейнер для информации о месте назначения репликации и его конфигурации.

Bucket

Указывает корзину, где необходимо хранить результаты. Задайте значение в формате arn:aws:s3:::<destination-bucket-name>, где <destination-bucket-name> — это имя корзины назначения.

Status

Указывает, включено ли правило. Возможные значения: Enabled или Disabled.

DeleteMarkerReplication

Указывает, выполнять ли репликацию маркеров удаления. Если указан элемент Filter, также необходимо указать элемент DeleteMarkerReplication.

Подробное описание формата конфигурации репликации, ее элементов и дополнительные примеры см. в документации AWS.

Дополнительная информация

  • Чтобы просмотреть или проверить текущую конфигурацию репликации исходной корзины, выполните:

    aws s3api get-bucket-replication --bucket <source-bucket-name> --endpoint-url <s3-api-url> --profile <s3-user-profile>
    
  • Чтобы просмотреть объекты в корзине и их ключи, выполните:

    aws s3api list-objects --bucket <bucket-name> --endpoint-url <s3-api-url> --profile <s3-user-profile>
    
  • Чтобы просмотреть статус репликации объекта, выполните:

    aws s3api head-object --bucket <source-bucket-name> --key <object-key> --endpoint-url <s3-api-url> --profile <s3-user-profile>
    
  • Для репликации из исходной корзины в несколько корзин назначения задайте несколько правил репликации в конфигурации репликации, указав соответствующие корзины назначения.

  • Чтобы выключить репликацию, выполните:

    aws s3api delete-bucket-replication --bucket <source-bucket-name> --endpoint-url <s3-api-url> --profile <s3-user-profile>