Skip to content

AWS Outposts

Service Overview and Purpose

AWS Outposts is a fully managed service that extends AWS infrastructure, services, APIs, and tools to customer premises. It provides a truly consistent hybrid experience by bringing the same AWS hardware, software, APIs, and tools to virtually any datacenter, co-location space, or on-premises facility.

Core Purpose: - Extend AWS cloud to on-premises environments - Provide consistent hybrid cloud experience - Enable data residency and local processing requirements - Support low-latency applications and local data processing - Maintain compliance with data sovereignty regulations

Key Features and Capabilities

Core Features

  • AWS Native Services: Run AWS services locally on-premises
  • Consistent Experience: Same APIs, tools, and services as AWS Cloud
  • Hybrid Connectivity: Seamless integration with AWS Regions
  • Local Processing: Process data locally to meet latency requirements
  • Managed Service: Fully managed by AWS including installation and maintenance
  • Scalable: Multiple rack configurations available
  • Security: Same security standards as AWS Cloud

Outposts Configurations

Outposts Rack

  • 42U Rack: Full rack deployment
  • Compute Capacity: Up to 64 vCPUs and 512 GB RAM per server
  • Storage: Local NVMe SSD storage
  • Networking: 1G, 10G, and 100G networking options
  • Power: Standard datacenter power requirements

Outposts Servers

  • 1U and 2U Servers: Smaller footprint deployments
  • Edge Locations: Ideal for edge computing scenarios
  • Limited Capacity: Smaller compute and storage capacity
  • Remote Locations: Support for disconnected or remote sites

Available AWS Services on Outposts

  • Amazon EC2: Virtual machine instances
  • Amazon EBS: Block storage volumes
  • Amazon S3: Object storage (Outposts only)
  • Amazon ECS: Container orchestration
  • Amazon EKS: Kubernetes service
  • Amazon RDS: Managed database service (MySQL, PostgreSQL)
  • Amazon EMR: Big data processing
  • AWS Lambda: Serverless computing (planned)

Use Cases and Scenarios

Primary Use Cases

  1. Data Residency Requirements
  2. Government and regulatory compliance
  3. Financial services data requirements
  4. Healthcare data sovereignty
  5. Geographic data restrictions

  6. Low Latency Applications

  7. Real-time gaming and media processing
  8. Industrial IoT and automation
  9. Autonomous vehicle processing
  10. High-frequency trading systems

  11. Local Data Processing

  12. Edge computing scenarios
  13. Data preprocessing before cloud transfer
  14. Real-time analytics and decision making
  15. Bandwidth-constrained environments

  16. Hybrid Cloud Architectures

  17. Gradual cloud migration strategies
  18. Burst to cloud scenarios
  19. Application modernization
  20. Multi-cloud strategies

  21. Disconnected Environments

  22. Remote locations with intermittent connectivity
  23. Military and defense applications
  24. Maritime and aerospace scenarios
  25. Disaster recovery scenarios

Detailed Scenarios

Manufacturing IoT Platform

Factory Floor Sensors β†’ Outposts (Local Processing) β†’ AWS Region (Analytics)
        ↓                        ↓                          ↓
   Real-time Data β†’ Edge Analytics & Alerts β†’ Historical Analysis
        ↓                        ↓                          ↓
  Machine Control β†’ Immediate Response β†’ Predictive Maintenance

Financial Trading System

Market Data Feeds β†’ Outposts (Low-latency Processing) β†’ AWS Region (Compliance)
        ↓                        ↓                           ↓
Real-time Prices β†’ Risk Calculations β†’ Regulatory Reporting
        ↓                        ↓                           ↓
Trading Decisions β†’ Order Execution β†’ Audit and Storage

Healthcare Data Processing

Medical Devices β†’ Outposts (HIPAA Processing) β†’ AWS Region (Research)
        ↓                     ↓                        ↓
Patient Data β†’ Local Analytics β†’ De-identified Analytics
        ↓                     ↓                        ↓
Immediate Care β†’ Privacy Compliance β†’ Medical Research

Retail Edge Computing

Store Systems β†’ Outposts (Local Processing) β†’ AWS Region (Central Analytics)
      ↓                    ↓                        ↓
POS & Inventory β†’ Real-time Recommendations β†’ Business Intelligence
      ↓                    ↓                        ↓
