External Storage: Connect Your Own S3 or GCS Bucket

External Storage lets you store your app builds in your own cloud storage bucket instead of TestApp.io's default storage. This gives you full control over where your binaries are kept, which is essential for teams with data sovereignty, compliance, or company policy requirements.

Why Use External Storage?

By default, TestApp.io stores your uploaded builds securely. However, some teams need their data stored in specific locations or under specific controls. Common reasons to use External Storage include:

  • Data sovereignty: Keep your builds in a specific geographic region to comply with local regulations.
  • Compliance requirements: Meet HIPAA, GDPR, or other regulatory frameworks that require data to be stored in infrastructure you control.
  • Company policy: Some organizations require all artifacts to be stored in company-owned cloud accounts.
  • Backup and retention: Manage your own backup and retention policies for app builds.
Note: External Storage requires a Pro plan. Visit testapp.io/pricing for plan details.

Supported Providers

TestApp.io supports three cloud storage providers. Choose the one that matches your existing infrastructure.

Amazon S3

To connect an Amazon S3 bucket, you will need:

  • Bucket name — The name of your S3 bucket.
  • Region — The AWS region where your bucket is located (e.g., us-east-1, eu-west-1).
  • Access Key ID — Your AWS access key.
  • Secret Access Key — Your AWS secret key.

We recommend creating a dedicated IAM user with limited permissions scoped only to the target bucket. The user needs s3:PutObject, s3:GetObject, and s3:ListBucket permissions.

Google Cloud Storage (GCS)

To connect a Google Cloud Storage bucket, you will need:

  • Bucket name — The name of your GCS bucket.
  • Service Account JSON key — A JSON key file from a Google Cloud service account with access to the bucket.

Create a dedicated service account with the Storage Object Admin role on the target bucket for least-privilege access.

Backblaze B2

To connect a Backblaze B2 bucket, you will need:

  • Bucket name — The name of your B2 bucket.
  • Application Key ID — Your Backblaze application key ID.
  • Application Key — Your Backblaze application key.

We recommend creating an application key scoped to the specific bucket rather than using a master key.

Setup Steps

Follow these steps to configure External Storage for your team:

  1. Go to Team Settings in the TestApp.io portal.
  2. Click Storage in the settings sidebar.
  3. Click Configure External Storage.
  4. Select your storage provider (Amazon S3, Google Cloud Storage, or Backblaze B2).
  5. Enter the required credentials for your chosen provider (see details above).
  6. Click Validate — TestApp.io will test the connection to your bucket to ensure the credentials are correct and the bucket is accessible.
  7. Once validation passes, click Save to activate your configuration.

After saving, all new app builds will be stored in your bucket instead of TestApp.io's default storage.

Managing Your Storage Configuration

Once configured, you have several options for managing your External Storage.

Enable and Disable

You can toggle External Storage on or off without losing your configuration. When disabled, builds revert to TestApp.io's default storage. When re-enabled, your saved credentials are used again automatically. This is useful for testing or temporary changes.

Edit Configuration

Update your credentials, bucket name, or region at any time. Navigate to Team Settings → Storage and click Edit to modify your configuration. After editing, TestApp.io will re-validate the connection before saving.

Status Indicators

Your External Storage configuration shows a status indicator so you always know the current state:

  • Active (green) — External Storage is enabled and the connection is working correctly.
  • Disabled (grey) — External Storage is turned off. Your configuration is saved but not in use.
  • Error (red) — There is a connection issue. This could mean expired credentials, a deleted bucket, or a permissions change. Check your cloud provider settings and update your configuration.

Security Best Practices

  • Use dedicated credentials: Create a service account or IAM user specifically for TestApp.io. Do not reuse credentials from other services.
  • Apply least-privilege access: Grant only the permissions TestApp.io needs (read, write, and list on the specific bucket).
  • Rotate credentials regularly: Update your access keys periodically and re-validate the connection after each rotation.
  • Monitor access logs: Enable access logging on your bucket to track all read and write operations.

Troubleshooting

  • Validation fails: Double-check your bucket name, region, and credentials. Ensure the bucket exists and the credentials have the correct permissions.
  • Status shows Error: Your credentials may have expired or been revoked. Go to Team Settings → Storage, update your credentials, and re-validate.
  • Builds not appearing in your bucket: Confirm that External Storage status is Active (green). If it is Disabled, toggle it on.

Need help? Contact us and we'll get back to you shortly.