Англійська для Supabase Edge Functions

Вивчіть англійську лексику для обговорення Edge Functions Supabase: час виконання Deno, холодні запуски, ключі ролей служб і виклик функцій з клієнта.

Перенесення логіки у Edge Function змінює як місце виконання коду, так і його безпеку, а словник, який відокремлює звичайний маршрут сервера від Edge Function, є саме тим, що потрібно для перегляду безпеки або продуктивності.

Ключовий словник

** Edge function ** — функція на стороні сервера, розгорнута для запуску на інфраструктурі, заснованій на Deno, розподіленій поруч з користувачами, використовується в Supabase для логіки, яка повинна відбутися на стороні сервера, але не повинна бути вбудована безпосередньо в клієнтський код, наприклад, виклик стороннього API з секретним ключем. “Цей ключ API не може жити в клієнтовому пакеті — замість цього перемістіть виклик до краєвої функції, щоб ключ залишався на стороні сервера і користувачі завжди викликали тільки нашу функцію, ніколи не сторонній API безпосередньо.”

** Холодний запуск ** — додана затримка на першому виклику краєвої функції після періоду бездіяльності, під час ініціалізації часу виконання, на відміну від гарячого виклику, який повторно використовує вже запущений екземпляр.

  • “Іноді повільна реакція не є вада в логіці функції — це холодний запуск. Функція не викликалась протягом певного часу, тому цей конкретний запит оплачує вартість ініціалізації, яку теплий виклик не мав би. ”*

** Ключ ролі служби ** — привілейований ключ API, який обходить безпеку рівня рядка, використовується всередині межових функцій для операцій, які потребують підвищеного доступу до бази даних, і ніколи не буде показано клієнту, оскільки він надає необмежений доступ.

  • “Ця функція використовує ключ ролі служби для вставлення до таблиці, що є нормально — вона виконується на стороні сервера. Але той самий ключ, який з’являється в будь-якому місці в клієнтському коді, означає, що будь-хто може повністю обійти нашу безпеку на рівні рядків. ”*

** Виклик ** — одиничне виконання функції краю, яке запускається за допомогою HTTP- запиту, webhook бази даних або безпосередньо з виклику клієнтської бібліотеки Supabase, кожен з яких створює власні журнали і контекст виконання. “Ми не можемо відтворити цю помилку з журналів, тому що ми не розглядаємо правильний виклик — було три виклики цієї функції в цьому часовому вікні, і помилка є лише у другому.”

Deno runtime — середовище виконання JavaScript і TypeScript, на якому Supabase Edge Functions насправді працює, що впливає на доступні API і імпорт модулів, оскільки це не Node.js і не підтримує спеціальні пакунки Node без сумісних шипів. “Цей імпорт зазнав невдачі, оскільки це пакунок тільки для Node, а функції edge виконуються у середовищі виконання Deno — знайдіть сумісну з Deno альтернативу або перевірте, чи працює конкретний пакунок через рівень сумісності npm Deno.”

Звичайні фрази

  • «Чи повинна ця логіка бути в крапковій функції, або може клієнт викликати базу даних безпосередньо?»
  • Чи є ця затримка холодним стартом, чи ж сама функція насправді повільна?»
  • «Чи використовується ключ ролі обслуговування тільки всередині функції краю, або він потрапив у клієнта де-небудь?»
  • «Які ж твори ми читаємо в цій книзі?»
  • Чи є цей пакет сумісний з часом виконання Deno, або це тільки Node?

Приклади висловлювань

Обґрунтування виправлення безпеки: “Ми перенесли виклик постачальника платіжних послуг до функції краю, тому що ключ API раніше був у коді на стороні клієнта — будь-хто міг відкрити інструменти розробника і витягнути його. Тепер клієнт просто викликає нашу функцію, і ключ ніколи не залишає сервера.”

Пояснення скарг на швидкість:

  • “Перший запит після тихого періоду повільний через холодний запуск, а не ваду — час виконання функції має бути ініціалізовано. Якщо ця кінцева точка потребує постійної низької затримки, нам потрібно буде дивитися на те, щоб вона була теплою, а не на оптимізацію самого функціонального коду. ”*

Позначити небезпечну експозицію під час перегляду: “Цей клієнтський код використовує ключ ролі служби безпосередньо, що повністю обходить безпеку рівня рядка для тих, хто його має — цей ключ належить лише до межової функції, і ніколи не надсилається до переглядача.”

