30 вересня 2026 р. · 5 хв читання

Як зробити бакет Cloudflare R2 публічним

Бакети R2 за замовчуванням приватні. Ніхто не прочитає файл без підписаних запитів до API, доки ви явно не дасте бакету публічну адресу. Зробити це можна двома способами, і їх можна поєднувати.

Спосіб 1: підключіть власний домен (рекомендовано)

Власний домен віддає бакет через мережу Cloudflare з кешуванням і дає змогу згодом додати правила WAF чи Cloudflare Access. Домен має бути зоною в тому самому обліковому записі Cloudflare, що й бакет (підходить як повне налаштування, так і часткове через CNAME).

  1. У панелі керування Cloudflare перейдіть до R2 Object Storage і виберіть свій бакет.
  2. Відкрийте Settings, знайдіть Custom Domains і виберіть Add.
  3. Введіть піддомен, наприклад files.example.com, і виберіть Continue.
  4. Перевірте DNS-запис, який створить Cloudflare, і виберіть Connect Domain.

Протягом кількох хвилин статус зміниться з Initializing на Active. Після цього об’єкт із ключем 2026/09/report.pdf доступний за адресою https://files.example.com/2026/09/report.pdf.

Спосіб 2: увімкніть Public Development URL на r2.dev

Для швидкої перевірки R2 може дати бакету адресу, якою керує Cloudflare:

  1. Відкрийте Settings бакета.
  2. У розділі Public Development URL виберіть Enable.
  3. Введіть allow для підтвердження й виберіть Allow.

Тепер бакет доступний за адресою https://pub-<id>.r2.dev/<key>. Cloudflare обмежує частоту запитів до цієї URL-адреси й зазначає, що вона призначена для розробки, тож перейдіть на власний домен, перш ніж широко ділитися посиланнями. Спрямувати власний CNAME на адресу r2.dev не можна.

Що відкриває публічний доступ, а що ні

  • Лише читання. Публічний доступ дає змогу будь-кому читати об’єкти, ключ яких відомий. Для вивантаження й видалення, як і раніше, потрібні облікові дані API.
  • Без списку файлів. Якщо відкрити корінь домену, вміст бакета не відобразиться. Випадкові назви об’єктів роблять посилання важкими для вгадування.
  • Увесь бакет. Доступ задається для бакета, а не для папки. Тримайте приватні файли в окремому бакеті.
  • Кешування. За замовчуванням Cloudflare кешує лише файли з певними розширеннями. Додайте правило кешування, якщо хочете кешувати файли всіх типів.

Як виправити Access Denied у посиланнях R2

Якщо посилання повертає Access Denied, 401 або 403, перевірте по черзі:

  1. Посилання використовує ваш власний домен або адресу r2.dev, а не <account-id>.r2.cloudflarestorage.com. Цей хост є API S3 і завжди вимагає підпису.
  2. Власний домен має статус Active, а доступ до бакета в його налаштуваннях має значення Allowed.
  3. Ключ в URL-адресі точно збігається з об’єктом, включно з папками й регістром літер.

Поширені запитання

Чи безпечно робити бакет R2 публічним?

Це безпечно для файлів, якими ви й так збираєтеся ділитися. Будь-хто з посиланням може прочитати цей файл, але не може переглянути список вмісту бакета, вивантажувати чи видаляти. Тримайте приватні дані в іншому бакеті.

Чи коштує публічний бакет R2 дорожче?

Ні. R2 не бере плати за вихідний трафік, тож публічні завантаження не збільшують витрат на трафік. Читання рахуються як операції класу B, для яких є безплатний місячний ліміт.

Чи можна зробити публічною лише одну папку?

Не за допомогою публічного доступу R2, який діє на весь бакет. Використайте окремий бакет або залиште бакет приватним і діліться підписаними URL-адресами.