Skip to content

AWS Fargate

Service Overview and Purpose

AWS Fargate is a serverless compute engine for containers that works with both Amazon Elastic Container Service (ECS) and Amazon Elastic Kubernetes Service (EKS). Fargate eliminates the need to provision and manage servers, allowing you to specify and pay for resources per application, and improving security through application isolation by design.

Core Purpose: - Provide serverless container compute - Eliminate infrastructure management overhead - Enable automatic scaling based on application needs - Improve security through container isolation - Simplify container deployment and operations

Key Features and Capabilities

Core Features

  • Serverless: No servers to provision or manage
  • Right-sizing: Pay only for the resources you use
  • Security Isolation: Each task runs in its own kernel runtime environment
  • VPC Networking: Native VPC integration with ENI per task
  • Auto Scaling: Automatic scaling based on demand
  • Integration: Works with ECS and EKS
  • Monitoring: Built-in CloudWatch integration
  • Compliance: SOC, PCI, ISO certifications

Technical Specifications

Resource Configurations

  • CPU: 0.25 vCPU to 4 vCPU (incremental options)
  • Memory: 0.5 GB to 30 GB (specific combinations supported)
  • Storage: 20 GB to 200 GB ephemeral storage
  • Network: Enhanced networking with up to 10 Gbps
  • Platform Versions: Linux and Windows containers

Supported CPU/Memory Combinations

CPU (vCPU) | Memory (GB)
-----------|-------------
0.25       | 0.5, 1, 2
0.5        | 1, 2, 3, 4
1          | 2, 3, 4, 5, 6, 7, 8
2          | 4-16 (1 GB increments)
4          | 8-30 (1 GB increments)

Container Runtime Environment

  • Task Isolation: Each task runs in its own microVM
  • Network Interface: Dedicated ENI per task
  • Security Groups: Applied at task level
  • IAM Roles: Task-level IAM integration
  • Secrets Management: Native integration with AWS services
  • Logging: Container logs sent to CloudWatch

Use Cases and Scenarios

Primary Use Cases

  1. Microservices Applications
  2. API backends and web services
  3. Event-driven microservices
  4. Service-oriented architectures
  5. Container-native applications

  6. Batch Processing

  7. Data processing workflows
  8. ETL operations
  9. Machine learning inference
  10. Scheduled task execution

  11. Web Applications

  12. Frontend and backend services
  13. Content management systems
  14. E-commerce platforms
  15. Real-time applications

  16. Development and Testing

  17. CI/CD pipelines
  18. Development environments
  19. Testing automation
  20. Staging deployments

  21. Event-Driven Workloads

  22. Serverless container processing
  23. Queue-based processing
  24. Stream processing applications
  25. Webhook handlers

Detailed Scenarios

Serverless API Backend

API Gateway β†’ Fargate Task (ECS) β†’ RDS/DynamoDB
     ↓              ↓                    ↓
 Authentication β†’ Business Logic β†’ Data Storage

Event-Driven Processing

S3 Event β†’ Lambda β†’ ECS Fargate Task β†’ Process File β†’ Store Result
    ↓         ↓           ↓                ↓            ↓
File Upload β†’ Trigger β†’ Start Container β†’ Transform β†’ S3/Database

Microservices Architecture

Load Balancer β†’ User Service (Fargate)
             β†’ Order Service (Fargate)
             β†’ Payment Service (Fargate)
             β†’ Inventory Service (Fargate)
                      ↓
                Shared Database Layer

CI/CD Pipeline

Code Commit β†’ CodeBuild β†’ Fargate Task (Test) β†’ CodeDeploy β†’ Production
     ↓           ↓             ↓                    ↓            ↓
Source Code β†’ Build Image β†’ Run Tests β†’ Deploy β†’ Live Service

Pricing Models and Cost Optimization

Pricing Structure

Fargate Pricing Components

  1. vCPU: $0.04048 per vCPU per hour
  2. Memory: $0.004445 per GB per hour
  3. Storage: $0.000111 per GB per hour (ephemeral)
  4. Data Transfer: Standard AWS data transfer rates

Billing Model

  • Per-second billing: Minimum 1-minute charge
  • Resource-based: Pay for allocated CPU and memory
  • No minimum fees: Pay only when containers run
  • Regional pricing: Varies by AWS region

