AWS DataSync¶
Service Overview and Purpose¶
AWS DataSync is a data transfer service that simplifies, automates, and accelerates moving large amounts of data between on-premises storage systems and AWS storage services, as well as between AWS storage services. DataSync automatically handles many of the tasks related to data transfers that can slow down migrations or burden IT operations.
Key Characteristics¶
- One-Time or Scheduled: Support for both migration and ongoing sync
- High Performance: Up to 10x faster than open-source tools
- Data Validation: Automatic verification and integrity checks
- Network Optimization: Built-in network optimization and bandwidth throttling
- Security: End-to-end encryption and AWS IAM integration
Key Features and Capabilities¶
Supported Data Sources and Destinations¶
Sources¶
- On-Premises Storage
- NFS: Network File System (v3, v4.0, v4.1)
- SMB: Server Message Block (v2.1, v3.0, v3.02, v3.1.1)
- HDFS: Hadoop Distributed File System
-
Object Storage: Self-managed object storage
-
AWS Storage Services
- S3: Any storage class
- EFS: Elastic File System
- FSx: Windows File Server, Lustre, NetApp ONTAP, OpenZFS
-
Snowcone: Edge computing device
-
Other Cloud Providers
- Google Cloud Storage
- Azure Blob Storage
- Azure Files
Destinations¶
- All AWS storage services listed above
- Cross-region transfers within AWS
- Cross-account transfers
Core Features¶
Data Transfer Capabilities¶
- Incremental Transfer: Only changed data transferred after initial sync
- Bandwidth Throttling: Control network utilization
- Parallel Transfers: Multiple parallel connections
- Compression: Automatic data compression during transfer
- Sparse File Support: Efficient handling of sparse files
Data Validation and Integrity¶
- Checksum Verification: End-to-end data integrity
- Transfer Logs: Detailed logging of all operations
- Error Handling: Automatic retry mechanisms
- Verification Reports: Post-transfer validation reports
Scheduling and Automation¶
- Flexible Scheduling: Hourly, daily, weekly schedules
- CloudWatch Events: Event-driven automation
- Task Management: Create, monitor, and manage transfer tasks
- API Integration: Programmatic control and automation
Security Features¶
- Encryption in Transit: TLS 1.2 encryption
- VPC Endpoints: Private network access
- IAM Integration: AWS identity and access management
- Data Filtering: Include/exclude patterns
Use Cases and Scenarios¶
Primary Use Cases¶
- Data Migration to AWS
- Lift and Shift: Migrate existing file systems to AWS
- Application Modernization: Move data as part of app migration
- Data Center Exit: Complete data center migration
-
Disaster Recovery: Establish cloud-based DR
-
Hybrid Cloud Architectures
- Data Distribution: Distribute data across locations
- Content Distribution: Replicate content to edge locations
- Backup and Archive: Regular backup to cloud storage
-
Multi-Site Synchronization: Keep multiple sites in sync
-
Data Processing Workflows
- Analytics Pipelines: Move data for analytics processing
- Machine Learning: Transfer datasets for ML workflows
- Media Workflows: Move media files for processing
-
Compliance: Replicate data for compliance requirements
-
Edge to Cloud Transfer
- IoT Data: Transfer IoT data from edge to cloud
- Remote Sites: Sync data from remote locations
- Branch Offices: Centralize branch office data
- Field Data Collection: Transfer field-collected data
Architecture Patterns¶
- One-Time Migration
- Initial data assessment
- Bandwidth planning
- Migration execution
-
Validation and cutover
-
Ongoing Synchronization
- Scheduled sync tasks
- Event-driven synchronization
- Incremental updates
-
Conflict resolution
-
Multi-Tier Data Movement
- Hot data to S3 Standard
- Warm data to S3 IA
- Cold data to Glacier
- Automated lifecycle management
Pricing Models and Cost Optimization¶
Pricing Components¶
- Data Transfer Charges
- Per GB transferred: $0.0125 per GB (first 50TB)
- Volume discounts: Lower rates for higher volumes
- No charges: For data already in AWS (between services)
-
Cross-region: Additional charges for cross-region transfers
-
Agent Costs
- No software licensing: DataSync agent is free
- Infrastructure costs: EC2 instance costs if deployed on EC2
-
On-premises: No additional costs for on-premises deployment
-
Storage Costs
- Destination storage: Standard AWS storage pricing
- Temporary storage: No charges for temporary staging
- Bandwidth: Network bandwidth costs if applicable
Cost Optimization Strategies¶
-
Transfer Optimization
# Monitor transfer efficiency aws datasync describe-task-execution \ --task-execution-arn arn:aws:datasync:region:account:task/task-id/execution/exec-id \ --query 'BytesTransferred' -
Scheduling Optimization
- Transfer during off-peak hours
- Use bandwidth throttling
- Optimize transfer frequency
-
Batch smaller transfers
-
Storage Class Optimization
- Transfer directly to appropriate S3 storage class
- Use Intelligent-Tiering for unknown access patterns
- Implement lifecycle policies post-transfer
-
Consider regional storage costs
-
Network Optimization
- Use VPC endpoints to avoid internet charges
- Optimize agent placement
- Use compression when beneficial
- Monitor and adjust bandwidth settings
Configuration Details and Best Practices¶
DataSync Agent Deployment¶
# Deploy agent on EC2 (using CloudFormation)
aws cloudformation create-stack \
--stack-name datasync-agent \
--template-body file://datasync-agent-template.yaml \
--parameters ParameterKey=InstanceType,ParameterValue=m5.2xlarge \
ParameterKey=SubnetId,ParameterValue=subnet-12345678 \
ParameterKey=SecurityGroupId,ParameterValue=sg-12345678
# Activate agent
aws datasync create-agent \
--agent-name "Production-DataSync-Agent" \
--activation-key "activation-key-from-console" \
--security-group-arns arn:aws:ec2:region:account:security-group/sg-12345678 \
--subnet-arns arn:aws:ec2:region:account:subnet/subnet-12345678 \
--tags Key=Environment,Value=Production
Location Configuration¶
# Create NFS location
aws datasync create-location-nfs \
--server-hostname 192.168.1.100 \
--subdirectory /data/exports/files \
--on-prem-config '{
"AgentArns": [
"arn:aws:datasync:region:account:agent/agent-12345678"
]
}' \
--mount-options '{
"Version": "NFS4_1"
}' \
--tags Key=LocationType,Value=Source
# Create S3 location
aws datasync create-location-s3 \
--s3-bucket-arn arn:aws:s3:::my-migration-bucket \
--s3-config '{
"BucketAccessRoleArn": "arn:aws:iam::account:role/DataSyncS3Role"
}' \
--s3-storage-class STANDARD_IA \
--tags Key=LocationType,Value=Destination
Task Configuration¶
# Create DataSync task
aws datasync create-task \
--source-location-arn arn:aws:datasync:region:account:location/loc-source123 \
--destination-location-arn arn:aws:datasync:region:account:location/loc-dest456 \
--name "Production-File-Migration" \
--options '{
"VerifyMode": "POINT_IN_TIME_CONSISTENT",
"OverwriteMode": "ALWAYS",
"Atime": "BEST_EFFORT",
"Mtime": "PRESERVE",
"Uid": "INT_VALUE",
"Gid": "INT_VALUE",
"PreserveDeletedFiles": "PRESERVE",
"PreserveDevices": "NONE",
"PosixPermissions": "PRESERVE",
"BytesPerSecond": 104857600,
"TaskQueueing": "ENABLED",
"LogLevel": "TRANSFER"
}' \
--excludes '{
"FilterType": "SIMPLE_PATTERN",
"Value": "*.tmp"
}' \
--includes '{
"FilterType": "SIMPLE_PATTERN",
"Value": "/important/*"
}' \
--tags Key=MigrationType,Value=Production Key=Priority,Value=High
Best Practices¶
- Agent Sizing and Placement
- Compute Resources: Minimum 4 vCPUs, 8GB RAM
- Network: 10 Gbps network for high-throughput transfers
- Storage: Local storage for temporary staging
-
Placement: Close to source data for optimal performance
-
Network Configuration
- Dedicated Network: Use dedicated network paths when possible
- Bandwidth Management: Configure appropriate bandwidth limits
- Security Groups: Proper firewall configuration
-
VPC Endpoints: Use for private connectivity
-
Transfer Optimization
- File System Tuning: Optimize source file system performance
- Concurrent Transfers: Use multiple tasks for large datasets
- Scheduling: Transfer during off-peak hours
-
Monitoring: Continuous monitoring of transfer performance
-
Security Configuration
- IAM Roles: Least privilege access principles
- Encryption: Enable encryption in transit
- Network Security: Use private networking when possible
- Access Logging: Enable CloudTrail for audit
Task Scheduling¶
# Create scheduled task using CloudWatch Events
aws events put-rule \
--name "DataSync-Daily-Backup" \
--schedule-expression "cron(0 2 * * ? *)" \
--description "Daily DataSync backup at 2 AM"
aws events put-targets \
--rule "DataSync-Daily-Backup" \
--targets Id=1,Arn=arn:aws:datasync:region:account:task/task-12345678,RoleArn=arn:aws:iam::account:role/DataSyncExecutionRole
Integration with Other AWS Services¶
Storage Service Integration¶
-
S3 Integration
# Create location with S3 storage class aws datasync create-location-s3 \ --s3-bucket-arn arn:aws:s3:::analytics-data \ --s3-storage-class GLACIER \ --s3-config '{ "BucketAccessRoleArn": "arn:aws:iam::account:role/DataSyncS3Role" }' -
EFS Integration
# Create EFS location aws datasync create-location-efs \ --efs-filesystem-arn arn:aws:elasticfilesystem:region:account:file-system/fs-12345678 \ --ec2-config '{ "SubnetArn": "arn:aws:ec2:region:account:subnet/subnet-12345678", "SecurityGroupArns": [ "arn:aws:ec2:region:account:security-group/sg-12345678" ] }' \ --access-point-arn arn:aws:elasticfilesystem:region:account:access-point/fsap-12345678 -
FSx Integration
# Create FSx Windows location aws datasync create-location-fsx-windows \ --fsx-filesystem-arn arn:aws:fsx:region:account:file-system/fs-12345678 \ --security-group-arns arn:aws:ec2:region:account:security-group/sg-12345678 \ --user Administrator \ --domain corp.example.com \ --password SecurePassword123!
Automation and Orchestration¶
# Lambda function for automated DataSync execution
import boto3
import json
def lambda_handler(event, context):
datasync = boto3.client('datasync')
# Start task execution
response = datasync.start_task_execution(
TaskArn='arn:aws:datasync:region:account:task/task-12345678',
OverrideOptions={
'VerifyMode': 'POINT_IN_TIME_CONSISTENT',
'LogLevel': 'TRANSFER'
}
)
return {
'statusCode': 200,
'body': json.dumps({
'TaskExecutionArn': response['TaskExecutionArn']
})
}
Monitoring Integration¶
# Create CloudWatch alarm for task failures
aws cloudwatch put-metric-alarm \
--alarm-name "DataSync-Task-Failures" \
--alarm-description "Alert on DataSync task failures" \
--metric-name "TaskExecutionsFailed" \
--namespace "AWS/DataSync" \
--statistic Sum \
--period 3600 \
--threshold 1 \
--comparison-operator GreaterThanOrEqualToThreshold \
--dimensions Name=TaskId,Value=task-12345678 \
--alarm-actions arn:aws:sns:region:account:datasync-alerts
Workflow Integration¶
- Step Functions: Orchestrate complex data workflows
- AWS Batch: Coordinate with batch processing jobs
- SageMaker: Automate ML dataset preparation
- EMR: Trigger big data processing after transfer
Security Considerations¶
Data Protection¶
- Encryption in Transit
- TLS 1.2: All data encrypted during transfer
- Certificate Management: Automatic certificate handling
- VPC Endpoints: Private network encryption
-
Protocol Security: Secure protocol implementations
-
Access Control
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "datasync:DescribeTask", "datasync:StartTaskExecution" ], "Resource": "arn:aws:datasync:*:*:task/task-*", "Condition": { "StringEquals": { "aws:RequestedRegion": ["us-west-2", "us-east-1"] } } }] } -
Network Security
- VPC Deployment: Deploy agents in private subnets
- Security Groups: Restrict network access
- NACLs: Additional network layer security
- VPC Endpoints: Private API access
Compliance and Auditing¶
-
Audit Trails
# Enable CloudTrail for DataSync operations aws cloudtrail create-trail \ --name "DataSync-Audit-Trail" \ --s3-bucket-name "audit-logs-bucket" \ --include-global-service-events \ --is-multi-region-trail \ --enable-log-file-validation -
Data Validation
- Checksum Verification: Automatic integrity checks
- Transfer Logs: Detailed operation logging
- Error Reporting: Comprehensive error tracking
-
Validation Reports: Post-transfer verification
-
Compliance Features
- HIPAA Compliance: Healthcare data transfers
- PCI DSS: Payment card data protection
- GDPR: European data protection compliance
- SOC Compliance: Service organization controls
Monitoring and Troubleshooting¶
CloudWatch Metrics¶
Task Metrics¶
- TaskExecutionsStarted: Number of task executions started
- TaskExecutionsSucceeded: Successfully completed executions
- TaskExecutionsFailed: Failed task executions
- FilesTransferred: Number of files transferred
- BytesTransferred: Amount of data transferred
Performance Metrics¶
- ThroughputPerSecond: Data transfer rate
- FilesPerSecond: File transfer rate
- ErrorRate: Percentage of transfer errors
- Duration: Task execution duration
Agent Metrics¶
- AgentOnline: Agent availability status
- NetworkUtilization: Network bandwidth usage
- CPUUtilization: Agent CPU usage
- MemoryUtilization: Agent memory usage
Monitoring Setup¶
# Create comprehensive monitoring dashboard
aws cloudwatch put-dashboard \
--dashboard-name "DataSync-Monitoring" \
--dashboard-body '{
"widgets": [{
"type": "metric",
"properties": {
"metrics": [
["AWS/DataSync", "BytesTransferred", "TaskId", "task-12345678"],
[".", "FilesTransferred", ".", "."],
[".", "ThroughputPerSecond", ".", "."]
],
"period": 300,
"stat": "Sum",
"region": "us-west-2",
"title": "DataSync Transfer Performance"
}
}]
}'
# Set up task completion notification
aws sns create-topic --name "DataSync-Notifications"
aws events put-rule \
--name "DataSync-Task-Completion" \
--event-pattern '{
"source": ["aws.datasync"],
"detail-type": ["DataSync Task Execution State Change"],
"detail": {
"State": ["SUCCESS", "ERROR"]
}
}'
Common Issues and Solutions¶
- Performance Issues
- Network Bandwidth: Verify available bandwidth
- Agent Resources: Check CPU and memory utilization
- File System Performance: Optimize source file system
-
Concurrent Operations: Limit concurrent transfers
-
Connectivity Issues
- Agent Communication: Verify agent registration
- Network Configuration: Check security groups and NACLs
- DNS Resolution: Verify hostname resolution
-
Port Accessibility: Ensure required ports are open
-
Transfer Failures
- Permissions: Verify IAM roles and policies
- Storage Capacity: Check destination storage capacity
- File Locks: Release locked files on source
- Network Interruptions: Monitor network stability
Troubleshooting Commands¶
# Check task execution details
aws datasync describe-task-execution \
--task-execution-arn arn:aws:datasync:region:account:task/task-id/execution/exec-id
# List task executions with filtering
aws datasync list-task-executions \
--task-arn arn:aws:datasync:region:account:task/task-12345678 \
--max-results 10
# Verify agent status
aws datasync describe-agent \
--agent-arn arn:aws:datasync:region:account:agent/agent-12345678
# Check location connectivity
aws datasync describe-location-nfs \
--location-arn arn:aws:datasync:region:account:location/loc-12345678
# Monitor transfer progress
aws datasync describe-task \
--task-arn arn:aws:datasync:region:account:task/task-12345678 \
--query 'Status'
Exam-Specific Tips and Common Scenarios¶
Key Exam Topics¶
- Use Case Selection
- Migration vs synchronization scenarios
- One-time vs ongoing transfer requirements
- Performance vs cost considerations
-
Supported protocols and systems
-
Architecture Design
- Agent placement and sizing
- Network configuration and optimization
- Security and compliance requirements
-
Integration with other AWS services
-
Performance Optimization
- Bandwidth management and throttling
- Concurrent transfer strategies
- Network optimization techniques
- Transfer scheduling and automation
Common Exam Scenarios¶
- Data Center Migration
- Large-scale file system migration
- Minimal downtime requirements
- Network bandwidth limitations
-
Validation and cutover strategies
-
Hybrid Cloud Synchronization
- Ongoing data synchronization
- Multi-site data distribution
- Backup and disaster recovery
-
Content distribution networks
-
Analytics Data Pipeline
- Regular data ingestion for analytics
- Data lake population
- ML dataset preparation
-
Real-time vs batch processing
-
Compliance and Archival
- Long-term data retention
- Regulatory compliance requirements
- Data integrity and validation
- Audit trail maintenance
Exam Tips¶
- Know supported protocols and their limitations
- Understand agent requirements and deployment options
- Remember performance factors affecting transfer speed
- Know integration patterns with AWS storage services
- Understand security features and compliance capabilities
Hands-on Examples and CLI Commands¶
Complete Migration Workflow¶
# 1. Create and activate agent
aws datasync create-agent \
--agent-name "Migration-Agent" \
--activation-key "ABCDEF123456" \
--tags Key=Project,Value=DataCenterMigration
# 2. Create source location (NFS)
aws datasync create-location-nfs \
--server-hostname file-server.company.local \
--subdirectory /data/shared \
--on-prem-config '{
"AgentArns": ["arn:aws:datasync:region:account:agent/agent-12345678"]
}' \
--tags Key=LocationType,Value=Source
# 3. Create destination location (S3)
aws datasync create-location-s3 \
--s3-bucket-arn arn:aws:s3:::company-data-migration \
--s3-config '{
"BucketAccessRoleArn": "arn:aws:iam::account:role/DataSyncS3Role"
}' \
--s3-storage-class STANDARD_IA \
--tags Key=LocationType,Value=Destination
# 4. Create migration task
aws datasync create-task \
--source-location-arn arn:aws:datasync:region:account:location/loc-source123 \
--destination-location-arn arn:aws:datasync:region:account:location/loc-dest456 \
--name "File-Server-Migration" \
--options '{
"VerifyMode": "POINT_IN_TIME_CONSISTENT",
"OverwriteMode": "ALWAYS",
"PreserveDeletedFiles": "PRESERVE",
"PosixPermissions": "PRESERVE",
"BytesPerSecond": 209715200,
"LogLevel": "TRANSFER"
}' \
--excludes '{
"FilterType": "SIMPLE_PATTERN",
"Value": "*.log"
}' \
--tags Key=MigrationType,Value=Production
# 5. Start task execution
aws datasync start-task-execution \
--task-arn arn:aws:datasync:region:account:task/task-12345678 \
--override-options '{
"VerifyMode": "POINT_IN_TIME_CONSISTENT"
}'
# 6. Monitor execution progress
aws datasync describe-task-execution \
--task-execution-arn arn:aws:datasync:region:account:task/task-id/execution/exec-id
Advanced Configuration Examples¶
# Create task with comprehensive filtering
aws datasync create-task \
--source-location-arn arn:aws:datasync:region:account:location/loc-source123 \
--destination-location-arn arn:aws:datasync:region:account:location/loc-dest456 \
--name "Selective-Sync-Task" \
--includes '{
"FilterType": "SIMPLE_PATTERN",
"Value": "/production/*"
}' '{
"FilterType": "SIMPLE_PATTERN",
"Value": "*.pdf"
}' \
--excludes '{
"FilterType": "SIMPLE_PATTERN",
"Value": "*.tmp"
}' '{
"FilterType": "SIMPLE_PATTERN",
"Value": "/temp/*"
}' \
--options '{
"TaskQueueing": "ENABLED",
"BytesPerSecond": 104857600,
"LogLevel": "TRANSFER"
}'
# Set up automated scheduling with Lambda
aws lambda create-function \
--function-name "DataSync-Scheduler" \
--runtime "python3.9" \
--role "arn:aws:iam::account:role/DataSyncLambdaRole" \
--handler "lambda_function.lambda_handler" \
--zip-file "fileb://datasync-scheduler.zip" \
--environment Variables='{TASK_ARN=arn:aws:datasync:region:account:task/task-12345678}'
This comprehensive DataSync documentation provides detailed coverage of all aspects needed for AWS certification exams, including practical examples and real-world migration scenarios.