Интеграция

Ваше хранилище · WordPress + WooCommerce

AWS S3 для WooCommerce

В плагине Alter Product есть готовый модуль хранения в AWS S3. Храните поддерживаемые группы файлов плагина в собственном закрытом бакете, подключите его в WordPress и перенесите существующие файлы средствами плагина.

Alter Product не взимает дополнительную плату за увеличение ёмкости этого подключённого хранилища. AWS выставляет вашему аккаунту счёт за хранение, запросы и передачу данных. Расходы на хостинг WordPress и обычные правила тарифного плана и сессий встраивания сохраняются.

Инструкция соответствует руководству по настройке в плагине. Названия элементов консоли AWS остаются на английском.

Сначала установите плагин WordPress + WooCommerceПодключите Alter Product к магазину, прежде чем настраивать это дополнительное хранилище.

Хранение, доставка файлов и расходы

S3 хранит файловые объекты плагина. WordPress по-прежнему отвечает за проверку прав и доставку файлов в браузер.

Закрытое хранилище для плагина

Браузер не скачивает файлы напрямую из S3. WordPress получает и проверяет файлы из закрытого бакета, затем выдаёт их через собственные конечные точки. Оставьте CORS в S3 пустым и включите Block Public Access: это не публичный бакет и не прямое подключение CDN.

Модуль работает с поддерживаемыми группами файлов Alter Product. Подключение бакета не переносит все файлы WordPress и не меняет ограничения встроенных инструментов.

Браузер запрашивает файлы через WordPress; WordPress подключается к закрытому бакету AWS S3.
Файлы выдаёт WordPress. Закрытый бакет S3 не предоставляется браузеру напрямую.

Платите AWS за использованные ресурсы

Alter Product не взимает дополнительную плату за увеличение ёмкости подключённого бакета. Стоимость AWS зависит от использования, региона и класса хранения; сверяйтесь с актуальным прайс-листом S3, а не рассчитывайте на фиксированную ставку.

Поскольку файлы выдаёт WordPress, этот трафик также может учитываться хостингом. S3 не означает отсутствия трафика на хостинге или неограниченной пропускной способности сервера.

Создайте бакет с поддерживаемыми настройками

Названия полей ниже соответствуют англоязычной консоли AWS и встроенной инструкции плагина.

Создайте бакет общего назначения

Войдите в AWS, откройте Amazon S3 и выберите General purpose buckets → Create bucket. Выберите регион и задайте имя из строчных латинских букв, цифр и дефисов, без точек. Скопируйте полное имя бакета, включая суффикс, добавленный AWS.

  1. Примените настройки из таблицы и выберите Create bucket.
  2. Сохраните полное имя бакета, регион и 12-значный идентификатор аккаунта AWS владельца бакета.
  3. Оставьте Cross-origin resource sharing (CORS) пустым. Запросы к S3 отправляет сервер WordPress.
Настройки из инструкции плагина по подключению S3
Поле AWSНастройка
Bucket typeGeneral purpose
Bucket namespaceAccount Regional namespace (рекомендуется)
Object OwnershipACLs disabled / Bucket owner enforced
Block Public AccessBlock all public access (все четыре настройки)
Bucket VersioningEnable
Default encryptionServer-side encryption with Amazon S3 managed keys (SSE-S3 / AES256)
Bucket KeyDisable
Advanced settings → Object LockDisable

Сделайте HTTPS обязательным

Добавьте правило транспорта, не открывая публичный доступ к бакету и не предоставляя доступ к объектам.

Добавьте политику бакета

Откройте Permissions → Bucket policy → Edit. Замените оба значения EXAMPLE-BUCKET полным именем бакета. Если политика уже существует, сохраните её правила и добавьте это правило после проверки всего документа.

  1. Проверьте сообщения редактора и выберите Save changes.
  2. Убедитесь, что правило сохранено. Оставьте Block all public access включённым.
