【问题标题】:Creating process.env variables using AWS Amplify?使用 AWS Amplify 创建 process.env 变量?
【发布时间】:2019-12-18 04:09:04
【问题描述】:

使用无服务器,我们可以通过创建如下配置文件条目来添加 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 做到这一点?

【问题讨论】:

  • 您找到解决方案了吗?我正在尝试相同的方法,因为我需要为本地和上传的环境设置不同的 hostsUi 路径
  • 看起来我们可以像这样手动添加它们,尽管这超出了 Amplify 工作流程:docs.aws.amazon.com/lambda/latest/dg/env_variables.html

标签: node.js amazon-web-services aws-lambda aws-amplify aws-sdk-js


【解决方案1】:

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

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

【讨论】:

  • 这些在process.env 中不可用。
  • 它实际上可以工作@devth - 但它需要重新部署堆栈
  • 我没有让它工作。在联系 AWS Premium 支持后,我说它不起作用,所以我将键作为配置直接放入 lambda 函数中,并使用 process.env.ENV === "production" ? PRODUCTION_KEY : STAGING_KEY 管理值
  • 当我创建一个放大函数并在那里有环境变量时,我似乎无法创建一个让这些变量通过的函数。您是说添加环境变量后创建的任何 lambda 函数,会将这些环境变量传递给该函数吗?
【解决方案2】:

在使用 amplify 框架进行一年多的开发后,我发现您只能从前端构建过程中指定 ENV VARIABLE 形式。对于 lambdas 这有点棘手。您可以添加一个条件"IsProductionEnv",它将根据放大 env 为该函数的 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 变量。

【讨论】:

    【解决方案3】:

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

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

    如果您使用放大创建 lambda,它将自动设置。

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

    【讨论】:

    • 这似乎是正确的答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-09
    • 2018-10-02
    • 1970-01-01
    • 2021-02-24
    • 2019-09-08
    • 2018-12-16
    • 1970-01-01
    相关资源
    最近更新 更多