Cost Optimization Strategies

  1. Right-size Resources
  2. Monitor actual CPU and memory usage
  3. Choose optimal CPU/memory combinations
  4. Use CloudWatch Container Insights for analysis
  5. Avoid over-provisioning resources

  6. Efficient Task Design

  7. Optimize container startup time
  8. Implement efficient application initialization
  9. Use shared resources where possible
  10. Minimize idle time between tasks

  11. Scheduling Optimization

  12. Use spot pricing where available
  13. Schedule batch jobs during off-peak hours
  14. Implement efficient task queuing
  15. Optimize task frequency

  16. Fargate vs EC2 Decision Matrix

    Choose Fargate when:
    - Variable or unpredictable workloads
    - Short-running tasks
    - Development/testing environments
    - Don't want infrastructure management
    
    Choose EC2 when:
    - Steady, long-running workloads
    - Need specific instance features
    - Cost optimization for predictable workloads
    - Require custom AMIs or configurations
    

  17. Monitoring and Optimization

  18. Use AWS Cost Explorer for analysis
  19. Implement resource tagging for cost allocation
  20. Set up billing alerts and budgets
  21. Regular cost reviews and optimization

Configuration Details and Best Practices

ECS with Fargate Configuration

Task Definition for Fargate

{
  "family": "web-app-fargate",
  "networkMode": "awsvpc",
  "requiresCompatibilities": ["FARGATE"],
  "cpu": "512",
  "memory": "1024",
  "executionRoleArn": "arn:aws:iam::account:role/ecsTaskExecutionRole",
  "taskRoleArn": "arn:aws:iam::account:role/ecsTaskRole",
  "containerDefinitions": [
    {
      "name": "web-app",
      "image": "my-web-app:latest",
      "portMappings": [
        {
          "containerPort": 8080,
          "protocol": "tcp"
        }
      ],
      "essential": true,
      "logConfiguration": {
        "logDriver": "awslogs",
        "options": {
          "awslogs-group": "/ecs/web-app-fargate",
          "awslogs-region": "us-west-2",
          "awslogs-stream-prefix": "ecs"
        }
      },
      "environment": [
        {
          "name": "ENV",
          "value": "production"
        }
      ],
      "secrets": [
        {
          "name": "DB_PASSWORD",
          "valueFrom": "arn:aws:secretsmanager:region:account:secret:db-password"
        }
      ],
      "healthCheck": {
        "command": ["CMD-SHELL", "curl -f http://localhost:8080/health || exit 1"],
        "interval": 30,
        "timeout": 5,
        "retries": 3,
        "startPeriod": 60
      }
    }
  ],
  "platformVersion": "1.4.0",
  "runtimePlatform": {
    "cpuArchitecture": "X86_64",
    "operatingSystemFamily": "LINUX"
  }
}

Service Configuration

{
  "serviceName": "web-app-service",
  "cluster": "fargate-cluster",
  "taskDefinition": "web-app-fargate:1",
  "desiredCount": 3,
  "launchType": "FARGATE",
  "platformVersion": "1.4.0",
  "networkConfiguration": {
    "awsvpcConfiguration": {
      "subnets": ["subnet-12345", "subnet-67890"],
      "securityGroups": ["sg-web-app"],
      "assignPublicIp": "ENABLED"
    }
  },
  "loadBalancers": [
    {
      "targetGroupArn": "arn:aws:elasticloadbalancing:region:account:targetgroup/web-app/123",
      "containerName": "web-app",
      "containerPort": 8080
    }
  ],
  "serviceRegistries": [
    {
      "registryArn": "arn:aws:servicediscovery:region:account:service/srv-web-app"
    }
  ],
  "deploymentConfiguration": {
    "maximumPercent": 200,
    "minimumHealthyPercent": 100
  }
}

EKS with Fargate Configuration

Fargate Profile

apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig

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

fargateProfiles:
  - name: default-fargate-profile
    selectors:
      - namespace: default
      - namespace: kube-system
        labels:
          k8s-app: kube-dns
  - name: app-fargate-profile
    selectors:
      - namespace: production
        labels:
          compute-type: fargate
      - namespace: staging
        labels:
          compute-type: fargate
    tags:
      Environment: production
      Team: platform

Kubernetes Deployment for Fargate