Customer Data β†’ Personalization β†’ Corporate Reporting

Pricing Models and Cost Optimization

Pricing Structure

Outposts Rack Pricing

  • Upfront Payment: Three-year commitment required
  • Monthly Payment: Ongoing monthly charges
  • All-Inclusive: Includes hardware, software, and maintenance
  • Capacity-Based: Pricing based on compute and storage capacity

Pricing Components

  1. Compute: Based on instance types and quantities
  2. Storage: EBS and S3 storage capacity
  3. Networking: Data transfer and connectivity
  4. Support: AWS Support plan costs
  5. Installation: One-time installation and setup

Cost Considerations

Initial Costs:
- Hardware procurement and setup
- Site preparation and power requirements
- Network connectivity establishment
- Installation and configuration services

Ongoing Costs:
- Monthly service fees
- Power and cooling costs
- Maintenance and support
- Data transfer charges

Cost Optimization Strategies

  1. Capacity Planning
  2. Accurate sizing based on actual requirements
  3. Plan for growth but avoid over-provisioning
  4. Use cloud bursting for peak capacity needs
  5. Regular capacity utilization reviews

  6. Workload Optimization

  7. Identify workloads that benefit from local processing
  8. Optimize data transfer patterns
  9. Use local caching and processing efficiently
  10. Implement efficient backup and replication strategies

  11. Hybrid Architecture Design

  12. Balance on-premises and cloud workloads
  13. Use Outposts for latency-sensitive components
  14. Leverage cloud for scalable and analytics workloads
  15. Implement efficient data lifecycle management

  16. Operational Efficiency

  17. Automate management and monitoring
  18. Use AWS native tools for consistency
  19. Implement efficient resource scheduling
  20. Regular performance and cost reviews

Configuration Details and Best Practices

Site Preparation Requirements

Physical Requirements

Space: Minimum 42U rack space (for Outposts Rack)
Power: 10-15 kW power capacity with redundancy
Cooling: Adequate HVAC for heat dissipation
Network: Reliable internet connectivity (minimum 1 Gbps)
Access: Secure physical access for AWS personnel
Environment: Controlled temperature and humidity

Network Requirements

Connectivity: Reliable connection to AWS Region
Bandwidth: Minimum bandwidth for synchronization
Latency: Low latency to parent AWS Region
Redundancy: Multiple network paths recommended
Security: Secure network connectivity (VPN/Direct Connect)

Outposts Deployment Configuration

Initial Setup

# Outposts configuration example
outpost_configuration:
  outpost_id: "op-1234567890abcdef0"
  site_id: "os-1234567890abcdef0"
  availability_zone: "us-west-2-lax-1a"
  supported_hardware_type: "SupportedHardwareType"

compute_configuration:
  instance_types:
    - "m5.large"
    - "m5.xlarge"
    - "c5.large"
    - "r5.large"

storage_configuration:
  ebs_volume_types:
    - "gp2"
    - "io1"
  s3_capacity: "100TB"

networking:
  vpc_id: "vpc-12345678"
  subnet_ids:
    - "subnet-12345678"
    - "subnet-87654321"
  security_groups:
    - "sg-12345678"

EC2 Instance Deployment on Outposts

# Launch EC2 instance on Outposts
aws ec2 run-instances \
  --image-id ami-12345678 \
  --instance-type m5.large \
  --subnet-id subnet-12345678 \
  --placement '{"Tenancy": "default", "AvailabilityZone": "us-west-2-lax-1a"}' \
  --tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=OutpostsInstance}]'

ECS Cluster on Outposts

{
  "clusterName": "outposts-cluster",
  "tags": [
    {
      "key": "Environment",
      "value": "production"
    }
  ],
  "capacityProviders": ["EC2"],
  "defaultCapacityProviderStrategy": [
    {
      "capacityProvider": "EC2",
      "weight": 1
    }
  ]
}

Best Practices

Architecture Design

  1. Hybrid Strategy
  2. Design for both local and cloud processing
  3. Implement data synchronization strategies
  4. Plan for network connectivity failures
  5. Use appropriate data partitioning

  6. Application Design

  7. Design for local data processing
  8. Implement caching strategies
  9. Use asynchronous communication patterns
  10. Plan for offline capabilities

  11. Data Management

  12. Implement local data storage strategies
  13. Plan for data backup and replication
  14. Use efficient data transfer mechanisms
  15. Implement data lifecycle policies

