【问题标题】:AWS Lambda - Where to Keep the configurationAWS Lambda - 保存配置的位置
【发布时间】:2017-06-11 01:32:52
【问题描述】:

我的系统架构如下:-

SNS -> AWS Lambda -> Dynamo Db

因此,SNS 发布消息,AWS Lambda 函数是订阅者,然后 AWS Lambda 将数据推送到 Dynamo Db。在此,我正在对 AWS Lambda 中的消息进行一些转换。对于转换,我必须从某个地方获取一些规则。这些规则基本上是原始消息的字段到转换消息的字段之间的映射。

Eg. 

Say, Original Message looks like below:-
{"id": 1,
"name":"dsadas",
"house":"dsads dsadsa",
"speciality":"asjdsa"
}

and my mapping is something like:-
{"id":"id",
"house":"home",
"speciality":"area"
}

所以,基本上我是说 id 应该映射到 id、house to home 等等。

所以,我想将此映射保留在 Dynamo Db 或某些配置服务等某些地方。我不想直接将它保存在 aws lambda 代码中,因为我可能不得不更改。但是我认为将它保存在 Dynamo Db 中的延迟会非常昂贵,因为我会在每个消息请求上进行调用。因此,任何人都可以建议任何可用于保存这些配置的 aws 资源,这些配置非常快并且通常用于保存配置。

【问题讨论】:

  • 一个考虑:听起来你可能不完全理解 Lambda 频繁的容器重用的一个含义。声明一个全局变量(在处理程序之前,具体机制当然取决于语言)并且每次调用时,只有当变量未定义时,您才需要将配置加载到该变量中。如果变量已经有值,则不需要再次加载它,而且您经常会发现它已经填充,因为容器正在被重复使用。

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


【解决方案1】:

如果您需要完全灵活地修改映射,而不修改 Lambda 代码,则必须依靠 S3 或 Dynamodb 或任何其他存储服务来保留映射,这也会增加延迟和成本。

您还可以保留单独的 mapping.json(或 js)并将文件与您的 Lambda 代码一起上传。缺点是,您需要为每个 mapping.json 修改重新部署 Lambda 函数。

另一种选择是使用环境变量,仅保留属性映射键值对,并使用这些变量在 Lambda 内部构造映射模板。

您还可以将映射模板的 base64 编码用于环境变量并在 Lambda 中使用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-02
    • 1970-01-01
    • 1970-01-01
    • 2018-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多