Я бы порекомендовал использовать Lambda, запускать его примерно каждый час и отправлять данные в CloudWatch.
Этот код собирает все файловые системы EFS и отправляет их размер (в килобайтах) в Cloudwatch вместе с файломимя системы.Измените его в соответствии с вашими потребностями:
import json
import boto3
region = "us-east-1"
def push_efs_size_metric(region):
efs_name = []
efs = boto3.client('efs', region_name=region)
cw = boto3.client('cloudwatch', region_name=region)
efs_file_systems = efs.describe_file_systems()['FileSystems']
for fs in efs_file_systems:
efs_name.append(fs['Name'])
cw.put_metric_data(
Namespace="EFS Metrics",
MetricData=[
{
'MetricName': 'EFS Size',
'Dimensions': [
{
'Name': 'EFS_Name',
'Value': fs['Name']
}
],
'Value': fs['SizeInBytes']['Value']/1024,
'Unit': 'Kilobytes'
}
]
)
return efs_name
def cloudtrail_handler(event, context):
response = push_efs_size_metric(region)
print ({
'EFS Names' : response
})
Я также рекомендовал бы ознакомиться с приведенной ниже ссылкой для получения дополнительной информации о создании пользовательских метрик.
Ссылки