Професійні поради

  • Пересунути будь- яку логіку, яка потребує секрету, наприклад, ключ API, до ** краєвої функції **, а не до клієнта — ця функція діє як межа, яка зберігає секрет на стороні сервера, але все одно дозволяє клієнту викликати поведінку.
  • Пояснити явно ** затримку холодного запуску **, коли співробітник команди повідомляє про « іноді повільність » — відрізняти холодний запуск від справжньої вади продуктивності у логіці функції змінює те, що потрібно виправити.
  • Розглядати ** ключ ролі служби ** як один з найчутливіших секретів у системі — він повністю обходить безпеку рівня рядка, і його ніколи не слід з’ являти у коді на стороні клієнта або у контролі версій.
  • Перевіряйте конкретне ** викликання ** у журналах за датою або ідентифікатором запиту, замість того, щоб припускати, що останній запис журналу є відповідним — крапкові функції можуть викликатися часто, і неправильне розуміння того, який виклик ви зневаджуєте, марнує час.
  • Перевірити, чи працює пакунок у Deno runtime перед тим, як залежати від нього у межах функції edge — Пакунки, специфічні для вузла, можуть зазнавати невдач, які не можна побачити лише з команди import.

Практичні вправи

  1. Пояснити, чому секретний ключ API слід викликати з функції краю, а не з клієнта.
  2. Описати, що таке холодний запуск і як він відрізняється від звичайного виклику.
  3. Напишіть речення, у якому пояснюється, чому ключ ролі служби ніколи не має з’ являтися у коді на стороні клієнта.

Назва походить від слова «навигація» (англ. navigation)

Погляньмо правді в очі – технічний жаргон може бути складним, навіть якщо ви розумієте концепцію. Коли мова йде про Supabase Edge Functions з розробниками, ключова річ - ясність. Цей пост зосереджено на створенні цієї ясності за допомогою прицільного словника, особливо навколо Deno, холодних запусків, ключів ролі служби і виклику функцій з клієнта. Ми зосередимося на фразування, яке ви насправді використовуватимете в розмовах і документації.

Одним з найбільших викликів при обговоренні Edge Functions є точне передання нюансів продуктивності. Фрази на кшталт «холодий запуск» — хоча технічно коректні — можуть звучати тривожно для когось нового в цій технології. Більш доступним способом описати це є « початковий час виконання, коли функція не була викликана нещодавно ». Замість простого вказування затримки функції, ми прагнемо до описової мови: « Функція зазнала 2- секундної затримки під час першого виклику », що набагато ясніше, ніж « велика затримка ». Аналогічно, посилання на сам час виконання Deno — часто просто « Deno » — може здатися абстрактним. Описуючи його як «двигун JavaScript, що забезпечує функцію Edge» забезпечує негайний контекст для тих, хто менш знайомий з технологіями бекенду.

Іншою областю, де важлива точність, є обговорення безпеки і контролю доступу. Термін «ключ ролі сервісу» не відразу інтуїтивно зрозумілий. Пояснення, що цей ключ «надає функціональний дозвіл на доступ до певних ресурсів Supabase — таких як бази даних або контейнери для зберігання — на основі визначеного обсягу» значно покращує розуміння, особливо для розробників, що переходять від традиційних безсерверних архітектур. Важливо вийти за рамки простого надання назви ключу і натомість зосередитися на тому, що дозволяє робити функції.

Нарешті, при обговоренні виклику — цього процесу запуску функції — нам потрібна чітка термінологія. Фрази на кшталт «виклик функції з клієнта» або «виклик функції» є стандартними, але активне використання таких термінів, як «кінцева точка» (з посиланням на URL, через який функція запускається) і вказівка типу запиту («запит GET») додає важливі деталі.

// Example: Deno code invoking a Supabase Edge Function – illustrating endpoint access
import { readSupabaseClient } from ‘@supabase/edge-runtime’

const supabase = await readSupabaseClient({
  supabaseUrl: 'YOUR_SUPABASE_URL',
  serviceRoleKey: 'YOUR_SERVICE_ROLE_KEY'
})

async function fetchData(itemId) {
  const { data, error } = await supabase.from('your_table').select('*')
    .eq('id', itemId) // Example query using a service role key
    .single();
  if (error) {
    console.error('Error fetching data:', error);
  }
  return data;
}

// Call the function
fetchData(123)
  .then(result => console.log('Data:', result))
  .catch(err => console.error("An unexpected error occurred", err));

Сфокусувавшись на ясній, описовій мові і використовуючи точну термінологію, пов’ язану з Deno, холодними запусками, ключами ролі сервісу і викликом, ви можете значно поліпшити комунікацію і співпрацю при обговоренні Supabase Edge Functions - особливо з колегами, для яких англійська не є рідною мовою. Метою є не просто переклад технічних термінів, а створення спільного розуміння того, як ці функції працюють в рамках більш широкої екосистеми Supabase.

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

Про що ця стаття "Англійська для Supabase Edge Functions"?

Вивчіть англійську лексику для обговорення Edge Functions Supabase: час виконання Deno, холодні запуски, ключі ролей служб і виклик функцій з клієнта.

Чи безкоштовна ця стаття?

Так. Усі статті на CoderSlingo, включно з цією, доступні безкоштовно без реєстрації.

Скільки часу займає читання "Англійська для Supabase Edge Functions"?

Приблизно 8 min.