Tornando as variáveis de ambiente acessíveis aos runtimes do lado do servidor - AWS Amplify Hospedagem

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Tornando as variáveis de ambiente acessíveis aos runtimes do lado do servidor

O Amplify Hosting suporta a adição de variáveis de ambiente às compilações do seu aplicativo, definindo-as na configuração do projeto no console do Amplify. No entanto, um componente do servidor Next.js não tem acesso a essas variáveis de ambiente por padrão. Esse comportamento é intencional para proteger todos os segredos armazenados nas variáveis de ambiente que seu aplicativo usa durante a fase de compilação.

Para tornar variáveis de ambiente específicas acessíveis ao Next.js, é possível modificar o arquivo de especificação de compilação do Amplify para defini-las nos arquivos de ambiente que o Next.js reconhece. Isso permite que o Amplify carregue essas variáveis de ambiente antes de compilar o aplicativo. O exemplo de especificação de compilação a seguir demonstra como adicionar variáveis de ambiente na seção de comandos de compilação.

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

Neste exemplo, a seção de comandos de compilação inclui dois comandos que gravam variáveis de ambiente no arquivo .env.production antes da execução da compilação do aplicativo. O Amplify Hosting permite que seu aplicativo acesse essas variáveis quando o aplicativo recebe tráfego.

A linha a seguir da seção de comandos de compilação no exemplo anterior demonstra como pegar uma variável específica do ambiente de compilação e adicioná-la ao arquivo .env.production.

- env | grep -e DB_HOST -e DB_USER -e DB_PASS >> .env.production

Se as variáveis existirem em seu ambiente de compilação, o arquivo .env.production conterá as seguintes variáveis de ambiente.

DB_HOST=localhost DB_USER=myuser DB_PASS=mypassword

A linha a seguir da seção de comandos de compilação no exemplo anterior demonstra como adicionar uma variável de ambiente com um prefixo específico ao arquivo .env.production. Neste exemplo, todas as variáveis com o prefixo NEXT_PUBLIC_ são adicionadas.

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

Se existirem várias variáveis com o prefixo NEXT_PUBLIC_ no ambiente de compilação, o .env.production arquivo terá uma aparência semelhante à seguinte.

NEXT_PUBLIC_ANALYTICS_ID=abcdefghijk NEXT_PUBLIC_GRAPHQL_ENDPOINT=uowelalsmlsadf NEXT_PUBLIC_SEARCH_KEY=asdfiojslf NEXT_PUBLIC_SEARCH_ENDPOINT=https://search-url

SSRvariáveis de ambiente para monorepos

Se você estiver implantando um SSR aplicativo em um monorepo e quiser tornar variáveis de ambiente específicas acessíveis ao Next.js, deverá prefixar o .env.production arquivo com a raiz do aplicativo. O exemplo a seguir de especificação de compilação para uma aplicação Next.js com um monorepo Nx demonstra como adicionar variáveis de ambiente na seção de comandos de compilação.

version: 1 applications: - frontend: phases: preBuild: commands: - npm ci build: commands: - env | grep -e DB_HOST -e DB_USER -e DB_PASS >> 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

As linhas a seguir da seção de comandos de compilação no exemplo anterior demonstram como pegar variáveis específicas do ambiente de compilação e adicioná-la ao arquivo .env.production para uma aplicação em um monorepo com a raiz apps/app da aplicação.

- env | grep -e DB_HOST -e DB_USER -e DB_PASS >> apps/app/.env.production - env | grep -e NEXT_PUBLIC_ >> apps/app/.env.production