aws-ops — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited aws-ops (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Common AWS CLI operations for infrastructure management.
Use this skill when:
# Who am I?
aws sts get-caller-identity
# Current region
aws configure get region# Use specific profile
export AWS_PROFILE=production
# Or per-command
aws s3 ls --profile production
# Switch region
export AWS_DEFAULT_REGION=us-west-2aws configure list-profiles# All instances with key info
aws ec2 describe-instances \
--query 'Reservations[].Instances[].[InstanceId,State.Name,InstanceType,PrivateIpAddress,Tags[?Key==`Name`].Value|[0]]' \
--output table
# Running only
aws ec2 describe-instances \
--filters "Name=instance-state-name,Values=running" \
--query 'Reservations[].Instances[].[InstanceId,InstanceType,PrivateIpAddress,Tags[?Key==`Name`].Value|[0]]' \
--output table
# By tag
aws ec2 describe-instances \
--filters "Name=tag:Environment,Values=production"# Start instance
aws ec2 start-instances --instance-ids i-1234567890abcdef0
# Stop instance
aws ec2 stop-instances --instance-ids i-1234567890abcdef0
# Reboot instance
aws ec2 reboot-instances --instance-ids i-1234567890abcdef0
# Get console output (for debugging)
aws ec2 get-console-output --instance-id i-1234567890abcdef0# Full details
aws ec2 describe-instances --instance-ids i-1234567890abcdef0
# Security groups
aws ec2 describe-instances --instance-ids i-1234567890abcdef0 \
--query 'Reservations[].Instances[].SecurityGroups'# List buckets
aws s3 ls
# List objects in bucket
aws s3 ls s3://bucket-name/
# With sizes (human readable)
aws s3 ls s3://bucket-name/ --human-readable --summarize
# Recursive
aws s3 ls s3://bucket-name/ --recursive# Upload
aws s3 cp file.txt s3://bucket-name/
# Download
aws s3 cp s3://bucket-name/file.txt ./
# Sync directory
aws s3 sync ./local-dir s3://bucket-name/prefix/
# Sync with delete
aws s3 sync ./local-dir s3://bucket-name/prefix/ --delete# Bucket location
aws s3api get-bucket-location --bucket bucket-name
# Bucket size (can be slow for large buckets)
aws s3 ls s3://bucket-name --recursive --summarize | tail -2aws eks list-clusters# Add cluster to kubeconfig
aws eks update-kubeconfig --name cluster-name --region us-east-1
# With specific profile
aws eks update-kubeconfig --name cluster-name --profile productionaws eks describe-cluster --name cluster-nameaws logs describe-log-groups \
--query 'logGroups[].logGroupName'# Tail logs (requires awslogs or use CloudWatch Insights)
aws logs tail /aws/lambda/function-name --follow
# Get recent logs
aws logs get-log-events \
--log-group-name /aws/lambda/function-name \
--log-stream-name 'stream-name' \
--limit 50# Start query
aws logs start-query \
--log-group-name /aws/lambda/function-name \
--start-time $(date -d '1 hour ago' +%s) \
--end-time $(date +%s) \
--query-string 'fields @timestamp, @message | filter @message like /ERROR/ | limit 20'
# Get results (use query-id from above)
aws logs get-query-results --query-id "query-id-here"aws sts get-caller-identity# Users
aws iam list-users --query 'Users[].[UserName,CreateDate]' --output table
# Roles
aws iam list-roles --query 'Roles[].[RoleName,CreateDate]' --output table# Simulate policy
aws iam simulate-principal-policy \
--policy-source-arn arn:aws:iam::123456789:user/myuser \
--action-names s3:GetObject \
--resource-arns arn:aws:s3:::bucket-name/*aws lambda list-functions \
--query 'Functions[].[FunctionName,Runtime,LastModified]' \
--output table# Invoke
aws lambda invoke \
--function-name my-function \
--payload '{"key": "value"}' \
response.json
# View response
cat response.jsonaws logs tail /aws/lambda/my-function --followaws rds describe-db-instances \
--query 'DBInstances[].[DBInstanceIdentifier,DBInstanceStatus,Engine,DBInstanceClass]' \
--output tableaws rds describe-db-instances \
--db-instance-identifier my-database# Month-to-date costs
aws ce get-cost-and-usage \
--time-period Start=$(date -d "$(date +%Y-%m-01)" +%Y-%m-%d),End=$(date +%Y-%m-%d) \
--granularity MONTHLY \
--metrics BlendedCost \
--query 'ResultsByTime[].Total.BlendedCost'aws ce get-cost-and-usage \
--time-period Start=$(date -d "$(date +%Y-%m-01)" +%Y-%m-%d),End=$(date +%Y-%m-%d) \
--granularity MONTHLY \
--metrics BlendedCost \
--group-by Type=DIMENSION,Key=SERVICE \
--query 'ResultsByTime[].Groups[].[Keys[0],Metrics.BlendedCost.Amount]' \
--output table| Issue | Check | Command |
|---|---|---|
| Access Denied | IAM permissions | aws sts get-caller-identity |
| Resource not found | Region mismatch | aws configure get region |
| Rate limiting | API throttling | Add --debug flag |
| Credential issues | Profile/env vars | aws configure list |
# Verbose output
aws s3 ls --debug 2>&1 | head -50# EC2: List running instances
aws ec2 describe-instances --filters "Name=instance-state-name,Values=running" --query 'Reservations[].Instances[].[InstanceId,Tags[?Key==`Name`].Value|[0]]' --output table
# S3: Bucket sizes
aws s3api list-buckets --query 'Buckets[].Name' --output text | xargs -I {} sh -c 'echo -n "{}: "; aws s3 ls s3://{} --recursive --summarize 2>/dev/null | tail -1'
# Lambda: Recent errors
aws logs tail /aws/lambda/FUNCTION --since 1h --filter-pattern "ERROR"
# Costs: This month
aws ce get-cost-and-usage --time-period Start=$(date +%Y-%m-01),End=$(date +%Y-%m-%d) --granularity MONTHLY --metrics BlendedCost~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.