# Custom Storage Regions

> Configure custom storage regions in AWS S3 and GCP for your Applivery account to control where your Build files are stored.

Source: https://docs.applivery.com/en/app-distribution/builds/custom-storage-regions/  •  Last updated: 2026-04-18

**Key topics:** AWS S3 configuration, GCP Cloud Storage configuration, Applivery storage settings, Applivery, AWS S3, GCP Cloud Storage, Amazon Web Services, Google Cloud Platform

---

**TL;DR:** Configure custom storage regions in AWS S3 or GCP for your Applivery account by following this step-by-step guide.

:::warning
This is a premium feature that might not be available in your current plan. Check the availability on our [pricing page](https://www.applivery.com/pricing/).
:::

Customers can now manage their own [Storage regions](/mobile-app-distribution/storage-regions/) in [AWS S3](#aws-s3) and [GCP Cloud Storage](#gcp-cloud-storage). This tutorial will help you properly configure your custom Storage region in AWS and GCP.

## AWS S3

### Bucket creation

**Log in to AWS**

Log in to your [Amazon Web Services console](https://console.aws.amazon.com/) with your credentials.

**Navigate to S3**

Go to the **Storage > S3** section.

**Create a bucket**

Click the **Create bucket** orange button.

**Fill out bucket information**

Fill out your bucket information (Bucket name and Region).

![s3-custom-bucket-name | Applivery](https://docs.applivery.com/int/_r2/media/09ac0a4e-3ad8-478f-9f15-3474973eec71/df0f395b-d3b0-4d4e-bfe7-fc39932a86fe.png)

**Configure Public Access**

Scroll down until the **Block Public Access settings for bucket** section and select the following two options:

-   Block public access to buckets and objects granted through new public buckets or access point Policies.
    
-   Block public and cross-account access to buckets and objects through any public bucket or access point Policies.
    
-   I acknowledge that the current settings might result in this bucket and the objects within becoming public.
    

![s3-custom-bucket-security | Applivery](https://docs.applivery.com/int/_r2/media/09ac0a4e-3ad8-478f-9f15-3474973eec71/40eb86d0-5a52-4534-9848-f6c47d0579ec.png)

**Create the bucket**

Scroll down and click the **Create bucket** orange button.

### Credentials configuration

**Create a new AWS User**

We recommend creating **a new AWS User** and credentials. Go to **AWS IAM > Users** section and click the **Add user** button.

**Select User Type**

Select a user name and choose the **Programmatic access** option under the access type section.

![s3-custom-bucket-user | Applivery](https://docs.applivery.com/int/_r2/media/09ac0a4e-3ad8-478f-9f15-3474973eec71/260914eb-a80b-4096-a123-1f4760264076.png)

**Follow the wizard**

Click **Next**, and follow steps 2, 3, and 4 without changing anything, maintaining the default options, and finish by clicking the **Create user** button.

**Store Credentials**

The user credentials will be displayed, copied, and stored securely. You will have to provide them to our team.

![s3-custom-bucket-credentials | Applivery](https://docs.applivery.com/int/_r2/media/09ac0a4e-3ad8-478f-9f15-3474973eec71/648a8e9f-ba6a-47c7-9938-1054bccd68c8.png)

### Grant permissions

**Add Inline Policy**

Now we have to grant some additional permissions to the new user. For this example, we will use the Inline AWS Policies, but as an alternative, you can create a new Policy and attach it to the user.

Click on the new user and click **Add inline policy** under the Permissions tab.

**Use JSON Editor**

Use the **{} JSON** editor and enter the following AWS Policy:

```json
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject",
                "s3:DeleteObject",
                "s3:GetBucketLocation",
                "s3:PutObjectAcl"
            ],
            "Resource": [
                "arn:aws:s3:::mycustom-private-bucket",
                "arn:aws:s3:::mycustom-private-bucket/*"
            ]
        }
    ]
}
```

:::warning
Note that you have to substitute the `arn:aws:s3:::mycustom-private-bucket` with the ARN of the bucket you created in the previous step.
:::

### Select your new Storage region

**Access Storage configuration**

Once created, a new record will be added to the list, easily identifiable as it will be displayed as a **You** or **Managed by** title.

**Configure Storage region**

You can configure your Custom Storage Region at the Workspace or App levels:

-   **Workspace:** The configuration will be applied to the entire Workspace. It will apply to all Apps except those that already have a Custom Storage region configured. To do so, just click **Select** on this screen to enable it at the entire Workspace level.
    
-   **App:** The configuration will be applied just to this App, regardless of the Workspace configuration. To do so, go to your **App Settings > Advanced** and **Select** the Storage provider you’d like.

:::info
Only the new Builds uploaded will be stored in the new region. Previous ones will remain in the same place.
:::

## GCP Cloud Storage

### Create a service account

**Log in to GCP**

Log in to your [Google Cloud console](https://console.cloud.google.com/) with your credentials.

**Navigate to Service Accounts**

Go to the **IAM > Service Accounts** section and click the **Create service account** button.

**Fill out Service Account Information**

Fill out **Step 1** with your service account information. You can safely **skip Steps 2** and 3 for now. Then click **Done**.

![step1-gcp-serviceaccount-001 | Applivery](https://docs.applivery.com/int/_r2/media/09ac0a4e-3ad8-478f-9f15-3474973eec71/c888ba1f-083f-481e-aec2-9e2c55bcf1e5.png)

**Create Key**

Once the service account has been created, click the **CREATE KEY** button.

**Navigate to Cloud Storage Interoperability**

Now, navigate to **Cloud Storage** in the GCP products menu, then click **Settings > Interoperability**.

**Create Key for Service Account**

Then scroll down to **Service account HMAC** and click **+CREATE A KEY FOR ANOTHER SERVICE ACCOUNT**.

![step1-gcp-cloudstorage-interoperability | Applivery](https://docs.applivery.com/int/_r2/media/09ac0a4e-3ad8-478f-9f15-3474973eec71/4209fb9f-ee32-479a-b02c-34e0f90fb9c3.png)

**Select Service Account**

Use the filtering options to find the Service Account that you generated in the previous step. Select it and then click **CREATE KEY**.

![step1-gcp-serviceaccount-004 | Applivery](https://docs.applivery.com/int/_r2/media/09ac0a4e-3ad8-478f-9f15-3474973eec71/ff2ccaae-1bf5-406b-8238-9ab8b48f99e0.png)

**Save Credentials**

A new **Access key** and **Secret** pair will be generated. Save these values for later.

![step1-gcp-serviceaccount-005 | Applivery](https://docs.applivery.com/int/_r2/media/09ac0a4e-3ad8-478f-9f15-3474973eec71/6e63f445-1343-4448-9c8b-2914a154418b.png)

### Create a Cloud Storage bucket

**Navigate to Cloud Storage**

Now navigate to **Cloud Storage**, from the products menu, and click **Create bucket**.

**Fill out Bucket Name**

Fill out the bucket name and click **CONTINUE**.

![step2-gcp-cloudstorage-001 | Applivery](https://docs.applivery.com/int/_r2/media/09ac0a4e-3ad8-478f-9f15-3474973eec71/ffcfc277-3c55-4d42-8d9a-f0c2b0b8f2b3.png)

**Choose Storage Location**

Choose **where to store your data** from the available regions. You can choose regional storage, dual storage, and multi-region storage.

![step2-gcp-cloudstorage-002 | Applivery](https://docs.applivery.com/int/_r2/media/09ac0a4e-3ad8-478f-9f15-3474973eec71/0a0f442f-ca33-44aa-8471-c548727ce599.png)

**Choose Storage Class**

Next, choose the **storage class**. We recommend using the “autoclass” option provided by GCP that automatically transitions each object to Standard or Nearline class based on object-level activity, to optimise for cost and latency. Recommended if usage frequency may be unpredictable.

![step2-gcp-cloudstorage-003 | Applivery](https://docs.applivery.com/int/_r2/media/09ac0a4e-3ad8-478f-9f15-3474973eec71/a32075ce-0e2a-4fc3-a60c-d780c5609783.png)

**Define Access Control**

Define an **access control** policy that must be set to “**Fine-grained**” as Applivery will define individual access Policies for each object.

![step2-gcp-cloudstorage-004 | Applivery](https://docs.applivery.com/int/_r2/media/09ac0a4e-3ad8-478f-9f15-3474973eec71/07b33c35-d1c7-457d-b2b6-36881a2c352b.png)

**Configure Data Protection**

Under **data protection**, we recommend choosing “**Soft-delete policy**” and then “**Use default retention duration**“. Then click the **CREATE** button to finish.

![step2-gcp-cloudstorage-005 | Applivery](https://docs.applivery.com/int/_r2/media/09ac0a4e-3ad8-478f-9f15-3474973eec71/24a6eb9f-32bd-4654-84bd-590b15f7f5aa.png)

### Update bucket permissions

**Navigate to Bucket Permissions**

Now go to **Buckets**, select the bucket recently created, and click **PERMISSIONS**.

**Grant Access**

Click **+GRANT ACCESS**.

![step3-gcp-cloudstorage-001 | Applivery](https://docs.applivery.com/int/_r2/media/09ac0a4e-3ad8-478f-9f15-3474973eec71/6d0aeda2-2578-4e23-8a09-b01e61d98cc6.png)

**Assign Storage Object User Role**

In the side panel, search for the service account under “**New principals**” and assign the “**Storage Object User**” role. Then click **SAVE**.

![step3-gcp-cloudstorage-002 | Applivery](https://docs.applivery.com/int/_r2/media/09ac0a4e-3ad8-478f-9f15-3474973eec71/10c815a6-1327-4b78-999a-14c2a1bee7ed.png)

## Configure your Custom Storage Region in Applivery

**Navigate to Storage Settings**

Now that the AWS S3 or GCP Cloud Storage configuration is complete, open the top dropdown menu and access your **Workspace Settings** 1 in the [**Applivery Dashboard**](https://dashboard.applivery.io/). Then select **Storage** 2 from the left-hand menu and click the **\+ Create storage provider** 3 button.

![storage](https://docs.applivery.com/int/_r2/media/09ac0a4e-3ad8-478f-9f15-3474973eec71/fc462070-7468-4b8d-9459-6087d2211dd0.png)

**Complete the Form**

Complete the form with the information you generated in the previous steps. Then click the Save button.

![create storage provider](https://docs.applivery.com/int/_r2/media/09ac0a4e-3ad8-478f-9f15-3474973eec71/383de2b9-305a-4574-a9f5-7a258ed9ab2a.png)

## Enabling storage buckets

You can switch between storage regions by just clicking the Select button beside every storage region.

## Testing new configurations

You can use the bug icon located on each Storage region to test the proper configuration of the bucket. Applivery will run a series of tests that will confirm if the bucket has been properly configured.

![step4-gcp-cloudstorage-applivery-002 | Applivery](https://docs.applivery.com/int/_r2/media/09ac0a4e-3ad8-478f-9f15-3474973eec71/ea2bd444-bb83-482d-a28b-94547dfff94e.png)

A successful test will look like this:

![storage check](https://docs.applivery.com/int/_r2/media/09ac0a4e-3ad8-478f-9f15-3474973eec71/92daa6b6-da1b-4b35-b6cb-2e68fbed4a55.png)

## Disabling a Custom Storage Region

You can disable a Custom Storage Region by clicking the **Select** button of the default storage region (Ireland).

## Removing a Custom Storage Region

You can permanently remove a Custom Storage Region by clicking the **pencil button** 4 beside it and then the **Delete** 5 button at the bottom of the modal view. The Storage Region will be permanently removed from the system.

![delete storage provider](https://docs.applivery.com/int/_r2/media/09ac0a4e-3ad8-478f-9f15-3474973eec71/0146cf90-9ae5-460d-a356-ff23a58951da.png)

:::info
The Builds uploaded to this storage will not be accessible anymore.
:::