apiVersion: apps/v1
kind: Deployment
metadata:
  name: web-app
  namespace: production
spec:
  replicas: 3
  selector:
    matchLabels:
      app: web-app
      compute-type: fargate
  template:
    metadata:
      labels:
        app: web-app
        compute-type: fargate
    spec:
      containers:
      - name: web-app
        image: my-web-app:latest
        ports:
        - containerPort: 8080
        resources:
          requests:
            memory: "512Mi"
            cpu: "250m"
          limits:
            memory: "1Gi"
            cpu: "500m"
        env:
        - name: ENV
          value: "production"
        - name: DB_HOST
          valueFrom:
            secretKeyRef:
              name: db-secret
              key: host
        livenessProbe:
          httpGet:
            path: /health
            port: 8080
          initialDelaySeconds: 30
          periodSeconds: 10
        readinessProbe:
          httpGet:
            path: /ready
            port: 8080
          initialDelaySeconds: 5
          periodSeconds: 5

Best Practices

Container Optimization

  1. Image Optimization
  2. Use minimal base images (Alpine, Distroless)
  3. Multi-stage Docker builds
  4. Remove unnecessary dependencies
  5. Optimize layer caching

  6. Application Design

  7. Fast startup times
  8. Graceful shutdown handling
  9. Stateless application design
  10. Health check endpoints

  11. Resource Management

  12. Set appropriate resource requests and limits
  13. Monitor actual resource usage
  14. Use efficient programming languages and frameworks
  15. Implement connection pooling

Security Best Practices

  1. Network Security
  2. Use private subnets when possible
  3. Configure security groups with minimal access
  4. Implement network policies (EKS)
  5. Use VPC endpoints for AWS services

  6. IAM Security

  7. Use task-specific IAM roles
  8. Follow least privilege principle
  9. Regularly audit permissions
  10. Use temporary credentials

  11. Image Security

  12. Scan images for vulnerabilities
  13. Use trusted base images
  14. Implement image signing
  15. Regular security updates

Performance Optimization

  1. Cold Start Reduction
  2. Optimize container initialization
  3. Use provisioned concurrency patterns
  4. Implement efficient health checks
  5. Minimize external dependencies

  6. Resource Efficiency

  7. Right-size CPU and memory
  8. Use appropriate platform versions
  9. Implement efficient logging
  10. Optimize database connections

Integration with Other AWS Services

Core Service Integrations

  1. Amazon ECS
  2. Task definitions and services
  3. Service discovery integration
  4. Load balancer integration
  5. Auto scaling capabilities

  6. Amazon EKS

  7. Fargate profiles for namespaces
  8. Kubernetes native scheduling
  9. Pod-level resource allocation
  10. Service mesh integration

  11. Application Load Balancer (ALB)

  12. HTTP/HTTPS load balancing
  13. Path and host-based routing
  14. Target group integration
  15. Health check configuration

  16. Amazon VPC

  17. ENI allocation per task
  18. Security group assignment
  19. Subnet placement control
  20. VPC endpoint integration

  21. AWS IAM

  22. Task execution roles
  23. Task roles for application access
  24. Service-linked roles
  25. Cross-account access

Advanced Integrations

  1. Amazon CloudWatch
  2. Container Insights monitoring
  3. Custom metrics publishing
  4. Log aggregation and analysis
  5. Alerting and dashboards

  6. AWS Secrets Manager

  7. Secure secret storage
  8. Automatic secret rotation
  9. Task definition integration
  10. Runtime secret injection

  11. Amazon ECR

  12. Private container registry
  13. Image vulnerability scanning
  14. Lifecycle policies
  15. Cross-region replication

  16. AWS App Mesh

  17. Service mesh capabilities
  18. Traffic management
  19. Observability features
  20. Security policies

  21. Amazon EventBridge

  22. Event-driven architectures
  23. Task state change events
  24. Custom event routing
  25. Integration with other services

CI/CD Integration Patterns

CodePipeline with Fargate