Security Best Practices

  1. Physical Security
  2. Secure physical access to Outposts
  3. Monitor environmental conditions
  4. Implement access controls and logging
  5. Regular security assessments

  6. Network Security

  7. Secure connectivity to AWS Region
  8. Implement network segmentation
  9. Use VPN or Direct Connect for connectivity
  10. Monitor network traffic and anomalies

  11. Data Security

  12. Encrypt data at rest and in transit
  13. Implement proper access controls
  14. Use AWS KMS for key management
  15. Regular security audits and compliance checks

Operational Excellence

  1. Monitoring and Alerting
  2. Comprehensive monitoring setup
  3. Proactive alerting for issues
  4. Performance monitoring and optimization
  5. Capacity planning and forecasting

  6. Maintenance and Updates

  7. Regular system updates and patches
  8. Coordinate with AWS for maintenance
  9. Implement change management processes
  10. Disaster recovery planning

Integration with Other AWS Services

Native AWS Service Integration

  1. AWS Systems Manager
  2. Instance management and patching
  3. Configuration management
  4. Automation and orchestration
  5. Compliance and inventory management

  6. Amazon CloudWatch

  7. Monitoring and metrics collection
  8. Log aggregation and analysis
  9. Alerting and notifications
  10. Performance dashboards

  11. AWS CloudFormation

  12. Infrastructure as code
  13. Consistent deployments
  14. Resource lifecycle management
  15. Stack management and updates

  16. AWS IAM

  17. Identity and access management
  18. Role-based access control
  19. Service-to-service authentication
  20. Compliance and governance

  21. AWS Direct Connect

  22. Dedicated network connectivity
  23. Predictable bandwidth and latency
  24. Reduced data transfer costs
  25. Enhanced security and compliance

Advanced Integration Patterns

Hybrid Data Pipeline

On-premises Data β†’ Outposts Processing β†’ AWS Region Analytics
        ↓                 ↓                    ↓
Local Databases β†’ Real-time ETL β†’ Data Lake/Warehouse
        ↓                 ↓                    ↓
Legacy Systems β†’ Data Transformation β†’ Machine Learning

Edge Computing Architecture

IoT Devices β†’ Outposts Edge β†’ AWS Region
     ↓             ↓              ↓
Sensor Data β†’ Local Processing β†’ Central Analytics
     ↓             ↓              ↓
Real-time β†’ Immediate Response β†’ Historical Analysis

Disaster Recovery Setup

Primary Site β†’ Outposts DR β†’ AWS Region Backup
     ↓             ↓              ↓
Production β†’ Standby Systems β†’ Long-term Storage
     ↓             ↓              ↓
Live Data β†’ Synchronized Copy β†’ Archived Data

Service Integration Examples

EKS on Outposts

# EKS cluster configuration for Outposts
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig

metadata:
  name: outposts-cluster
  region: us-west-2

vpc:
  id: vpc-12345678
  subnets:
    private:
      us-west-2-lax-1a:
        id: subnet-12345678

nodeGroups:
  - name: outposts-workers
    instanceType: m5.large
    desiredCapacity: 3
    minSize: 1
    maxSize: 10
    subnets:
      - subnet-12345678
    availabilityZones:
      - us-west-2-lax-1a

RDS on Outposts

# Create RDS instance on Outposts
aws rds create-db-instance \
  --db-instance-identifier outposts-database \
  --db-instance-class db.m5.large \
  --engine mysql \
  --master-username admin \
  --master-user-password mypassword \
  --allocated-storage 100 \
  --db-subnet-group-name outposts-subnet-group \
  --vpc-security-group-ids sg-12345678 \
  --availability-zone us-west-2-lax-1a

Security Considerations

Physical Security

  1. Facility Security
  2. Controlled physical access
  3. Environmental monitoring
  4. Security cameras and logging
  5. Incident response procedures

  6. Hardware Security

  7. Tamper detection and response
  8. Secure hardware disposal
  9. Component authentication
  10. Supply chain security

