architect/_archive/_s3-nomenclature/SETUP_INSTRUCTIONS.md

Инструкция по настройке публичного доступа к S3

Цель: Открыть публичный доступ к папке nomenclature/ для обмена данными между системами


Метод 1: Через панель Beget (РЕКОМЕНДУЕТСЯ)

Шаг 1: Вход в панель

  1. Перейти: https://cp.beget.com/
  2. Войти в аккаунт (kondurov)
  3. Найти раздел: "S3-хранилище" или "Объектное хранилище"

Шаг 2: Открыть bucket

  1. В списке bucket'ов найти: fe2c1d30dc11-s3-0kt
  2. Кликнуть на название для открытия

Шаг 3: Настроить Bucket Policy

  1. Найти вкладку "Политики" или "Bucket Policy" или "Доступ"
  2. Нажать "Добавить политику" или "Редактировать"
  3. Вставить следующий JSON:
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "PublicReadNomenclature",
      "Effect": "Allow",
      "Principal": "*",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::fe2c1d30dc11-s3-0kt/nomenclature/*"
    }
  ]
}
  1. Нажать "Сохранить" или "Применить"

Шаг 4: Проверить доступ

Через браузер:
Открыть URL:

https://s3.ru1.storage.beget.cloud/fe2c1d30dc11-s3-0kt/nomenclature/images/premier_01001.jpg

Через терминал:

curl -I https://s3.0kt.ru/fe2c1d30dc11-s3-0kt/nomenclature/images/premier_01001.jpg

Ожидаемый результат: HTTP 200 OK


Метод 2: Через s3cmd (альтернативный)

Если панель Beget не позволяет настроить Bucket Policy, можно попробовать через s3cmd:

Установка s3cmd

apt-get install s3cmd

Конфигурация

Создать файл ~/.s3cfg:

[default]
access_key = F1AIVIQI0DE3PJGIWQC1
secret_key = iRDHW0PJsqTb070EDUdOpCQuKwtw7C9POX0KGsmZ
host_base = s3.ru1.storage.beget.cloud
host_bucket = fe2c1d30dc11-s3-0kt.s3.ru1.storage.beget.cloud
use_https = True

Установка публичного доступа

# Для всей папки nomenclature/
s3cmd setacl --acl-public --recursive s3://fe2c1d30dc11-s3-0kt/nomenclature/

# Или для конкретной подпапки
s3cmd setacl --acl-public --recursive s3://fe2c1d30dc11-s3-0kt/nomenclature/images/

Проверка

s3cmd info s3://fe2c1d30dc11-s3-0kt/nomenclature/images/premier_01001.jpg

Метод 3: Через поддержку Beget

Если оба метода не работают:

  1. Открыть тикет в поддержку Beget
  2. Указать:
    ```
    Тема: Настройка публичного доступа к S3 bucket

Bucket: fe2c1d30dc11-s3-0kt
Папка: nomenclature/

Необходимо открыть публичный доступ на чтение (GetObject)
для всех файлов в папке nomenclature/*

Bucket Policy:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": "",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::fe2c1d30dc11-s3-0kt/nomenclature/
"
}
]
}
```


После настройки

URL для использования

Базовые URL:

# Через Beget
https://s3.ru1.storage.beget.cloud/fe2c1d30dc11-s3-0kt/nomenclature/

# Через кастомный домен
https://s3.0kt.ru/fe2c1d30dc11-s3-0kt/nomenclature/

Примеры файлов:

# Изображения
https://s3.0kt.ru/fe2c1d30dc11-s3-0kt/nomenclature/images/premier_01001.jpg
https://s3.0kt.ru/fe2c1d30dc11-s3-0kt/nomenclature/images/images_index.xlsx

# Каталоги
https://s3.0kt.ru/fe2c1d30dc11-s3-0kt/nomenclature/catalogs/products_full.xlsx

# 1С обмен
https://s3.0kt.ru/fe2c1d30dc11-s3-0kt/nomenclature/1c_exchange/import/products.xml

Использование в коде

HTML:

<img src="https://s3.0kt.ru/fe2c1d30dc11-s3-0kt/nomenclature/images/premier_01001.jpg" alt="Product">

PHP:

$s3_base = 'https://s3.0kt.ru/fe2c1d30dc11-s3-0kt/nomenclature/';
$image = $s3_base . 'images/' . $filename;

JavaScript:

const s3Base = 'https://s3.0kt.ru/fe2c1d30dc11-s3-0kt/nomenclature/';
const imageUrl = s3Base + 'images/' + filename;

1С:

АдресФайла = "https://s3.0kt.ru/fe2c1d30dc11-s3-0kt/nomenclature/1c_exchange/import/products.xml";
ФайлДанных = ПолучитьИнтернетФайл(АдресФайла);

Устранение неполадок

Ошибка 403 (Access Denied)

Причина: Публичный доступ не настроен

Решение:
1. Проверить Bucket Policy в панели Beget
2. Убедиться, что Resource содержит правильный путь
3. Проверить, что Effect = "Allow", а не "Deny"

Ошибка 404 (Not Found)

Причина: Файл не существует или неправильный URL

Решение:
1. Проверить список файлов:
bash s3cmd ls s3://fe2c1d30dc11-s3-0kt/nomenclature/images/
2. Убедиться в правильности пути в URL

Ошибка SSL/TLS

Причина: Проблемы с сертификатом домена s3.0kt.ru

Решение:
1. Использовать прямой Beget URL:
https://s3.ru1.storage.beget.cloud/...
2. Дождаться распространения DNS (до 48 часов)


Контакты поддержки

Beget:
- Email: support@beget.ru
- Телефон: 8 (800) 700-06-08
- Панель: https://cp.beget.com/ → Тикеты


Создано: 2025-11-18
Обновлено: 2025-11-18