SuperAPI AI Directory

asset-inventory

Deployment & operations

View repository

Updated 10-24 02:21

About this skill

Asset Inventory

Maintain comprehensive IT asset inventory using automated discovery, AWS Config rules, cloud asset discovery scripts, CMDB integration, and tagging enforcement for compliance and operational visibility.

Asset Categories and Schema

asset_categories:
  compute:
    cloud:
      - EC2 instances / Azure VMs / GCE instances
      - Lambda functions / Azure Functions / Cloud Functions
      - ECS/EKS clusters and tasks
      - Container images in registries
    on_premise:
      - Physical servers
      - Virtual machines (VMware, Hyper-V)

storage: - S3 buckets / Azure Storage / GCS buckets - EBS volumes / Managed Disks / Persistent Disks - RDS instances / Azure SQL / Cloud SQL - DynamoDB tables / Cosmos DB / Firestore - EFS / Azure Files / Filestore

network: - VPCs / VNets / VPC Networks - Load balancers (ALB, NLB, Azure LB, GCP LB) - DNS zones and records - VPN gateways and connections - CDN distributions

security: - IAM users, roles, and policies - KMS keys / Key Vault keys - Certificates (ACM, Key Vault, Certificate Manager) - Security groups / NSGs / Firewall rules - WAF configurations

applications: - SaaS subscriptions - Licensed software - Custom applications - APIs and integrations

endpoints: - Laptops and desktops - Mobile devices - Printers and peripherals

asset_record_schema: required_fields: asset_id: "Unique identifier (auto-generated)" name: "Human-readable name" type: "Category from above taxonomy" provider: "AWS / Azure / GCP / On-Premise / SaaS" account_or_subscription: "Cloud account ID" region: "Deployment region/location" owner: "Team or individual responsible" data_classification: "Public / Internal / Confidential / Restricted" environment: "Production / Staging / Development / Sandbox" status: "Active / Decommissioning / Retired" created_date: "When the asset was provisioned" last_seen: "Last automated discovery timestamp"

optional_fields: cost_center: "For cost allocation" compliance_scope: "SOC2 / HIPAA / PCI / None" backup_policy: "Backup schedule reference" dr_tier: "Critical / Essential / Standard / Non-essential" expiration_date: "For time-limited resources" tags: "Key-value pairs from cloud provider" dependencies: "Upstream and downstream services"


## AWS Resource Discovery Script

```bash
#!/usr/bin/env bash
# aws-asset-discovery.sh - Discover and inventory all AWS resources

OUTPUT_DIR="./asset-inventory/aws/$(date +%Y-%m-%d)"
mkdir -p "$OUTPUT_DIR"
ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text)

echo "=== AWS Asset Discovery for Account $ACCOUNT_ID ==="

# EC2 Instances
echo "--- EC2 Instances ---"
aws ec2 describe-instances \
  --query 'Reservations[*].Instances[*].{
    InstanceId:InstanceId,
    Type:InstanceType,
    State:State.Name,
    AZ:Placement.AvailabilityZone,
    VpcId:VpcId,
    PrivateIP:PrivateIpAddress,
    PublicIP:PublicIpAddress,
    LaunchTime:LaunchTime,
    Name:Tags[?Key==`Name`].Value|[0],
    Owner:Tags[?Key==`Owner`].Value|[0],
    Environment:Tags[?Key==`Environment`].Value|[0]
  }' --output json | jq 'flatten' > "$OUTPUT_DIR/ec2-instances.json"

# RDS Databases
echo "--- RDS Instances ---"
aws rds describe-db-instances \
  --query 'DBInstances[*].{
    DBInstanceId:DBInstanceIdentifier,
    Engine:Engine,
    EngineVersion:EngineVersion,
    Class:DBInstanceClass,
    Status:DBInstanceStatus,
    MultiAZ:MultiAZ,
    Encrypted:StorageEncrypted,
    Endpoint:Endpoint.Address,
    BackupRetention:BackupRetentionPeriod
  }' --output json > "$OUTPUT_DIR/rds-instances.json"

# S3 Buckets
echo "--- S3 Buckets ---"
aws s3api list-buckets --query 'Buckets[*].{Name:Name,Created:CreationDate}' --output json | \
  jq -c '.[]' | while read -r bucket; do
    name=$(echo "$bucket" | jq -r '.Name')
    region=$(aws s3api get-bucket-location --bucket "$name" --query 'LocationConstraint' --output text 2>/dev/null)
    encryption=$(aws s3api get-bucket-encryption --bucket "$name" 2>/dev/null | jq -r '.ServerSideEncryptionConfiguration.Rules[0].ApplyServerSideEncryptionByDefault.SSEAlgorithm' 2>/dev/null)
    versioning=$(aws s3api get-bucket-versioning --bucket "$name" --query 'Status' --output text 2>/dev/null)
    echo "{\"Name\":\"$name\",\"Region\":\"${region:-us-east-1}\",\"Encryption\":\"${encryption:-none}\",\"Versioning\":\"${versioning:-Disabled}\"}"
  done | jq -s '.' > "$OUTPUT_DIR/s3-buckets.json"

# Lambda Functions
echo "--- Lambda Functions ---"
aws lambda list-functions \
  --query 'Functions[*].{
    Name:FunctionName,
    Runtime:Runtime,
    MemorySize:MemorySize,
    Timeout:Timeout,
    LastModified:LastModified,
    CodeSize:CodeSize
  }' --output json > "$OUTPUT_DIR/lambda-functions.json"

# VPCs and Security Groups
echo "--- VPCs ---"
aws ec2 describe-vpcs \
  --query 'Vpcs[*].{
    VpcId:VpcId,
    Cid