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.
npx claudepluginhub whchoi98/aws-skills-for-claude-code --plugin aws-skills-for-claude-codeThis skill uses the workspace's default tool permissions.
- "로그 그룹 보여줘" / "Show log groups"
Generates design tokens/docs from CSS/Tailwind/styled-components codebases, audits visual consistency across 10 dimensions, detects AI slop in UI.
Records polished WebM UI demo videos of web apps using Playwright with cursor overlay, natural pacing, and three-phase scripting. Activates for demo, walkthrough, screen recording, or tutorial requests.
Delivers idiomatic Kotlin patterns for null safety, immutability, sealed classes, coroutines, Flows, extensions, DSL builders, and Gradle DSL. Use when writing, reviewing, refactoring, or designing Kotlin code.
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)'
)