【问题标题】:Lambda function needs to use key for dependency in the code, where to store it?Lambda函数需要在代码中使用key作为依赖,存放在哪里?
【发布时间】:2016-04-04 19:16:46
【问题描述】:

我有一些这样的代码将在 Lambda 内部运行:

var Parse = require('parse').Parse;

Parse.initialize("Your App Id", "Your JavaScript Key");

var query = new Parse.Query(Parse.User);
query.find({
  success: function(users) {
    for (var i = 0; i < users.length; ++i) {
      console.log(users[i].get('username'));
    }
  }
});

代码需要 API 密钥才能工作。将密钥直接放入代码中是否安全,或者我应该将其存储在其他地方,如果可以,在哪里?我担心它是否需要存储在外部,这将导致开销,因为我每次都需要进行网络调用来检索它。

【问题讨论】:

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


    【解决方案1】:

    我不会把它放在代码中。一种廉价而优雅的解决方案是使用 AWS 提供的密钥管理服务。只需几行代码即可从 AWS KMS 检索您的密钥。每 10000 个请求的费用为 0.03 美元,每个密钥存储费用为每月 1 美元。

    AWS Key Management Service

    它也与 AWS Lambda 集成。

    编辑:请参阅此 SO 链接了解如何使用它:AWS Lambda: How to store secret to external API?

    【讨论】:

    • 谢谢!所以我的函数仍然必须在每次调用函数时对 KMS 进行网络调用,尽管它是正确的,还是被缓存了?
    • 我认为它没有被缓存。您可以查看我发布的链接。
    • 关于缓存,请检查此步骤:forums.aws.amazon.com/thread.jspa?messageID=686261 特别是来自亚马逊的此响应:“全局”代码(在您的处理程序之外)每个容器初始化一次(然后不再调用)。这是进行任何动态初始化的好地方,例如设置要在容器的整个生命周期(即跨多个请求)使用的全局变量。您可以从 Amazon S3、Amazon DynamoDB 或其他来源检索值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-26
    • 1970-01-01
    • 2019-10-15
    • 1970-01-01
    相关资源
    最近更新 更多