Web 应用程序 (Elastic Beanstalk + Flask) 从 DynamoDB 读取的数据超出预期

Web application (Elastic Beanstalk + Flask) reading from DynamoDB more than expected

总的来说,我是网络开发的新手。我使用查询 dynamodb table 的弹性 beanstalk 设置了一个烧瓶应用程序。当我在本地 运行 应用程序时,我可以看到 ConsumedReadCapacityUnits 飙升至 ~128 然后回落。据推测,这代表了 table 的一个查询。但是,当我将该应用程序作为应用程序部署到弹性 beanstalk 时,ConsumedReadCapacityUnits 会飙升至 400-800 ConsumedReadCapacityUnits 并保持在那里,即使我认为没有人在加载该应用程序也是如此。为什么会这样? elastic beanstalk 是否不断查询 table?有没有办法让它不?

代码: https://github.com/kimberlymcm/flaskapp/

函数查询 table

import boto3  
from boto3.dynamodb.conditions import Key  

dynamo_client = boto3.client('dynamodb', region_name='us-west-2')  

def get_data(items=["pm1", "pm25", "pm10"]):  
    cols_to_extract = f"device_id, #time_taken"  
    for item in items:  
        cols_to_extract += f", payload.{item}"  
    response = dynamo_client.query(  
        ProjectionExpression=cols_to_extract,  
        ExpressionAttributeNames={"#time_taken": "time"},  
        KeyConditionExpression="device_id = :enviro",  
        ExpressionAttributeValues={":enviro" : {"S" : "enviro"}},  
        TableName='iot_table')  
    return response['Items']  

此图的左侧是当应用程序 运行 仅在 Elastic Beanstalk 中并且我没有加载应用程序时。右边是在本地运行ning的时候。

这是自动负载平衡器。我刚刚使用了 Elastic Beanstalk 的默认配置,其中显然包含一个负载均衡器。我猜负载平衡器健康检查正在向数据库发送请求(?)。当我删除负载平衡器时,流量又回到了预期水平。

我也检查了 route 53 控制台,但我没有设置任何健康检查。