# buildspec.yml for CodeBuild
version: 0.2
phases:
  pre_build:
    commands:
      - echo Logging in to Amazon ECR...
      - aws ecr get-login-password --region $AWS_DEFAULT_REGION | docker login --username AWS --password-stdin $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com
      - REPOSITORY_URI=$AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME
      - COMMIT_HASH=$(echo $CODEBUILD_RESOLVED_SOURCE_VERSION | cut -c 1-7)
      - IMAGE_TAG=${COMMIT_HASH:=latest}
  build:
    commands:
      - echo Build started on `date`
      - echo Building the Docker image...
      - docker build -t $REPOSITORY_URI:latest .
      - docker tag $REPOSITORY_URI:latest $REPOSITORY_URI:$IMAGE_TAG
  post_build:
    commands:
      - echo Build completed on `date`
      - echo Pushing the Docker images...
      - docker push $REPOSITORY_URI:latest
      - docker push $REPOSITORY_URI:$IMAGE_TAG
      - echo Writing image definitions file...
      - printf '[{"name":"web-app","imageUri":"%s"}]' $REPOSITORY_URI:$IMAGE_TAG > imagedefinitions.json
artifacts:
  files:
    - imagedefinitions.json

GitOps with EKS Fargate

# ArgoCD Application for Fargate workloads
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: web-app-fargate
  namespace: argocd
spec:
  project: default
  source:
    repoURL: https://github.com/company/k8s-manifests
    targetRevision: HEAD
    path: apps/web-app
  destination:
    server: https://kubernetes.default.svc
    namespace: production
  syncPolicy:
    automated:
      prune: true
      selfHeal: true
    syncOptions:
    - CreateNamespace=true
  # Ensure pods are scheduled on Fargate
  syncOptions:
  - RespectIgnoreDifferences=true

Security Considerations

Task-Level Security

  1. Isolation Benefits
  2. Each task runs in its own microVM
  3. Hypervisor-level isolation
  4. Dedicated kernel runtime
  5. Network interface isolation

  6. IAM Integration

  7. Task execution roles for AWS service access
  8. Task roles for application permissions
  9. Temporary credential management
  10. Cross-account access controls

  11. Network Security

  12. VPC native networking
  13. Security groups at task level
  14. Private subnet deployment
  15. VPC endpoints for AWS services

Data Protection

  1. Encryption
  2. Encryption in transit (TLS)
  3. Encryption at rest (EBS/EFS)
  4. Secret encryption (KMS)
  5. Log encryption (CloudWatch)

  6. Secrets Management

  7. AWS Secrets Manager integration
  8. Parameter Store integration
  9. Environment variable encryption
  10. Runtime secret injection

Compliance and Governance

  1. Compliance Standards
  2. SOC 1, 2, 3 compliance
  3. PCI DSS Level 1
  4. ISO 27001, 27017, 27018
  5. FedRAMP authorization

  6. Auditing and Monitoring

  7. CloudTrail API logging
  8. VPC Flow Logs
  9. Container activity monitoring
  10. Security event alerting

Monitoring and Troubleshooting

CloudWatch Metrics

Fargate-Specific Metrics

  • CPUUtilization: CPU usage percentage
  • MemoryUtilization: Memory usage percentage
  • NetworkRxBytes: Network bytes received
  • NetworkTxBytes: Network bytes transmitted
  • StorageReadBytes: Storage read operations
  • StorageWriteBytes: Storage write operations

ECS Fargate Metrics

  • RunningTaskCount: Number of running tasks
  • PendingTaskCount: Number of pending tasks
  • ActiveServiceCount: Number of active services
  • CPUReservation: Reserved CPU percentage
  • MemoryReservation: Reserved memory percentage

EKS Fargate Metrics

  • cluster_failed_request_count: Failed API requests
  • cluster_node_count: Number of Fargate nodes
  • namespace_number_of_running_pods: Running pods per namespace
  • pod_cpu_utilization: Pod CPU utilization
  • pod_memory_utilization: Pod memory utilization

Container Insights Integration

Fargate Container Insights

# Enable Container Insights for ECS cluster
aws ecs put-account-setting \
  --name containerInsights \
  --value enabled

# Enable for specific cluster
aws ecs update-cluster \
  --cluster fargate-cluster \
  --configuration executeCommandConfiguration='{
    "kmsKeyId": "alias/aws/ecs",
    "logging": "DEFAULT"
  }'

Custom Metrics Publishing

import boto3
import json

cloudwatch = boto3.client('cloudwatch')

