From aws-skills-for-claude-code
Monitors AWS with CloudWatch for logs, metrics, alarms and CloudTrail for API events using boto3 and CLI commands. Useful for log queries, metric data, alarm status, or audit trails.
How this skill is triggered — by the user, by Claude, or both
Slash command
/aws-skills-for-claude-code:aws-cloudwatchThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
- "로그 그룹 보여줘" / "Show log groups"
aws logs describe-log-groups --query 'logGroups[].{Name:logGroupName,Size:storedBytes}'
import boto3
logs = boto3.client('logs')
logs.describe_log_groups()
# Start query / 쿼리 시작
aws logs start-query \
--log-group-names "/aws/lambda/my-function" \
--start-time $(date -d '1 hour ago' +%s) \
--end-time $(date +%s) \
--query-string 'fields @timestamp, @message | filter @message like /ERROR/ | limit 50'
# Get results / 결과 조회
aws logs get-query-results --query-id <QUERY_ID>
import time
response = logs.start_query(
logGroupNames=['/aws/lambda/my-function'],
startTime=int(time.time()) - 3600,
endTime=int(time.time()),
queryString='fields @timestamp, @message | filter @message like /ERROR/ | limit 50'
)
query_id = response['queryId']
# Wait and get results / 대기 후 결과 조회
time.sleep(5)
logs.get_query_results(queryId=query_id)
cw = boto3.client('cloudwatch')
# EC2 CPU utilization / EC2 CPU 사용률
from datetime import datetime, timedelta
cw.get_metric_data(
MetricDataQueries=[{
'Id': 'cpu',
'MetricStat': {
'Metric': {
'Namespace': 'AWS/EC2',
'MetricName': 'CPUUtilization',
'Dimensions': [{'Name': 'InstanceId', 'Value': 'i-1234567890abcdef0'}]
},
'Period': 300,
'Stat': 'Average'
}
}],
StartTime=datetime.utcnow() - timedelta(hours=1),
EndTime=datetime.utcnow()
)
aws cloudwatch describe-alarms --state-value ALARM \
--query 'MetricAlarms[].{Name:AlarmName,State:StateValue,Reason:StateReason}'
cw.describe_alarms(StateValue='ALARM')
cw.describe_alarm_history(
AlarmName='my-alarm',
HistoryItemType='StateUpdate',
MaxRecords=10
)
aws cloudtrail lookup-events --max-results 10 \
--query 'Events[].{Time:EventTime,Event:EventName,User:Username}'
ct = boto3.client('cloudtrail', region_name='us-east-1')
ct.lookup_events(MaxResults=10)
# Filter by user / 사용자로 필터
ct.lookup_events(
LookupAttributes=[{'AttributeKey': 'Username', 'AttributeValue': 'admin'}],
MaxResults=20
)
# Query across event data stores / 이벤트 데이터 스토어 전체 쿼리
ct.start_query(QueryStatement="""
SELECT eventTime, eventName, userIdentity.arn
FROM <EVENT_DATA_STORE_ID>
WHERE eventTime > '2024-01-01'
ORDER BY eventTime DESC
LIMIT 100
""")
# Lambda errors in last hour / 지난 1시간 Lambda 에러
logs.start_query(
logGroupNames=['/aws/lambda/my-func'],
startTime=int(time.time()) - 3600,
endTime=int(time.time()),
queryString='stats count(*) as total, sum(@message like /ERROR/) as errors by bin(5m)'
)
npx claudepluginhub whchoi98/aws-skills-for-claude-code --plugin aws-skills-for-claude-codeBuilds, configures, debugs, and optimizes AWS observability using CloudWatch Logs Insights, Metrics, Alarms, Dashboards, EMF, X-Ray, CloudTrail, and ADOT for query syntax, alarm setup, tracing, and auditing.
Provides AWS CloudFormation templates for CloudWatch metrics, alarms, dashboards, log groups, anomaly detection, synthesized canaries, and Application Signals for production infrastructure monitoring.
Provides AWS observability via CloudWatch Logs Insights queries, Metrics & Alarms, Application Signals APM, CloudTrail auditing, and codebase observability gap analysis for Python, Java, JS/TS, Go, Ruby, C#. Useful for incident response, log analysis, alerting, performance monitoring, and security auditing.