我有一个带有SSR的Next.js应用程序,它依赖于环境变量。当我将应用程序部署到AWS Amplify时,会创建2个Lambda函数。我在Amplify中设置了环境变量,然而,这些变量并没有在构建过程中创建的Lambda函数中设置。如果我在函数上手动设置环境变量,它们将在下一次构建时被删除。有什么想法吗?
qnyhuwrf1#
Amplify团队已经在github中更新了这个问题:https://github.com/aws-amplify/amplify-console/issues/1987以下是他们建议的方法:1.在Amplify Console中添加所需的环境变量(步骤)1.使用您在Amplify Console中添加的环境变量更新(或创建)next.config.js文件。例如,如果您在上面的步骤1)中在控制台中创建了一个名为MY_ENV_VAR的环境变量,那么您需要添加以下内容:
module.exports = { env: { MY_ENV_VAR: process.env.MY_ENV_VAR } };
1.现在,在您的下一次构建之后,您将能够在SSR lambda表达式中引用您的环境变量(process.env.MY_ENV_VAR)!
izkcnapc2#
Amplify Hosting通过在Amplify控制台的项目配置中设置环境变量,支持将环境变量添加到应用程序的构建中。但是,Next.js服务器组件默认情况下不能访问这些环境变量。要使Next.js可以访问特定的环境变量,您可以修改Amplify构建规范文件,以在Next.js识别的环境文件中设置它们。- env | grep -e MY_ENV_VAR >> .env.production你需要在你的构建设置下设置这个,看起来像这样:
- env | grep -e MY_ENV_VAR >> .env.production
version: 1 frontend: phases: preBuild: commands: - npm ci build: commands: - env | grep -e MY_ENV_VAR >> .env.production - env | grep -e NEXT_PUBLIC_ >> .env.production - npm run build artifacts: baseDirectory: .next files: - '**/*' cache: paths: - node_modules/**/* - .next/cache/**/*
请按照此处的文档操作:Making environment variables accessible to server-side runtimes另外,请记住在Amplify控制台中执行add the environment variables
2条答案
按热度按时间qnyhuwrf1#
Amplify团队已经在github中更新了这个问题:https://github.com/aws-amplify/amplify-console/issues/1987
以下是他们建议的方法:
1.在Amplify Console中添加所需的环境变量(步骤)
1.使用您在Amplify Console中添加的环境变量更新(或创建)next.config.js文件。例如,如果您在上面的步骤1)中在控制台中创建了一个名为MY_ENV_VAR的环境变量,那么您需要添加以下内容:
1.现在,在您的下一次构建之后,您将能够在SSR lambda表达式中引用您的环境变量(process.env.MY_ENV_VAR)!
izkcnapc2#
Amplify Hosting通过在Amplify控制台的项目配置中设置环境变量,支持将环境变量添加到应用程序的构建中。但是,Next.js服务器组件默认情况下不能访问这些环境变量。
要使Next.js可以访问特定的环境变量,您可以修改Amplify构建规范文件,以在Next.js识别的环境文件中设置它们。
- env | grep -e MY_ENV_VAR >> .env.production
你需要在你的构建设置下设置这个,看起来像这样:
请按照此处的文档操作:Making environment variables accessible to server-side runtimes
另外,请记住在Amplify控制台中执行add the environment variables