【问题标题】:Is there a way to modify environment variable in AWS Lambda?有没有办法在 AWS Lambda 中修改环境变量?
【发布时间】:2020-02-13 23:51:15
【问题描述】:

我写了一个 lambda 函数来做一些处理。

默认设置了 1 个环境变量。

有什么方法可以在每次运行后更改它吗?

【问题讨论】:

  • 您可以手动或使用脚本以编程方式更改您的环境变量,但存储动态数据不是环境变量的用途,您通常使用某种数据库。您希望在每次运行时更改它的确切用例是什么?
  • @giuseppedeponte 但是将数据库用于单个变量是个好主意吗?例如。假设我正在维护一个计数器 (i =0 ) 我的 lambda 函数运行了多少次。在我的 nodejs lambda 脚本中,我想做 i++,以便我的 Env 变量增加 1。任何链接到我如何更改 AWS lambda 环境变量?
  • 某种数据库...可能只是一个文件,如 JSON 或 CSV 或只是文本文件。
  • 在您的示例中“使用计数器检查 lamda 运行的时间”,您可以在代码中使用普通计数器,但 在 lambda 处理程序之外。这允许您在 same lambda 实例上的 lambda 调用之间保持各种状态(例如:进程内缓存等)。如果您需要保留不同 lambda 实例的状态,请使用数据库。
  • 您可以存储参数,它可以通过不同的 lamda 函数访问,您还可以将存储参数作为 ENV 处理,它也可以在不同的 lamda 下工作。在事件处理程序中存储外部可能会起作用,但一旦您更新 lamda 函数,它将丢失。你也不会打扰 DB

标签: node.js amazon-web-services aws-lambda environment-variables


【解决方案1】:

环境变量用于将设置传递给您的 Lambda。它们不是保持状态的正确工具。

DynamoDB 是专门为此目的而制作的无服务器数据库。创建一个只存储一个值的表很容易。

free tier 内,您可以获得 25GB 空间,并有机会每秒进行多达 25 个写入/读取请求。

【讨论】:

    【解决方案2】:

    如果您对 DB 不满意,按照评论中的建议,您可以使用 AWS store parameter,它将回答您的此查询。

    如何在 AWS Lambda 中修改环境变量?

    您可以从store parameter 使用您的环境变量,它还将在不同的 lambda 函数之间保持状态,句柄外的变量可能会按照@Jan 的建议工作,但是如果您更新 lambda 函数呢?

    因此,例如,流程将是

    If store-paramter == true;
     #do the job,after job done
     #update store-paramter value
     store-paramter=false
    else
     #play with with value
    

    一旦您生成 secret in secretsmanager ,AWS 将弹出一个不同语言的完整代码,只需复制代码并将其粘贴到该示例的 lambda 中,但您应该为 lambda 分配权限。

    此外,您还探索了一个方便的 npm 包aws-param-store

    BTW 应用程序不应该更新 ENV,但要处理您的用例,您可以遵循。

    您也可以从头开始查看article 如何在 lambda 中设置和使用密钥。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-08
      • 2010-12-01
      • 2017-12-17
      • 2021-04-17
      • 2022-12-18
      • 2010-09-17
      • 1970-01-01
      • 2017-05-09
      相关资源
      最近更新 更多