AWS Lambda从DynamoDB加载内容,以S3格式显示在HTML中

问题描述 投票:0回答:2

我正在从S3加载一个HTML页面,它将包含来自数据库的动态信息。我已经找到了关于如何解决这个问题的一些信息,并且想知道这是否最好用lambda模板化或将页面拉入lambda函数并动态更新HTML。我一直在lambda函数中使用python。先感谢您!

python amazon-web-services amazon-s3 aws-lambda
2个回答
1
投票

为此,在Lambda中使用模板机制(使用Lambda捆绑和部署)更有效,除非您需要更频繁地更改模板(可以从S3加载模板)。

这样,它将减少Lambda执行的时间,从而降低成本,您只需要执行DynamoDB查询即可获取数据。

通常,对于NodeJS,我使用Lodash templates。您应该能够找到一个简单的Python模板引擎,它允许您分离HTML模板,您可以在其中绑定从DynanmoDB检索的数据。


0
投票

这应该指向正确的方向:

要使用lambda函数更新存储在s3存储桶中的html文件,请使用boto3库。使用get()读取文件并使用put()来编写:http://boto3.readthedocs.io/en/latest/reference/services/s3.html#S3.Object.get http://boto3.readthedocs.io/en/latest/reference/services/s3.html#S3.Object.put

import boto3

s3 = boto3.resource('s3')

obj = s3.Object(bucket, key)
html = obj.get()['Body']

现在访问dynamoDB以获取更新html文件https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GettingStarted.Python.04.html的数据

import boto3

dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('name')
... query() or get_item(), etc

然后将更改写入s3对象:

obj.put(Body=html)

最后,什么会触发lambda函数?对我来说,对dynamoDB进行更改会触发lambda是有意义的,lambda可以在aws控制台中配置。

免责声明:我没有对此进行任何测试,代码片段中可能存在错误,遗漏等。

© www.soinside.com 2019 - 2024. All rights reserved.