使用 AWS Amplify 创建 process.env 个变量?

Creating process.env variables using AWS Amplify?

对于无服务器,我们可以通过创建这样的配置文件条目来添加 process.env 变量:

environment:
    STRIPE_SECRET_KEY: ${self:custom.secrets.stripeSecretKey} # Stripe secret API key

我们可以像这样在 lambda 函数中访问它:

const stripe = require('stripe')(process.env.STRIPE_SECRET_KEY);

我们如何使用 AWS Amplify 做到这一点?

您可以在 Amplify 环境配置中添加变量。 您还可以添加变量覆盖和 select 将使用它的分支。

文档: https://docs.aws.amazon.com/amplify/latest/userguide/environment-variables.html

目前无法在 lambda 中使用 Amplify 环境变量。

顺便说一句,你可以做的是在lambda中引用后端环境的名称。

如果您使用 amplify 创建 lambda,它会自动设置。

例如,您可以在python lambda中使用os.environ['ENV']获取您的后端环境名称。

在使用放大框架进行了一年多的开发之后,我发现您只能从前端构建过程中指定 ENV VARIABLE 形式。对于 lambda,这有点棘手。您可以添加一个条件 "IsProductionEnv",它将根据放大环境为该函数的 ENV 变量赋值。 对于生产我使用 "prod" 你可以使用任何你想要的。 转到您的 amplify/backend/function/{functionName} 文件夹。 应该有 {functionName}-cloudformation-template.json 个文件。 您需要向 "Conditions" 对象再添加一项:

"Conditions":{
  ...,
  "IsProductionEnv": {
      "Fn::Equals": [
        {
          "Ref": "env"
        },
        "prod"
      ]
    }
}

那么您需要在 "Resources.Properties.Environment.Variables" 处使用该条件:

       "Environment": {
          "Variables": {
            ...,
            "STRIPE_PK": {
              "Fn::If": [
                "IsProductionEnv",
                "pk_live_...",
                "pk_test_..."
              ]
            }
          }
        }

我用“dev”和“prod”放大了环境名称。它将处理您的部署并根据该功能的 env 管理您的 env 变量。