JSON политики бакета
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "DenyInsecureTransport",
      "Effect": "Deny",
      "Principal": "*",
      "Action": "s3:*",
      "Resource": [
        "arn:aws:s3:::EXAMPLE-BUCKET",
        "arn:aws:s3:::EXAMPLE-BUCKET/*"
      ],
      "Condition": {
        "Bool": {
          "aws:SecureTransport": "false",
          "aws:PrincipalIsAWSService": "false"
        }
      }
    }
  ]
}

Настройте ограниченный доступ IAM

Используйте отдельную политику для этого бакета и префикса вместо AdministratorAccess или AmazonS3FullAccess.

Создайте политику для плагина

В IAM → Policies → Create policy → JSON вставьте документ ниже. Замените каждое EXAMPLE-BUCKET полным именем бакета. Префикс alter-product должен совпадать с Folder prefix в WordPress; если выбрали другой префикс, измените его во всех Resource для объектов.

  1. Проверьте политику, выберите Next и задайте имя, например AlterProductS3Storage.
  2. Выберите Create policy и сохраните имя для настройки пользователя.
JSON политики IAM
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "ReadRequiredBucketControls",
      "Effect": "Allow",
      "Action": [
        "s3:GetBucketVersioning",
        "s3:GetBucketOwnershipControls",
        "s3:GetBucketPublicAccessBlock",
        "s3:GetEncryptionConfiguration"
      ],
      "Resource": "arn:aws:s3:::EXAMPLE-BUCKET"
    },
    {
      "Sid": "WriteAndReadVersionedPluginObjects",
      "Effect": "Allow",
      "Action": [
        "s3:PutObject",
        "s3:GetObjectVersion"
      ],
      "Resource": [
        "arn:aws:s3:::EXAMPLE-BUCKET/alter-product/objects/*",
        "arn:aws:s3:::EXAMPLE-BUCKET/alter-product/.storage-tests/*"
      ]
    },
    {
      "Sid": "RecoverJournalOwnedObjects",
      "Effect": "Allow",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::EXAMPLE-BUCKET/alter-product/objects/*"
    },
    {
      "Sid": "DeleteOnlyConnectionTestVersions",
      "Effect": "Allow",
      "Action": "s3:DeleteObjectVersion",
      "Resource": "arn:aws:s3:::EXAMPLE-BUCKET/alter-product/.storage-tests/*"
    }
  ]
}

Создайте отдельного пользователя и ключ доступа

Выберите IAM → Users → Create user. Не отмечайте Provide user access to the AWS Management Console.

  1. Выберите Next → Attach policies directly и назначьте только политику выше. Завершите действие Create user.
  2. Откройте Security credentials → Access keys → Create access key этого пользователя. Для ручной настройки плагина выберите Other → Next, затем Create access key.
  3. Сохраните Access key ID и Secret access key в менеджере паролей. Секрет показывается только один раз. Введите их напрямую в WordPress через HTTPS, не отправляйте в сообщениях или на скриншотах.

Сохраните и проверьте соединение в WordPress

Откройте Alter Product → Settings → Storage в панели магазина через HTTPS. Выберите AWS S3 и + / Add connection.

Введите параметры подключения

Выберите New connection. Эта же встроенная инструкция доступна в AWS S3 setup guide.

  1. Выберите Save connection и дождитесь подтверждения.
  2. Выберите Test connection. Перед повторной проверкой сохраните изменения.
  3. Проверьте результат в окне и столбце Last connection test. После сохранения поля ключей намеренно очищаются.
Поля подключения в WordPress
ПолеЗначение
Bucket nameПолное имя бакета, без ARN, URL s3:// или HTTPS-адреса; без точек.
Folder prefixalter-product, как в политике IAM. Используйте буквы, цифры, дефисы, подчёркивания и разделённые папки; без косой черты в начале или конце.
Bucket owner AWS account ID12-значный идентификатор аккаунта владельца без пробелов.
AWS regionФактический регион бакета. По умолчанию в форме выбран eu-central-1.
AWS access key ID / AWS secret access keyСохранённая пара ключей отдельного пользователя IAM.
Use temporary AWS credentialsНе отмечайте для постоянного ключа этого пользователя IAM. Включайте только для временных учётных данных и укажите AWS session token.

Если проверка соединения не удалась

Проверьте имя бакета, владельца, регион, обязательные настройки и точное совпадение префикса в WordPress и IAM. Оставьте CORS пустым; не отключайте защиту от публичного доступа.

Сохранённые бакет, префикс, владелец и регион определяют идентичность соединения. Для другого назначения выберите New connection. Edit → Reconnect заменяет учётные данные, сохраняя существующие ссылки на файлы.

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

Выберите хранилище по умолчанию и перенесите существующие файлы

Выбор назначения по умолчанию и миграция - отдельные действия.

Используйте S3 для новых групп

Выберите Make default в строке сохранённого соединения. Плагин проверит соединение и изменит хранилище по умолчанию только после успеха. Это относится к новым группам файлов; существующие группы и последующие ревизии сохраняют прежнее назначение до миграции.

Перенесите поддерживаемые существующие группы

Перед первой миграцией создайте совместную резервную копию базы, солей WordPress и файлов. Начните с тестовой среды или небольшой группы. Откройте Migrate в строке целевого S3; само открытие панели не копирует файлы.

Auto migration охватывает поддерживаемые группы вне выбранного назначения. Она не переносит автоматически посторонние файлы WordPress.

  1. Выберите Start migration. Плагин проверяет S3, подготавливает каждую группу, копирует и проверяет её, затем переключает ссылки.
  2. Оставьте страницу открытой. Pause останавливает работу после текущей группы; Resume migration продолжает сохранённый процесс. Если закрыли страницу, откройте её снова для возобновления следующих шагов.
  3. При ошибке группы проверьте сообщение и Advanced, устраните причину и возобновите процесс. Не повторяйте вслепую операцию, результат отправки которой неизвестен.
  4. После Migration completed проверьте обычное чтение ресурсов, редактирование, предпросмотр и доступ к файлам заказов. Для групп, созданных во время сканирования, может понадобиться ещё один проход.

Удаление строки не удаляет сохранённые файлы

При необходимости сначала переключите хранилище по умолчанию. Remove убирает соединение из списка, но существующие файлы и сохранённые учётные данные остаются доступными. Это не команда очистки объектов AWS.

Используйте общее хранилище для узлов WordPress

Общее назначение S3 может уменьшить зависимость от диска одного узла. Балансировщику по-прежнему нужна корректно организованная общая установка WordPress.

Требования для нескольких узлов

Для одной установки WordPress за балансировщиком обеспечьте все перечисленные условия:

  • Один согласованный узел записи SQL и общее состояние базы плагина.
  • Общий каталог uploads для файлов, которые остаются локальными, и сохранённых источников миграции.
  • Одинаковые исходные соли WordPress на каждом узле для чтения сохранённых учётных данных и зашифрованных файлов.
  • Отдельный закрытый временный каталог на каждом узле для операций передачи.
  • Согласованная конфигурация плагина и доступ к одному закрытому бакету S3 и версиям объектов.
  • Используйте стандартный wpdb с нативным mysqli и таблицами InnoDB. Модули маршрутизации базы, такие как HyperDB, не поддерживаются; балансировка здесь относится к уровню HTTP.

Обеспечьте восстановление и ротацию ключей

Сохраняйте базу, соли и версии файлов, на которые она ссылается, вместе.

Создавайте копии, переподключайтесь и проверяйте

Используйте Edit → Reconnect для замены учётных данных того же сохранённого соединения. Прежде чем отозвать старый ключ, проверьте чтение текущих и исторических файлов, включая другие сохранённые соединения, которые могут его использовать.

Оставьте версионирование S3 включённым и сохраняйте версии, на которые ссылается плагин. Не применяйте очистку lifecycle, удаляющую необходимые исторические версии. Проверьте совместное восстановление базы, солей и файлов.

Временные учётные данные истекают и требуют новых действующих ключей и токена; плагин не обновляет их автоматически. По мере роста магазина следите за использованием AWS и трафиком хостинга.