# Azure Blob Storage

<p><a href="https://azure.microsoft.com/en-in/services/storage/blobs/" >Azure Blob Storage</a> is Microsoft&rsquo;s  cloud-based object storage solution. It provides scalable and secure storage for high-performance workloads, cloud native apps, machine learning, and more.</p>
<p>RudderStack supports sending your event data from a variety of sources to your Azure Blob Storage container.</p>
<p>Find the open source transformer code for this destination in the <a href="https://github.com/rudderlabs/rudder-transformer/tree/main/src/v0/destinations/azure_blob" >GitHub repository</a>.</p>
<!-- end-chunk -->
<!-- begin-chunk -->
<h2 id="setting-up-azure-blob-storage">Setting up Azure Blob Storage</h2><p>Follow these steps to set up Azure Blob Storage before adding it as a destination in RudderStack:</p>
<ol>
<li>Login to your <a href="https://portal.azure.com/" >Azure portal</a>.</li>
<li>Click <strong>Create a resource</strong> and click <strong>Create</strong> under <strong>Storage account</strong>.</li>
<li><a href="https://docs.microsoft.com/en-us/azure/storage/common/storage-account-create?tabs=azure-portal" >Create a storage account</a> of type <a href="https://docs.microsoft.com/en-us/azure/storage/common/storage-account-overview#types-of-storage-accounts" >Standard general-purpose v2</a>.</li>
<li>Next, choose your storage account and click <strong>Containers</strong> under <strong>Data storage</strong> .</li>
<li>Create a new container. This is where RudderStack will store all your event data.</li>
<li>You also need to provide an access key to authorize RudderStack to write to your container. Under <strong>Security + networking</strong>, click <strong>Access keys</strong>. You can find your access keys here.</li>
</ol>

<html lang="en">
<blockquote class="info">
  <div class="tip-quote">
    
    <div class="tip-text">Note the storage account name, container as well as access key. This information is required to set up Azure Blob Storage as a destination in RudderStack.</div>
  </div>
</blockquote>

</html>
<ol start="7">
<li>If you wish to grant limited access to your Azure Storage resources, you can use the Shared Access Signatures (SAS) instead of your access key. To generate a SAS token, go to <strong>Security + networking</strong> &gt; <strong>Shared Access Signature</strong>.</li>
</ol>
<!-- end-chunk -->
<!-- begin-chunk -->
<h3 id="sas-token-permissions">SAS token permissions</h3><p>You can use the shared access signatures (SAS) to delegate specific permissions to your storage account resources. This gives you granular control over how users can access your data.</p>

<html lang="en">
<blockquote class="info">
  <div class="tip-quote">
    
    <div class="tip-text">For more information on shared access signatures (SAS) and how to use them, refer to this <a href="https://docs.microsoft.com/en-us/azure/storage/common/storage-sas-overview" >Azure documentation</a>.</div>
  </div>
</blockquote>

</html>
<p>For your Blob Storage destination, RudderStack requires the <strong>Write</strong> permission to write to your container. Make sure it is checked in the <strong>Allowed permissions</strong> setting. An example is shown below:</p>

<figure class="image--main "  >
    <a 
         href="/docs/images/event-stream-destinations/sas-token-permissions.webp"
        
        >
        <img src="/docs/images/event-stream-destinations/sas-token-permissions.webp" 
         alt="Setting SAS token permissions"  
         
         
        decoding="async" loading="lazy" class="img-shortcode"/>
    </a>
    
</figure>

