Amazon S3 Storage
Note: the current SL Migrations build does not include Amazon S3 or other cloud storage (those SDKs were removed from this build); only Local and FTP/SFTP are available. This article is kept for reference and does not apply to the current build.
1. Create an S3 bucket
- Sign in to the AWS Console → S3
- Click Create bucket
- Bucket name: a globally unique name (for example
sl-migrations-backup-yourname) - Region: choose the region closest to your WordPress server
- Block all public access: LEAVE IT ON (do not disable it)
- Versioning: Disabled (saves storage)
- Create
2. Create an IAM user
- AWS Console → IAM → Users → Add users
- Name:
sl-migrations-backup - Access type: Programmatic access
- Permissions → Attach policies directly → Create policy (see IAM Policy Setup)
- Save the Access Key ID and Secret Access Key
3. Add the storage in the plugin
SL Migrations → Storage → Add New → Amazon S3:
| Field | Value |
|---|---|
| Storage Name | A display name, for example "S3 Backup" |
| Access Key | From IAM, step 2 |
| Secret Key | From IAM, step 2 |
| Bucket | The bucket name |
| Region | The bucket's region |
| Storage Folder | backups/ (optional) |
Click Test Connection → you should see success.
Save.
4. Configure the storage for a package
Packages → Create New → Storage → tick "S3 Backup".
The plugin will:
- Build the archive locally
- Upload it to S3 once the build finishes
- (Optional) Delete the local copy after a successful upload
5. Restore from S3
Packages → Import → From Storage → choose S3 → list the archives → pick an archive → Import.
Or download it locally first through the AWS Console or the AWS CLI:
aws s3 cp s3://your-bucket/backups/archive.daf .
Retention policy
The plugin can delete old backups automatically:
Storage → Edit S3 → Max Packages: the number of backups to keep in S3. When the limit is exceeded, the plugin deletes the oldest backup.
Lifecycle rule on S3 (recommended)
Set up a lifecycle rule on the bucket to move old backups to Glacier automatically (cheaper):
{
"Rules": [{
"Id": "Move to Glacier after 30 days",
"Status": "Enabled",
"Filter": { "Prefix": "backups/" },
"Transitions": [{
"Days": 30,
"StorageClass": "GLACIER"
}]
}]
}