Remote destination
Configure Amazon S3 for WordPress backups.
Amazon S3 is a durable object storage service that works well for production WordPress backups, agency retention policies and larger sites that need scalable off-site storage.
What you need
- An Amazon Web Services account.
- Permission to create an S3 bucket.
- Permission to create IAM policies, IAM users and access keys.
- StifLi Backup Tools installed and activated.
- A planned bucket name, region and backup path prefix.
1. Create an Amazon S3 Bucket
- Sign in to the AWS Console.
- Open Services > S3.
- Click Create bucket.
- Enter a globally unique bucket name. A domain-based name such as example-com-stifli-backups is usually easy to recognize.
- Choose the AWS region where backups should be stored.
- Keep Block all public access enabled unless you have a very specific private network design.
- Leave bucket versioning disabled for a simple setup, or enable it if you intentionally want object version history.
- Enable default encryption if your compliance policy requires it.
- Create the bucket.
Important: backup buckets should not be public. A WordPress backup archive can contain the database, uploaded files, private content and credentials stored by plugins.
2. Create a Least-Privilege IAM Policy
Create a policy that allows StifLi Backup Tools to list the bucket, upload backup archives, read them for restore and delete old archives when retention runs.
- Open IAM in the AWS Console.
- Go to Policies.
- Click Create policy.
- Choose the JSON editor.
- Paste a policy like the one below, replacing BUCKET_NAME with your real bucket name.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:GetBucketLocation",
"s3:ListBucketMultipartUploads"
],
"Resource": "arn:aws:s3:::BUCKET_NAME"
},
{
"Effect": "Allow",
"Action": [
"s3:AbortMultipartUpload",
"s3:DeleteObject",
"s3:GetObject",
"s3:PutObject"
],
"Resource": "arn:aws:s3:::BUCKET_NAME/*"
}
]
}
- Click Next.
- Name the policy, for example StifLiBackupToolsS3Policy.
- Create the policy.
3. Create an IAM User and Access Keys
- Open IAM > Users.
- Click Create user.
- Name the user, for example stifli-backup-example-com.
- Choose direct policy attachment.
- Attach the policy created in the previous step.
- Create the user.
- Open the user and go to Security credentials.
- Create an access key.
- Choose a use case such as third-party application or external service if AWS asks.
- Copy the Access key ID and Secret access key, or download the CSV.
Do not use root credentials. Use a dedicated IAM user or role for backups so access can be rotated or revoked safely.
4. Connect Amazon S3 in StifLi Backup Tools
- Open the WordPress admin area.
- Go to StifLi Backup Tools > Remote Destinations.
- Select Amazon S3.
- Enter the Access key ID and Secret access key.
- Enter the bucket name.
- Select or enter the bucket region.
- Set a path prefix, such as production/example.com, if you want backups organized inside the bucket.
- Set the maximum number of remote backups to keep.
- Save and run Test connection.
5. Create the First S3 Backup
- Create a manual backup in StifLi Backup Tools.
- Select Amazon S3 as the remote destination.
- Wait for the backup and upload to complete.
- Open the S3 bucket in AWS Console.
- Confirm that the backup archive appears in the expected prefix.
- If this is a production site, download the archive once and verify it is readable.
6. Configure Scheduled Backups
- Create or edit a scheduled backup task.
- Choose the backup components: full site, database, uploads, plugins, themes or custom selection.
- Select Amazon S3 as the destination.
- Choose frequency and start time.
- Apply retention settings that match your bucket storage budget.
- Enable notifications so failed backups are visible quickly.
Troubleshooting
| Problem | What to check |
|---|---|
| Access denied | Confirm the IAM policy is attached to the user and that the bucket ARN matches the real bucket name. |
| Bucket not found | Check spelling, region and whether the bucket belongs to the same AWS account as the access key. |
| Upload fails on large files | Confirm multipart upload permissions and check hosting timeouts or memory limits. |
| Old backups are not deleted | Confirm the IAM policy includes s3:DeleteObject for the bucket path. |
| Unexpected AWS costs | Review backup frequency, retention, lifecycle rules, storage class and transfer usage. |
Security Notes
Keep the bucket private, use least-privilege IAM permissions, rotate access keys periodically and avoid storing backups in a public prefix. If your site handles sensitive data, consider encryption, lifecycle policies and separate credentials per site or client.
Best practice: combine StifLi Backup Tools retention with S3 lifecycle rules so operational backups stay available while old archives move or expire automatically.