<p>If you&rsquo;re using Blob Storage as an intermediate object storage for your data warehouse destinations, you need to assign the following permissions for your SAS token:</p>
<table>
  <thead>
      <tr>
          <th>Warehouse destination</th>
          <th>Minimum required permissions</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Azure Data Lake</td>
          <td>Read, Write</td>
      </tr>
      <tr>
          <td>Azure Synapse</td>
          <td>Read, Write</td>
      </tr>
      <tr>
          <td>Clickhouse</td>
          <td>Read, Write</td>
      </tr>
      <tr>
          <td>Databricks Delta Lake</td>
          <td>Read, Write</td>
      </tr>
      <tr>
          <td>Microsoft SQL Server</td>
          <td>Read, Write</td>
      </tr>
      <tr>
          <td>PostgreSQL</td>
          <td>Read, Write</td>
      </tr>
      <tr>
          <td>Snowflake</td>
          <td>Read, Write</td>
      </tr>
  </tbody>
</table>
<!-- end-chunk -->
<!-- begin-chunk -->
<h2 id="configuring-azure-blob-storage-in-rudderstack">Configuring Azure Blob Storage in RudderStack</h2><p>To enable dumping data to Microsoft Azure Blob Storage, you will first need to add it as a destination in RudderStack. Once the destination is configured and enabled, events from RudderStack will start flowing to your Azure Blob Storage container.</p>
<p>Follow these steps to add Blob Storage as a destination in RudderStack:</p>
<ol>
<li>From your <a href="https://app.rudderstack.com/" >RudderStack dashboard</a>, add a source. Then, from the list of destinations, select <strong>Azure Blob Storage</strong>.</li>
<li>Assign a name to the destination and click <strong>Continue</strong>.</li>
</ol>
<!-- end-chunk -->
<!-- begin-chunk -->
<h3 id="connection-settings">Connection settings</h3><p>To successfully configure Azure Blob Storage as a destination, you will need to configure the following settings:</p>

<figure class="image--main "  >
    <a 
         href="/docs/images/event-stream-destinations/azure-blob-storage-connection-1.webp"
        
        >
        <img src="/docs/images/event-stream-destinations/azure-blob-storage-connection-1.webp" 
         alt="Azure Blob Storage connection settings"  
         
         
        decoding="async" loading="lazy" class="img-shortcode"/>
    </a>
    
</figure>

<ul>
<li><strong>Azure Blob Storage Container Name</strong>: Enter the name of your Blob Storage container used to store the data.</li>
<li><strong>Prefix</strong>: If specified, RudderStack will create a folder in the bucket with this prefix and push all data within that folder. For example, <code>https://&lt;account_name&gt;.blob.core.windows.net/&lt;container_name&gt;/&lt;prefix&gt;/</code></li>
<li><strong>Azure Blob Storage Account Name</strong>: Enter your Azure Blob Storage account name that you copied in the <a href="#setting-up-azure-blob-storage" >Setting up Azure Blob Storage</a> section above.</li>
<li><strong>Azure Blob Storage Account Key</strong>: This option is only applicable if <strong>Use shared access signature (SAS) Tokens</strong> is <strong>disabled</strong>. In that case, enter the access key associated with your Blob Storage account.</li>
<li><strong>Use shared access signature (SAS) Tokens</strong>: Enable this setting to use a shared access signature (SAS) token to grant limited access to your Azure storage resources.</li>
</ul>

<figure class="image--main "  >
    <a 
         href="/docs/images/event-stream-destinations/azure-blob-storage-connection-2.webp"
        
        >
        <img src="/docs/images/event-stream-destinations/azure-blob-storage-connection-2.webp" 
         alt="Azure Blob Storage connection settings"  
         
         
        decoding="async" loading="lazy" class="img-shortcode"/>
    </a>
    
</figure>

<ul>
<li><strong>Azure Blob Storage SAS Token</strong>: If <strong>Use shared access signature (SAS) Tokens</strong> is enabled, enter your Blob Storage SAS token generated in the <strong>Step 7</strong> of the <a href="#setting-up-azure-blob-storage" >Setting up Azure Blob Storage</a> section above.</li>
</ul>
<p>Microsoft Azure Blob Storage is successfully added as a destination in RudderStack. Once you send an event from your source, RudderStack will send it to your specified Blob Storage container.</p>

