【问题标题】:AWS Lambda: How To Remove Environmental Variables from ConfigurationAWS Lambda:如何从配置中删除环境变量
【发布时间】:2018-12-12 05:12:28
【问题描述】:

我有一个 lambda 函数,它曾经使用 lambda 配置中设置的加密环境变量,但我不再需要它们。我尝试在 UI 中删除 env 变量,它不再显示但仍在日志中看到:

“在环境变量中找到凭据。”

我还尝试使用 update-function-code 命令而不传递不起作用的 env 变量。

有什么方法可以从我的 lambda 函数配置中删除加密的 env 变量?我想确保删除未使用/不需要的东西。

谢谢!

【问题讨论】:

  • 你在哪里看到消息"Found credentials in environment variables."?是您的代码记录的内容吗?
  • 听起来您有一个打印语句或正在打印此语句的东西。
  • Cloudtrail 日志,没有打印语句这样做。
  • 可能是缓存问题?您的 lambda 正在重用环境。尝试通过例如强制重新初始化环境/虚拟机。将执行时间增加/减少一秒并保存。
  • 不幸的是,我尝试通过 cli 更新功能代码和配置,但仍然看到 cloudtrail 中的日志。我确实有另一个具有加密环境变量的测试函数。日志是否有可能引用该函数变量,即使它没有被执行?

标签: amazon-web-services lambda aws-lambda


【解决方案1】:

我相信这是使用 boto 的 python lambdas 内部工作的标准输出。我的 python Lambda 都没有凭据,但我在所有 python lambda 日志中都有相同的消息。

【讨论】:

  • 谢谢,尼尔。我也认为这是标准输出,因为我已经清理了所有内容并且仍然收到日志消息。我正在继续前进,并将其归结为 Lambda/boto3 所做的事情。
【解决方案2】:

我知道这有点晚了,但这是我的理解。

“在环境变量中找到凭据”语句。与您配置的环境变量没有任何关系。显然,Lambda 有一组保留的环境变量,当您的代码尝试连接到其他 AWS 服务(如 S3、SNS 等)时,Lambda 会尝试从保留的环境变量中读取凭证以连接到其他服务并在进程将有关在何处找到凭据的语句记录到“stdout”

根据article,当您将记录器配置为 INFO 级别时,您的代码和 AWS 开发工具包的所有 .info() 语句都将记录到“stdout”,从而最终出现在 CloudWatch 日志中。尝试将记录器级别设置为警告并观察日志。

【讨论】:

    【解决方案3】:

    日志消息来自“botocore”记录器。

    这将有效地抑制来自boto3 的该消息和其他消息:

    logging.getLogger("boto3").setLevel(logging.WARNING)
    logging.getLogger("botocore").setLevel(logging.WARNING)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-17
      • 1970-01-01
      • 1970-01-01
      • 2018-07-07
      • 2020-01-08
      • 1970-01-01
      • 2017-08-01
      • 2017-10-31
      相关资源
      最近更新 更多