Network Security

  1. Connectivity Security
  2. Encrypted connections to AWS
  3. Network segmentation and isolation
  4. Firewall rules and access controls
  5. DDoS protection and monitoring

  6. Data Protection

  7. Encryption in transit and at rest
  8. Key management with AWS KMS
  9. Secure backup and replication
  10. Data classification and handling

Compliance and Governance

  1. Regulatory Compliance
  2. Data residency requirements
  3. Industry-specific regulations
  4. Audit and compliance reporting
  5. Governance frameworks

  6. Operational Security

  7. Access logging and monitoring
  8. Change management processes
  9. Incident response procedures
  10. Regular security assessments

Monitoring and Troubleshooting

CloudWatch Monitoring

Outposts-Specific Metrics

  • InstanceStatus: Health status of Outposts instances
  • CapacityUtilization: Resource utilization metrics
  • NetworkLatency: Latency to parent AWS Region
  • ConnectivityStatus: Connectivity health to AWS
  • HardwareHealth: Physical hardware status

Custom Monitoring Setup

# Custom metrics for Outposts monitoring
import boto3
import psutil

cloudwatch = boto3.client('cloudwatch')

def publish_outposts_metrics():
    # CPU utilization
    cpu_percent = psutil.cpu_percent()

    # Memory utilization
    memory = psutil.virtual_memory()
    memory_percent = memory.percent

    # Disk utilization
    disk = psutil.disk_usage('/')
    disk_percent = (disk.used / disk.total) * 100

    # Network metrics
    network = psutil.net_io_counters()

    metrics = [
        {
            'MetricName': 'CPUUtilization',
            'Value': cpu_percent,
            'Unit': 'Percent'
        },
        {
            'MetricName': 'MemoryUtilization',
            'Value': memory_percent,
            'Unit': 'Percent'
        },
        {
            'MetricName': 'DiskUtilization',
            'Value': disk_percent,
            'Unit': 'Percent'
        }
    ]

    cloudwatch.put_metric_data(
        Namespace='AWS/Outposts/Custom',
        MetricData=metrics
    )

Health Monitoring

Connectivity Monitoring

# Monitor connectivity to AWS Region
#!/bin/bash

AWS_REGION="us-west-2"
ENDPOINT="ec2.${AWS_REGION}.amazonaws.com"

while true; do
    if ping -c 1 $ENDPOINT > /dev/null 2>&1; then
        echo "$(date): Connectivity to $AWS_REGION: OK"
        aws cloudwatch put-metric-data \
          --namespace "AWS/Outposts/Connectivity" \
          --metric-data MetricName=ConnectivityStatus,Value=1,Unit=Count
    else
        echo "$(date): Connectivity to $AWS_REGION: FAILED"
        aws cloudwatch put-metric-data \
          --namespace "AWS/Outposts/Connectivity" \
          --metric-data MetricName=ConnectivityStatus,Value=0,Unit=Count
    fi
    sleep 60
done

Application Health Checks

# Application health monitoring for Outposts
import requests
import time
import boto3

def check_application_health():
    cloudwatch = boto3.client('cloudwatch')
    endpoints = [
        'http://localhost:8080/health',
        'http://localhost:8081/health'
    ]

    for endpoint in endpoints:
        try:
            response = requests.get(endpoint, timeout=5)
            if response.status_code == 200:
                status = 1
                print(f"Health check passed for {endpoint}")
            else:
                status = 0
                print(f"Health check failed for {endpoint}: {response.status_code}")
        except requests.RequestException as e:
            status = 0
            print(f"Health check failed for {endpoint}: {e}")

        cloudwatch.put_metric_data(
            Namespace='AWS/Outposts/Applications',
            MetricData=[
                {
                    'MetricName': 'ApplicationHealth',
                    'Value': status,
                    'Unit': 'Count',
                    'Dimensions': [
                        {
                            'Name': 'Endpoint',
                            'Value': endpoint
                        }
                    ]
                }
            ]
        )

if __name__ == "__main__":
    while True:
        check_application_health()
        time.sleep(30)

