

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Rendere le variabili di ambiente accessibili ai runtime lato server
<a name="ssr-environment-variables"></a>

Amplify Hosting supporta l'aggiunta di variabili di ambiente alle build dell'applicazione impostandole nella configurazione del progetto nella console Amplify.

Tuttavia, un componente del server Next.js non ha accesso a tali variabili di ambiente per impostazione predefinita. Questo comportamento è intenzionale per proteggere eventuali segreti archiviati nelle variabili di ambiente utilizzate dall'applicazione durante la fase di compilazione.

Per rendere accessibili variabili di ambiente specifiche a Next.js, puoi modificare il file delle specifiche della build Amplify per impostarle nei file di ambiente riconosciuti da Next.js. Ciò consente ad Amplify di caricare queste variabili di ambiente prima di creare l'applicazione.

**Importante**  
 Ti consigliamo vivamente di non memorizzare credenziali, segreti o informazioni sensibili nelle variabili di ambiente poiché qualsiasi utente con accesso agli artefatti della distribuzione può leggerli.   
[Per consentire alla funzione di calcolo SSR di accedere alle AWS risorse, consigliamo di utilizzare i ruoli IAM.](amplify-SSR-compute-role.md)

Il seguente esempio di specifica di build dimostra come aggiungere variabili di ambiente nella sezione dei comandi di compilazione.

```
version: 1
frontend:
  phases:
    preBuild:
      commands:
        - npm ci
    build:
      commands:
        - env | grep -e API_BASE_URL >> .env.production
        - env | grep -e NEXT_PUBLIC_ >> .env.production
        - npm run build
  artifacts:
    baseDirectory: .next
    files:
      - '**/*'
  cache:
    paths:
      - node_modules/**/*
      - .next/cache/**/*
```

In questo esempio, la sezione dei comandi di compilazione include due comandi che scrivono le variabili di ambiente nel `.env.production` file prima dell'esecuzione della build dell'applicazione. Amplify Hosting consente all'applicazione di accedere a queste variabili quando l'applicazione riceve traffico.

La riga seguente della sezione dei comandi di compilazione dell'esempio precedente mostra come prendere una variabile specifica dall'ambiente di compilazione e aggiungerla al file. `.env.production`

```
- env | grep -e API_BASE_URL -e APP_ENV >> .env.production
```

Se le variabili esistono nell'ambiente di compilazione, il `.env.production` file conterrà le seguenti variabili di ambiente.

```
API_BASE_URL=localhost
APP_ENV=dev
```

La riga seguente della sezione dei comandi di compilazione dell'esempio precedente mostra come aggiungere una variabile di ambiente con un prefisso specifico al file. `.env.production` In questo esempio, vengono aggiunte tutte le variabili con il prefisso`NEXT_PUBLIC_`.

```
- env | grep -e NEXT_PUBLIC_ >> .env.production
```

Se nell'ambiente di compilazione esistono più variabili con il `NEXT_PUBLIC_` prefisso, il `.env.production` file avrà un aspetto simile al seguente.

```
NEXT_PUBLIC_ANALYTICS_ID=abcdefghijk
NEXT_PUBLIC_GRAPHQL_ENDPOINT=uowelalsmlsadf
NEXT_PUBLIC_FEATURE_FLAG=true
```

## Variabili di ambiente SSR per monorepos
<a name="ssr-environment-variables-monorepo"></a>

Se state distribuendo un'app SSR in un monorepo e desiderate rendere accessibili variabili di ambiente specifiche a Next.js, dovete anteporre al file il prefisso root dell'applicazione. `.env.production` L'esempio seguente di specifica di build per un'app Next.js all'interno di un monorepo Nx mostra come aggiungere variabili di ambiente nella sezione dei comandi di compilazione.

```
version: 1
applications:
  - frontend:
      phases:
        preBuild:
          commands:
            - npm ci
        build:
          commands:
            - env | grep -e API_BASE_URL -e APP_ENV >> apps/app/.env.production
            - env | grep -e NEXT_PUBLIC_ >> apps/app/.env.production
            - npx nx build app
      artifacts:
        baseDirectory: dist/apps/app/.next
        files:
          - '**/*'
      cache:
        paths:
          - node_modules/**/*
      buildPath: /
    appRoot: apps/app
```

Le righe seguenti della sezione build commands dell'esempio precedente mostrano come prendere variabili specifiche dall'ambiente di compilazione e aggiungerle al `.env.production` file per un'app in un monorepo con la radice dell'applicazione. `apps/app`

```
- env | grep -e API_BASE_URL -e APP_ENV >> apps/app/.env.production
- env | grep -e NEXT_PUBLIC_ >> apps/app/.env.production
```