我正在从S3加载一个HTML页面,它将包含来自数据库的动态信息。我已经找到了关于如何解决这个问题的一些信息,并且想知道这是否最好用lambda模板化或将页面拉入lambda函数并动态更新HTML。我一直在lambda函数中使用python。先感谢您!
为此,在Lambda中使用模板机制(使用Lambda捆绑和部署)更有效,除非您需要更频繁地更改模板(可以从S3加载模板)。
这样,它将减少Lambda执行的时间,从而降低成本,您只需要执行DynamoDB查询即可获取数据。
通常,对于NodeJS,我使用Lodash templates。您应该能够找到一个简单的Python模板引擎,它允许您分离HTML模板,您可以在其中绑定从DynanmoDB检索的数据。
这应该指向正确的方向:
要使用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控制台中配置。
免责声明:我没有对此进行任何测试,代码片段中可能存在错误,遗漏等。