Common Troubleshooting Scenarios

  1. Connectivity Issues
  2. Network connectivity to AWS Region
  3. DNS resolution problems
  4. Firewall and security group issues
  5. Bandwidth and latency problems

  6. Capacity Issues

  7. Insufficient compute resources
  8. Storage capacity limitations
  9. Memory constraints
  10. Network throughput limits

  11. Application Issues

  12. Service startup failures
  13. Configuration mismatches
  14. Dependency issues
  15. Performance degradation

  16. Hardware Issues

  17. Server hardware failures
  18. Storage device problems
  19. Network equipment issues
  20. Power and cooling problems

Debugging Tools and Techniques

System Diagnostics

# Comprehensive system check for Outposts
#!/bin/bash

echo "=== System Information ==="
hostnamectl
uptime
free -h
df -h

echo "=== Network Connectivity ==="
ping -c 3 8.8.8.8
nslookup ec2.us-west-2.amazonaws.com

echo "=== AWS Connectivity ==="
aws sts get-caller-identity
aws ec2 describe-regions --region us-west-2

echo "=== Service Status ==="
systemctl status amazon-ssm-agent
systemctl status awslogs

echo "=== Resource Utilization ==="
top -bn1 | head -20
iostat -x 1 1

Application Diagnostics

# Comprehensive application diagnostics
import subprocess
import json
import boto3

def run_diagnostics():
    results = {}

    # System information
    results['system'] = {
        'hostname': subprocess.getoutput('hostname'),
        'uptime': subprocess.getoutput('uptime'),
        'load_average': subprocess.getoutput('cat /proc/loadavg'),
        'memory': subprocess.getoutput('free -m'),
        'disk': subprocess.getoutput('df -h')
    }

    # Network connectivity
    results['network'] = {
        'ping_aws': subprocess.getoutput('ping -c 3 ec2.us-west-2.amazonaws.com'),
        'dns_resolution': subprocess.getoutput('nslookup ec2.us-west-2.amazonaws.com'),
        'network_interfaces': subprocess.getoutput('ip addr show')
    }

    # AWS services
    try:
        sts = boto3.client('sts')
        ec2 = boto3.client('ec2')

        results['aws'] = {
            'identity': sts.get_caller_identity(),
            'instances': ec2.describe_instances()['Reservations']
        }
    except Exception as e:
        results['aws'] = {'error': str(e)}

    return json.dumps(results, indent=2, default=str)

if __name__ == "__main__":
    diagnostics = run_diagnostics()
    print(diagnostics)

    # Save to file
    with open('/tmp/outposts-diagnostics.json', 'w') as f:
        f.write(diagnostics)

Exam-Specific Tips and Common Scenarios

Solutions Architect Associate (SAA-C03)

  • Hybrid Architectures: When to use Outposts vs other hybrid solutions
  • Data Residency: Understanding compliance and regulatory requirements
  • Low Latency: Applications requiring local processing
  • Cost Considerations: Total cost of ownership for hybrid deployments

Solutions Architect Professional (SAP-C02)

  • Enterprise Hybrid: Large-scale hybrid cloud architectures
  • Compliance: Meeting strict regulatory and compliance requirements
  • Edge Computing: Distributed computing architectures
  • Migration Strategies: Gradual migration from on-premises to cloud

Common Exam Scenarios

  1. Scenario: Financial services requiring local data processing Solution: Outposts for compliance and low-latency requirements

  2. Scenario: Manufacturing IoT with real-time processing needs Solution: Outposts for edge computing and immediate response

  3. Scenario: Government data that cannot leave the country Solution: Outposts for data sovereignty requirements

  4. Scenario: Hybrid cloud with burst to cloud capability Solution: Outposts for baseline capacity with cloud bursting

  5. Scenario: Legacy applications requiring gradual modernization Solution: Outposts as stepping stone to full cloud migration

Hands-on Examples and CLI Commands

Outposts Management

# List available Outposts
aws outposts list-outposts

# Get Outpost details
aws outposts get-outpost --outpost-id op-1234567890abcdef0

# List sites
aws outposts list-sites

# Get site details
aws outposts get-site --site-id os-1234567890abcdef0

# List catalog items
aws outposts list-catalog-items

# Get catalog item
aws outposts get-catalog-item --catalog-item-id catalog-item-id

Instance Management on Outposts

# Launch EC2 instance on Outposts
aws ec2 run-instances \
  --image-id ami-12345678 \
  --instance-type m5.large \
  --subnet-id subnet-12345678 \
  --placement '{
    "AvailabilityZone": "us-west-2-lax-1a",
    "Tenancy": "default"
  }' \
  --tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=OutpostsInstance},{Key=Environment,Value=Production}]'

