Crie uma configuração de alarme como um arquivo JSON.
Exemplo de arquivo JSON:
$ cat alarm_config.json
{
"AlarmName": "DailyEstimatedCharges",
"AlarmDescription": "This alarm would be triggered if the daily estimated charges exceeds 50$",
"ActionsEnabled": true,
"AlarmActions": [
"arn:aws:sns:<REGION>:<ACCOUNT_ID>:<SNS_TOPIC_NAME>"
],
"EvaluationPeriods": 1,
"DatapointsToAlarm": 1,
"Threshold": 50,
"ComparisonOperator": "GreaterThanOrEqualToThreshold",
"TreatMissingData": "breaching",
"Metrics": [{
"Id": "m1",
"MetricStat": {
"Metric": {
"Namespace": "AWS/Billing",
"MetricName": "EstimatedCharges",
"Dimensions": [{
"Name": "Currency",
"Value": "USD"
}]
},
"Period": 86400,
"Stat": "Maximum"
},
"ReturnData": false
},
{
"Id": "e1",
"Expression": "IF(RATE(m1)>0,RATE(m1)*86400,0)",
"Label": "DailyEstimatedCharges",
"ReturnData": true
}]
}
Observação: substitua os campos REGION, ACCOUNT_ID, e SNS_TOPIC_NAME pelos seus valores.
Chame a API PutMetricAlarm.
Exemplo de chamada de API:
aws cloudwatch put-metric-alarm --cli-input-json file://alarm_config.json
(Opcional) Para encontrar os dez maiores contribuintes do dia anterior para o valor Maximum DailyEstimatedCharges, execute a seguinte consulta:
$ cat top_contributors_query.json
{
"MetricDataQueries": [{
"Id": "e1",
"Expression": "SORT(RATE(SEARCH('{AWS/Billing,Currency,ServiceName} AWS/Billing ServiceName', 'Maximum', 86400))*86400, MAX, DESC, 10)",
"Label": "DailyEstimatedCharges",
"Period": 86400
}],
"ScanBy": "TimestampAscending"
}
$ aws cloudwatch get-metric-data --cli-input-json file://top_contributors_query.json --start-time `date -v -2d '+%Y-%m-%dT%H:%M:%SZ'` --end-time `date '+%Y-%m-%dT%H:%M:%SZ'` --region us-east-1
O formato DateTime suportado para StartTime e EndTime é 2020-01-01T00:00:00Z.
Importante: o comando anterior incorre em cobranças com base no número de métricas que cada chamada à API GetMetricData recupera. Para mais informações, consulte os preços do Amazon CloudWatch.