def publish_custom_metric(metric_name, value, unit='Count'):
    cloudwatch.put_metric_data(
        Namespace='Fargate/Application',
        MetricData=[
            {
                'MetricName': metric_name,
                'Value': value,
                'Unit': unit,
                'Dimensions': [
                    {
                        'Name': 'ServiceName',
                        'Value': 'web-app'
                    },
                    {
                        'Name': 'Environment',
                        'Value': 'production'
                    }
                ]
            }
        ]
    )

Common Troubleshooting Scenarios

  1. Task Startup Issues
  2. Image pull failures from ECR
  3. Insufficient task resources
  4. Network configuration problems
  5. IAM permission issues

  6. Performance Issues

  7. Under-resourced tasks
  8. Network bandwidth limitations
  9. Storage performance bottlenecks
  10. Application inefficiencies

  11. Networking Issues

  12. Security group misconfigurations
  13. Subnet capacity limitations
  14. DNS resolution problems
  15. Load balancer health checks

  16. Cost Issues

  17. Over-provisioned resources
  18. Long-running idle tasks
  19. Inefficient scaling policies
  20. Unnecessary task restarts

Debugging Tools and Techniques

ECS Fargate Debugging

# Enable ECS Exec for debugging
aws ecs update-service \
  --cluster fargate-cluster \
  --service web-app-service \
  --enable-execute-command

# Execute command in running task
aws ecs execute-command \
  --cluster fargate-cluster \
  --task task-id \
  --container web-app \
  --interactive \
  --command "/bin/bash"

# Get task details
aws ecs describe-tasks \
  --cluster fargate-cluster \
  --tasks task-id

# Check service events
aws ecs describe-services \
  --cluster fargate-cluster \
  --services web-app-service \
  --query 'services[0].events'

EKS Fargate Debugging

# Check Fargate profile
kubectl get fargateprofile -A

# Describe pod on Fargate
kubectl describe pod pod-name -n namespace

# Check pod logs
kubectl logs pod-name -c container-name -n namespace

# Execute into Fargate pod
kubectl exec -it pod-name -c container-name -n namespace -- /bin/bash

# Check node information
kubectl get nodes -l eks.amazonaws.com/compute-type=fargate

Performance Analysis

# Monitor resource usage
kubectl top pods -n production --containers

# Check resource limits
kubectl describe limits -n production

# Analyze resource quotas
kubectl describe quota -n production

# Check horizontal pod autoscaler
kubectl get hpa -n production

Exam-Specific Tips and Common Scenarios

Solutions Architect Associate (SAA-C03)

  • Serverless vs Managed: Fargate vs EC2 decision criteria
  • Cost Optimization: When to choose Fargate over EC2
  • Integration Patterns: ALB, VPC, and service integration
  • Scaling Strategies: Auto scaling with Fargate

Solutions Architect Professional (SAP-C02)

  • Enterprise Architecture: Large-scale Fargate deployments
  • Hybrid Solutions: Integration with on-premises systems
  • Multi-Region: Cross-region Fargate strategies
  • Cost Management: Advanced cost optimization techniques

Developer Associate (DVA-C02)

  • Application Development: Container-native development
  • CI/CD Integration: Automated deployment pipelines
  • Debugging: Troubleshooting containerized applications
  • Performance: Optimizing application performance

SysOps Administrator (SOA-C02)

  • Operational Management: Day-to-day Fargate operations
  • Monitoring Setup: Comprehensive monitoring strategies
  • Security Operations: Security best practices
  • Troubleshooting: Common operational issues

Common Exam Scenarios

  1. Scenario: Need to run containers without managing infrastructure Solution: Use Fargate for serverless container hosting

  2. Scenario: Variable workload with unpredictable traffic Solution: Fargate with auto scaling and load balancing

  3. Scenario: Secure multi-tenant application Solution: Fargate tasks with VPC isolation and IAM roles

  4. Scenario: Event-driven container processing Solution: Lambda triggers with Fargate tasks for processing

  5. Scenario: Cost-effective development environments Solution: Fargate for on-demand development containers

Hands-on Examples and CLI Commands

ECS Fargate Management

# Create Fargate cluster
aws ecs create-cluster \
  --cluster-name fargate-cluster \
  --capacity-providers FARGATE FARGATE_SPOT \
  --default-capacity-provider-strategy \
    capacityProvider=FARGATE,weight=1,base=1 \
    capacityProvider=FARGATE_SPOT,weight=4,base=0

