<span id="cross-service-references" />

# Перекрёстные ссылки

Ссылки позволяют одному сервису или аддону читать значения другого без копирования учётных данных. Они хранят секреты в одном месте и автоматически их вращают.

<span id="syntax" />

## Синтаксис

```
${{<name>.<KEY>}}
```

- `<name>` — имя целевого сервиса или аддона (то, что показано в дашборде и используется в `lizard add -n`).
- `<KEY>` — ключ в объединённом окружении цели.

Используйте их везде, где принимается значение — чаще всего в секрете:

```bash
lizard secrets set DATABASE_URL='${{postgres.DATABASE_URL}}' --service api
```

<span id="how-they-resolve" />

## Как они разрешаются

- Ссылки разрешаются **во время деплоя** против объединённого окружения цели.
- Они хранятся по **ID**, поэтому переименование цели позже не ломает ссылку.
- Ссылка на **отсутствующую** цель или ключ разрешается в **пустую строку** — она *не* проваливает деплой.
- Ошибку выдают только **циклические** ссылки.

> Поскольку отсутствующий ключ молча становится пустым, всегда проверяйте, что потребитель действительно получил значение после настройки ссылки:
> ```bash
> lizard ssh --service api -- env | grep DATABASE_URL
> ```

Если ссылка не отображается так, как ожидалось, см. [Устранение неполадок → секрет или ссылка не отображается](https://lizard.build/ru/docs/variables/troubleshooting/reference-not-applied).

<span id="common-patterns" />

## Типичные сценарии

**Подключить аддон к нескольким сервисам** — привяжите на каждом потребителе, чтобы вращение распространилось везде:

```bash
lizard secrets set REDIS_URL='${{redis.REDIS_URL}}' --service api
lizard secrets set REDIS_URL='${{redis.REDIS_URL}}' --service worker
```

**Ссылаться на значение другого сервиса** — например, делиться вычисленным URL или токеном:

```bash
lizard secrets set UPSTREAM_URL='${{api.LIZARD_PUBLIC_DOMAIN}}' --service web
```

**Ссылаться на второй аддон того же типа** — используйте его сгенерированное имя:

```bash
lizard secrets set CACHE_URL='${{redis-winter-otter.REDIS_URL}}' --service api
```

<span id="why-not-just-use---global" />

## Почему не просто `--global`?

Размещение общего DSN в области проекта (`--global`) раскрывает его для *каждого* сервиса, включая те, которые ему не нужны. Ссылки дают тот же single-source-of-truth с вращением, сохраняя каждый секрет в области видимости только тех сервисов, которые его потребляют. См. [Область видимости секретов](https://lizard.build/ru/docs/variables#scoping).

<span id="see-also" />

## См. также

- [Переменные и секреты](https://lizard.build/ru/docs/variables) — области и приоритеты.
- [`lizard secrets`](https://lizard.build/ru/docs/cli/secrets) — полный справочник команд.
