# Validating Storage Integrations

After setting up a storage integration between Ango Hub and a supported provider, verifying that the integration is correctly configured before using it in a project will help catch errors before they reach production.

This page explains how to validate your storage integration, either as you create the integration for the first time or after you've already created it.

## Validating your Storage Integration during Creation

As you follow the steps outlined in the page detailing how to create a storage integration for each provider ([AWS S3](/data/storages/importing-private-cloud-assets-aws.md), [Microsoft Azure](/data/storages/set-up-a-storage-integration-with-azure.md), [Google Cloud Platform](/data/storages/importing-private-cloud-assets-gcp.md)), you will reach a point where, after entering your integration's credentials and clicking on "Next", you will be displayed the following dialog:

<figure><img src="/files/PBc8oeFdHXn1os6tuM6B" alt=""><figcaption></figcaption></figure>

This is the validation dialog. If you wish to skip validation altogether, you may click on "Create Storage to finalize the creation of the storage integration.

To instead proceed to validation, please follow the instructions in the [Using the Validation Dialog](#using-the-validation-dialog) section below.

## Validating your Existing Storage Integration

From your Organization page, enter the *Storages* tab. Click on the three dots to the right of the row representing the storage integration you'd like to validate. The following dialog will appear, mostly filled in:

<figure><img src="/files/2Gcz3Ox36Tb9ApQN45o7" alt=""><figcaption></figcaption></figure>

Complete filling in the dialog and click on "Next". You will see the following dialog:

<figure><img src="/files/PBc8oeFdHXn1os6tuM6B" alt=""><figcaption></figcaption></figure>

To proceed with validation, please follow the instructions in the [Using the Validation Dialog](#using-the-validation-dialog) section below.

## Using the Validation Dialog

The validation dialog has three main sections:

* [Validate Read Access](#validate-read-access)
* [Validate Write Access](#validate-write-access)
* [Validate CORS Configuration](#validate-cors-configuration)

### Validate Read Access

Validate Read Access will help you check whether Ango Hub can read from the storage. This is necessary in order to import assets, use [File Explorer](/data/importing-assets/file-explorer.md), and anything that has to do with detecting and using existing files in the storage.

To validate read access, copy the URL to a file in your storage. This URL will, for example, look something like this (for AWS S3):

`https://angohub-docs-assets.s3.eu-central-1.amazonaws.com/demo-assets/circle.png`

Then, paste it in the text field above the *Validate Read Access* button and click on *Validate Read Access*. If the storage was configured correctly, you will see a green *Access Valid* message. If not, you will see an error. Please consult the [Possible Errors](#possible-errors) section for how to troubleshoot any error you might encounter.

### Validate Write Access

Validate Write Access will help you check whether Ango Hub can create new files in the connected storage.

To validate write access, write the name of a bucket or container in the storage integration you have just created, then click on *Create 'ango-test.txt' in bucket root*. Ango Hub will attempt to create a file named *ango-test.txt* in the bucket's root. If write access for the storage was configured correctly, you will see a green *Access Valid* message. If not, you will see an error. Please consult the [Possible Errors](#possible-errors) section for how to troubleshoot any error you might encounter.

### Validate CORS Configuration

{% hint style="warning" %}
Please successfully validate the storage's read access *before* validating the CORS configuration.

Failure to do so may result in incorrect error messages being displayed.
{% endhint %}

Validate CORS Configuration is essential to ensure that imported assets (images, videos, and any other asset type) can be displayed on Ango Hub.

To validate the CORS configuration, copy the URL to a file in your storage. This URL will, for example, look something like this (for AWS S3):

`https://angohub-docs-assets.s3.eu-central-1.amazonaws.com/demo-assets/circle.png`

Then, paste it in the text field above the *Validate CORS Configuration* button and click on it.

If the storage was configured correctly, you will see a green message. If not, you will see an error. Please consult the [Possible Errors](#possible-errors) section for how to troubleshoot any error you might encounter.

## Possible Errors

<table data-full-width="true"><thead><tr><th>Error Message</th><th>Cause</th><th>Potential Solution</th></tr></thead><tbody><tr><td>Azure, GCP:<br><em>Bucket is not in this region</em><br><br>AWS S3:<br><em>Bucket is not in this region, use {correct-region}</em></td><td>The selected region does not match the region of the one obtained from the credentials.</td><td>Navigate back to the storage integration configuration dialog and change the selected region.</td></tr><tr><td>Azure, GCP:<br><em>Incorrect region</em><br><br>AWS S3:<br><em>Bucket is not in this region, use {correct-region}</em></td><td>The "region" string provided is invalid.</td><td>Navigate back to the storage integration configuration dialog and change the selected region.</td></tr><tr><td><em>Access key ID is incorrect</em></td><td><p>The provided Access Key ID is not correct.</p><ul><li>There may be a typo</li><li>The key might be expired or revoked</li><li>The secret key &#x26; access key pair may not be matching</li></ul></td><td>Navigate back to the storage integration configuration dialog and change the access key to the correct one.</td></tr><tr><td><em>Secret key is probably incorrect</em></td><td>While this is a generic error message, it indicates that the most likely culprit is an incorrect secret key.</td><td>Navigate back to the storage integration configuration dialog and change the secret key to the correct one. If the error persists, contact support.</td></tr><tr><td>Azure:<br><em>Authentication failed</em></td><td>The account key provided is incorrect.</td><td>Navigate back to the storage integration configuration dialog and change the account key to the correct one.</td></tr><tr><td><em>Object does not exist</em></td><td>The object the URL is pointing to does not exist.</td><td>Provide a URL to an object that exists in the storage.</td></tr><tr><td><em>Bucket does not exist</em><br><br>Azure:<br><em>Container not found</em></td><td>The bucket/container provided does not exist.</td><td>Provide the name of a bucket/container that exists in the storage.</td></tr><tr><td><em>Bucket name is incorrect</em></td><td>You have provided a bucket name that cannot possibly exist in the storage service you have selected.</td><td>Provide the name of a bucket/container that exists in the storage.</td></tr><tr><td><em>Access denied</em></td><td><p>If this is a read validation, it means that the IAM user for S3 and GCS &#x26; the storage account for the Azure is not given the correct read permissions to access the file.<br></p><p>If this is a write validation, it means that the IAM user for S3 and GCS &#x26; the storage account for the Azure is not given the correct write permissions to write to the bucket.</p></td><td>Navigate to the dashboard of your storage provider and ensure you have given Ango Hub the correct permissions. More info on each individual page: <a href="/pages/hbtg5bVSyV8DrmV78xE2">Azure</a>, <a href="/pages/Z1Ej1DCknBtIDAkVqyAT">AWS S3</a>, <a href="/pages/5fAbIOnL2Ums7qRPg2Hc">GCP</a>.</td></tr><tr><td><em>Network error: Address not found</em></td><td><p>It suggests that we can’t access the object with the given URL because the URL does not exist.<br><br>The most likely case occurs when the account name is incorrectly typed with Azure.<br><br>It might also be because of:</p><ul><li>No internet or DNS issues</li><li>The domain name is incorrect or does not exist</li></ul></td><td>Ensure your internet connection is working, and ensure the URL has been typed correctly.</td></tr><tr><td><em>No response: Possible networking or endpoint issue</em></td><td><p>We tried to send the request to the providers servers (to get the object or to write the object), but somehow we didn’t receive any response.<br></p><p>Please try again later &#x26; make sure the region selection is correct. For Azure check account name as well.<br></p><p>Possible causes:</p><ul><li>The server crashed or is overloaded</li><li>The request is taking too long, leading to a timeout</li></ul></td><td>Try again later, and ensure the region is correct.</td></tr><tr><td><em>A network error occured. This might be due to a CORS configuration issue</em></td><td><p>For security limitations it is impossible to tell whether a network error is definitely related to CORS, but this error might suggest it is most likely due to CORS.<br></p><p>Occurs when validating CORS. We can’t access the object URL, this may or may not be due to CORS.</p></td><td>Follow the instructions in the documentation page for <a href="/pages/u5POVSQODQl3FU1WAphU">setting up CORS</a> and try again.</td></tr><tr><td><em>Error in request: [errorMessage]</em></td><td>This is an error on Ango Hub's end.</td><td>Contact iMerit support.</td></tr><tr><td><em>Invalid URL</em></td><td><p>Appears when the URL field does not adhere to the structure of GCP, S3, or Azure.</p><p>It may be a completely invalid URL (for example linking to an unrelated domain), or the URL may not be valid within the context of these providers.</p><p>For example a valid GCS URL looks like this:</p><p><code>https://storage.cloud.google.com/test-private-assets/drag-and-drop.png</code></p><p>If you remove the last two slashes, you remove the bucket name and the key name, the URL becomes invalid:<br><br><code>https://storage.cloud.google.com/</code></p></td><td></td></tr></tbody></table>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.imerit.net/data/storages/validating-storage-integrations.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