# Register task definition
aws ecs register-task-definition \
  --cli-input-json file://fargate-task-definition.json

# Create service
aws ecs create-service \
  --cluster fargate-cluster \
  --service-name web-app-service \
  --task-definition web-app-fargate:1 \
  --desired-count 3 \
  --launch-type FARGATE \
  --platform-version 1.4.0 \
  --network-configuration '{
    "awsvpcConfiguration": {
      "subnets": ["subnet-12345", "subnet-67890"],
      "securityGroups": ["sg-web-app"],
      "assignPublicIp": "ENABLED"
    }
  }'

# Run one-time task
aws ecs run-task \
  --cluster fargate-cluster \
  --task-definition batch-job:1 \
  --launch-type FARGATE \
  --platform-version 1.4.0 \
  --network-configuration '{
    "awsvpcConfiguration": {
      "subnets": ["subnet-12345"],
      "securityGroups": ["sg-batch"],
      "assignPublicIp": "ENABLED"
    }
  }'

EKS Fargate Management

# Create EKS cluster with Fargate
eksctl create cluster \
  --name fargate-cluster \
  --region us-west-2 \
  --fargate

# Create Fargate profile
eksctl create fargateprofile \
  --cluster fargate-cluster \
  --name production-profile \
  --namespace production \
  --labels environment=production

# Deploy application to Fargate
kubectl apply -f - <<EOF
apiVersion: apps/v1
kind: Deployment
metadata:
  name: web-app
  namespace: production
spec:
  replicas: 3
  selector:
    matchLabels:
      app: web-app
  template:
    metadata:
      labels:
        app: web-app
        environment: production
    spec:
      containers:
      - name: web-app
        image: nginx:latest
        ports:
        - containerPort: 80
        resources:
          requests:
            memory: "256Mi"
            cpu: "250m"
          limits:
            memory: "512Mi"
            cpu: "500m"
EOF

# Create service
kubectl apply -f - <<EOF
apiVersion: v1
kind: Service
metadata:
  name: web-app-service
  namespace: production
spec:
  type: LoadBalancer
  ports:
  - port: 80
    targetPort: 80
  selector:
    app: web-app
EOF

Monitoring and Debugging

# Enable Container Insights
aws logs create-log-group \
  --log-group-name /aws/ecs/containerinsights/fargate-cluster/performance

# Get CloudWatch metrics
aws cloudwatch get-metric-statistics \
  --namespace AWS/ECS \
  --metric-name CPUUtilization \
  --dimensions Name=ServiceName,Value=web-app-service Name=ClusterName,Value=fargate-cluster \
  --statistics Average \
  --start-time 2023-01-01T00:00:00Z \
  --end-time 2023-01-01T23:59:59Z \
  --period 3600

# Get task logs
aws logs get-log-events \
  --log-group-name /ecs/web-app-fargate \
  --log-stream-name ecs/web-app/task-id

# Debug with ECS Exec
aws ecs execute-command \
  --cluster fargate-cluster \
  --task task-id \
  --container web-app \
  --interactive \
  --command "/bin/sh"

Cost Monitoring

# Get Fargate usage with Cost Explorer API
aws ce get-cost-and-usage \
  --time-period Start=2023-01-01,End=2023-01-31 \
  --granularity MONTHLY \
  --metrics BlendedCost \
  --group-by Type=DIMENSION,Key=SERVICE \
  --filter '{
    "Dimensions": {
      "Key": "SERVICE",
      "Values": ["Amazon Elastic Container Service"]
    }
  }'

# Set up billing alert
aws cloudwatch put-metric-alarm \
  --alarm-name "Fargate-High-Cost" \
  --alarm-description "Alert when Fargate costs exceed threshold" \
  --metric-name EstimatedCharges \
  --namespace AWS/Billing \
  --statistic Maximum \
  --period 86400 \
  --threshold 100 \
  --comparison-operator GreaterThanThreshold \
  --dimensions Name=Currency,Value=USD Name=ServiceName,Value=AmazonECS

This comprehensive Fargate documentation covers all aspects needed for AWS certification preparation, providing both theoretical knowledge and practical examples for serverless container management.