首页 > 解决方案 > 我想通过 lambda python 找出 AWS RDS 的总 RAM 大小。我尝试了代码并得到了空集。还有其他方法可以找到它吗?

问题描述

import json
import boto3,datetime

def lambda_handler(event, context):
    cloudwatch = boto3.client('cloudwatch',region_name=AWS_REGION)
    response = cloudwatch.get_metric_data(
    MetricDataQueries=[
    {
        'Id': 'memory',
        'MetricStat': {
        'Metric': {
                 'Namespace': 'AWS/RDS',
                 'MetricName': 'TotalMemory',
        'Dimensions': [
                {
                    "Name": "DBInstanceIdentifier",
                    "Value": "mydb"  
                }]
         },
         'Period': 30,
         'Stat': 'Average',
          }
       }
         ],
     StartTime=(datetime.datetime.now() - datetime.timedelta(seconds=300)).timestamp(),
     EndTime=datetime.datetime.now().timestamp()
     )

     print(response)

结果如下:

{'MetricDataResults':[{'Id':'memory','Label':'TotalMemory','Timestamps':[],'Values':[],'StatusCode':'Complete'}]

标签: listaws-lambda

解决方案


如果您正在寻找配置的 vCPU/内存,那么我们似乎需要调用DescribeDBInstancesAPI 来获取DBInstanceClass,其中包含来自此处的硬件信息

您需要使用https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/MonitoringOverview.html#rds-metrics中的 CloudWatch 指标名称之一,似乎我们可以使用检索当前可用的内存指标FreeableMemory. _ 在您的示例代码中使用此指标名称时,我能够从 RDS 的监控控制台中获取数据(以字节为单位)。


推荐阅读