# Create EBS volume on Outposts
aws ec2 create-volume \
  --size 100 \
  --volume-type gp2 \
  --availability-zone us-west-2-lax-1a \
  --tag-specifications 'ResourceType=volume,Tags=[{Key=Name,Value=OutpostsVolume}]'

# Describe instances on Outposts
aws ec2 describe-instances \
  --filters "Name=placement.availability-zone,Values=us-west-2-lax-1a"

ECS on Outposts

# Create ECS cluster
aws ecs create-cluster \
  --cluster-name outposts-cluster \
  --capacity-providers EC2 \
  --default-capacity-provider-strategy capacityProvider=EC2,weight=1

# Register EC2 instances to cluster
aws ecs create-capacity-provider \
  --name outposts-capacity-provider \
  --auto-scaling-group-provider '{
    "autoScalingGroupArn": "arn:aws:autoscaling:us-west-2:123456789012:autoScalingGroup:uuid:autoScalingGroupName/outposts-asg",
    "managedScaling": {
      "status": "ENABLED",
      "targetCapacity": 80
    },
    "managedTerminationProtection": "ENABLED"
  }'

# Create task definition for Outposts
aws ecs register-task-definition \
  --family outposts-app \
  --container-definitions '[
    {
      "name": "web-app",
      "image": "nginx:latest",
      "memory": 512,
      "portMappings": [
        {
          "containerPort": 80,
          "hostPort": 80
        }
      ],
      "essential": true
    }
  ]' \
  --placement-constraints '[
    {
      "type": "memberOf",
      "expression": "attribute:ecs.availability-zone == us-west-2-lax-1a"
    }
  ]'

RDS on Outposts

# Create DB subnet group for Outposts
aws rds create-db-subnet-group \
  --db-subnet-group-name outposts-subnet-group \
  --db-subnet-group-description "Subnet group for Outposts RDS" \
  --subnet-ids subnet-12345678 subnet-87654321

# Create RDS instance on Outposts
aws rds create-db-instance \
  --db-instance-identifier outposts-mysql \
  --db-instance-class db.m5.large \
  --engine mysql \
  --engine-version 8.0.28 \
  --master-username admin \
  --master-user-password SecurePassword123! \
  --allocated-storage 100 \
  --storage-type gp2 \
  --db-subnet-group-name outposts-subnet-group \
  --vpc-security-group-ids sg-12345678 \
  --availability-zone us-west-2-lax-1a \
  --backup-retention-period 7 \
  --storage-encrypted

# List RDS instances on Outposts
aws rds describe-db-instances \
  --query 'DBInstances[?AvailabilityZone==`us-west-2-lax-1a`]'

Monitoring Setup

# Create CloudWatch dashboard for Outposts
aws cloudwatch put-dashboard \
  --dashboard-name "Outposts-Monitoring" \
  --dashboard-body '{
    "widgets": [
      {
        "type": "metric",
        "properties": {
          "metrics": [
            ["AWS/EC2", "CPUUtilization", "InstanceId", "i-1234567890abcdef0"],
            ["AWS/EC2", "NetworkIn", "InstanceId", "i-1234567890abcdef0"],
            ["AWS/EC2", "NetworkOut", "InstanceId", "i-1234567890abcdef0"]
          ],
          "period": 300,
          "stat": "Average",
          "region": "us-west-2",
          "title": "Outposts Instance Metrics"
        }
      }
    ]
  }'

# Create CloudWatch alarm for Outposts connectivity
aws cloudwatch put-metric-alarm \
  --alarm-name "Outposts-Connectivity-Alarm" \
  --alarm-description "Alert when Outposts connectivity is lost" \
  --metric-name ConnectivityStatus \
  --namespace AWS/Outposts/Connectivity \
  --statistic Average \
  --period 300 \
  --threshold 0.5 \
  --comparison-operator LessThanThreshold \
  --evaluation-periods 2 \
  --alarm-actions arn:aws:sns:us-west-2:123456789012:outposts-alerts

This comprehensive AWS Outposts documentation provides detailed coverage for AWS certification preparation, focusing on hybrid cloud architectures and edge computing scenarios.