<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Автоматизация serverless-деплоя TypeScript на Yandex Cloud Functions с cron: DIY-гайд]]></title><description><![CDATA[<p dir="auto"><img src="/assets/uploads/files/2d/bf/29/1773918114896-generated_1773918077161-resized.webp" alt="Обложка: Как автоматизировать серверлесс-деплой TypeScript-скриптов на Yandex Cloud Functions с cron: DIY-гайд для пет-проектов" class=" img-fluid img-markdown" /></p>
<p dir="auto">Задолбался каждый раз вручную деплоить TypeScript-скрипты на Yandex Cloud Functions? Этот гайд покажет, как настроить полную автоматизацию для пет-проектов. С cron-триггерами функции будут запускаться по расписанию сами, без лишних телодвижений. Получишь готовый пайплайн: от кода до деплоя одной командой.</p>
<p dir="auto">Yandex Cloud Functions - идеальный сервак для задач вроде парсинга данных или ИИ-апишек по расписанию. Экономит бабки на VM, масштабируется мгновенно. Подходит для ботов, мониторинга или ежедневных репоров - никаких серверов не трогай.</p>
<h2>Подготовка проекта: TypeScript + конфиг для деплоя</h2>
<p dir="auto">Сначала соберем TypeScript-проект, который компилится в JS для Cloud Functions. Node.js не жрет TS нативно, так что компилируем вручную или через скрипты. Это базовый шаг, без него деплой не взлетит. Представь пет-проект: скрипт парсит Reddit-новости и шлет в Telegram раз в час - типичный кейс.</p>
<p dir="auto">Установи Node.js, создай папку проекта и настрой tsconfig.json. Добавь зависимости для деплоя через готовый CLI - он проще serverless framework. Никаких yc cli не нужно, все через API. Логично перейти к списку шагов: от init до первой сборки.</p>
<ul>
<li>Создай проект: <code>mkdir ts-fn &amp;&amp; cd ts-fn &amp;&amp; npm init -y</code>.</li>
<li>Установи TS: <code>npm i typescript @types/node --save-dev</code>.</li>
<li>Сгенерируй tsconfig: <code>npx tsc --init --target ES2021 --moduleResolution Node --outDir build</code>.</li>
<li>Добавь deploy-CLI: <code>npm i yandex-cloud-deploy-fn -D</code> или используй npx.</li>
</ul>
<p dir="auto"><strong>tsconfig.json пример:</strong></p>
<pre><code class="language-json">{
  "compilerOptions": {
    "target": "ES2021",
    "module": "commonjs",
    "outDir": "./build",
    "strict": true
  }
}
</code></pre>
<p dir="auto"><em>Нюанс:</em> Для больших архивов (&gt;3.5Mb) включи Object Storage в конфиге - код грузит через бакет, быстрее API.</p>
<h2>Настройка cron-триггера: расписание без гемора</h2>
<p dir="auto">Cron в Yandex Cloud Functions - это триггер, который будит функцию по расписанию в формате cron-выражения. Поля: минуты, часы, день месяца, месяц, день недели. Специальные символы вроде <code>*</code> (все значения), <code>?</code> (любое) или <code>/</code> (шаг) упрощают жизнь. Пример: <code>0 10 * * ? *</code> - каждый день в 10:00.</p>
<p dir="auto">Для пет-проекта подойдет запуск раз в день для бэкапа данных или проверки метрик. Триггер создается в консоли или через CLI после деплоя функции. Нет нужды в отдельных серваках - все serverless. Переходим к таблице примеров и списку фич.</p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>Поле</th>
<th>Диапазон</th>
<th>Специальные символы</th>
<th>Пример</th>
</tr>
</thead>
<tbody>
<tr>
<td>Minutes</td>
<td>0-59</td>
<td>*, /, -</td>
<td>0/15 (каждые 15 мин)</td>
</tr>
<tr>
<td>Hours</td>
<td>0-23</td>
<td>*, /</td>
<td>10 (в 10 утра)</td>
</tr>
<tr>
<td>Day of month</td>
<td>1-31</td>
<td>*, ?, L</td>
<td>10 (10-е число)</td>
</tr>
<tr>
<td>Month</td>
<td>1-12</td>
<td>*, JAN-DEC</td>
<td>* (каждый месяц)</td>
</tr>
<tr>
<td>Day of week</td>
<td>1-7</td>
<td>*, ?, #</td>
<td>? (любой день)</td>
</tr>
</tbody>
</table>
<ul>
<li><code>0 * * * * ?</code> - каждую минуту (для тестов).</li>
<li><code>0 0 * ? * *</code> - каждый час.</li>
<li><code>0 15 10 ? * *</code> - в 10:15 ежедневно.</li>
</ul>
<p dir="auto"><strong>Важно:</strong> Время по UTC+0, для Москвы добавь +3 часа в выражение. <em>Проверь timezone в консоли Yandex.</em></p>
<h2>Деплой одной командой: CLI-магия без serverless</h2>
<p dir="auto">Забудь про громоздкий serverless framework - используй yandex-cloud-deploy-fn. Это легкий CLI: пакует TS в zip, компилит, шлет в Cloud Functions. Поддержка env-переменных, тегов и больших файлов через S3-совместимый storage. Команда <code>npx deploy-fn</code> - и версия готова за 25 сек.</p>
<p dir="auto">Пример конфига deploy-fn.config.js: укажи имя функции, runtime node18, env. Для тегов - интерактивный режим <code>npx deploy-fn-tag</code>. Идеально для CI/CD в пет-проектах. Список шагов и таблица отличий от аналогов.</p>
<pre><code class="language-javascript">module.exports = {
  functions: {
    my-fn: {
      runtime: 'nodejs18',
      entrypoint: 'build/index.handler',
      environment: { NODE_ENV: 'production' }
    }
  }
};
</code></pre>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>Фича</th>
<th>deploy-fn</th>
<th>serverless + plugin</th>
</tr>
</thead>
<tbody>
<tr>
<td>yc cli</td>
<td>Не нужен</td>
<td>Обязателен</td>
</tr>
<tr>
<td>Большие архивы</td>
<td>Через Object Storage</td>
<td>Ограничено</td>
</tr>
<tr>
<td>Логи</td>
<td>Чистые</td>
<td>Мусор про unknown fn</td>
</tr>
<tr>
<td>Теги</td>
<td>Интерактив</td>
<td>Нет</td>
</tr>
</tbody>
</table>
<ul>
<li>Запусти <code>npx deploy-fn</code> - увидишь версию и размер.</li>
<li>Для тегов: <code>npx deploy-fn-tag</code> - выбери вручную.</li>
<li>Автоматизируй в package.json: <code>"deploy": "tsc &amp;&amp; npx deploy-fn"</code>.</li>
</ul>
<p dir="auto"><em>Совет:</em> Тестируй локально через <code>func-local</code> из Yandex SDK.</p>
<h2>Пример пет-проекта: парсер с cron и ИИ</h2>
<p dir="auto">Возьми реальный кейс - скрипт на TS, который раз в день парсит новости с Reddit, анализирует через YandexGPT API и шлет отчет в чат. Функция: fetch RSS, промпт в ИИ, пост в Telegram. Деплой автоматизирован, cron будит - и пет-проект живет сам.</p>
<p dir="auto">Handler в index.ts: асинхронная функция с env-ключам. Компилируем, деплоим, настраиваем триггер <code>0 9 * * ? *</code> (утром). Масштаб: от 1 вызова до тысяч - платишь копейки. Логично разобрать код и шаги запуска.</p>
<pre><code class="language-typescript">import { Context } from 'yandex-cloud-functions';

export async function handler(event: any, context: Context) {
  // Парсинг, ИИ-промпт, отправка
  console.log('Cron job started');
}
</code></pre>
<ul>
<li>Настрой IAM: сервисный аккаунт с правами на Functions и Storage.</li>
<li>Деплой: <code>npm run build &amp;&amp; npx deploy-fn</code>.</li>
<li>Триггер: в консоли укажи cron и привяжи к функции.</li>
<li>Мониторинг: логи в консоли Yandex, метрики вызовов.</li>
</ul>
<p dir="auto"><strong>Промпт для ИИ-примера:</strong> “Проанализируй топ-5 новостей по ИИ с Reddit: ключевые тренды, риски, возможности для dev-ов”.</p>
<h2>Что взлетит в твоем следующему релизе</h2>
<p dir="auto">Автоматизация деплоя TS на Yandex Cloud Functions с cron превращает пет-проект в живой продукт за час. Осталось докрутить CI/CD через GitHub Actions или добавить message queues для сложных цепочек. Подумай над мультирегиональным репликацией - для отказоустойчивости без доплат.</p>
]]></description><link>https://forum.exlends.ru/topic/1758/avtomatizaciya-serverless-deploya-typescript-na-yandex-cloud-functions-s-cron-diy-gajd</link><generator>RSS for Node</generator><lastBuildDate>Sat, 17 Oct 2026 02:56:11 GMT</lastBuildDate><atom:link href="https://forum.exlends.ru/topic/1758.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 19 Mar 2026 11:01:55 GMT</pubDate><ttl>60</ttl></channel></rss>