> This page is for Docs.

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://zuora.ferndocs.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://zuora.ferndocs.com/_mcp/server.

# Configure Zuora-managed S3 for Snowflake (Storage Integration, Inline)

> Use these steps when your Snowflake environment uses a storage integration to control access to external S3 locations, but you do not need separate stages for every data flow.

Use these steps when your Snowflake environment uses a storage integration to control access to external S3 locations, but you do not need separate stages for every data flow.

With the Inline model, Mediation uses the storage integration with inline S3 URLs, so access is governed by the integration configuration. In this model, you typically do not need to create stages for Mediation: Snowflake uses the storage integration and inline URLs directly to control access to Zuora-managed S3.

> **Note**
>
> As a part of the setup, you need to coordinate with Zuora Global Support to complete the configuration.

On the **Setup** step of the wizard, under **Choose Setup Option**, select **Storage Integration**.

Under **Data Access Model**, select **Inline (DEFAULT)**.

Expand the **Storage Integration Setup Instructions** and complete the Snowflake-side configuration as described.

Create a Snowflake Storage Integration.

```
CREATE STORAGE INTEGRATION <storage_integration_name>
  TYPE = EXTERNAL_STAGE
  STORAGE_PROVIDER = S3
  STORAGE_AWS_ROLE_ARN = 'arn:aws:iam::<aws_account_id>:role/<role_name>'
  ENABLED = TRUE
  STORAGE_ALLOWED_LOCATIONS = (
   '<sourceRootDir>',
   '<sinkRootDir>'
);
```

Use the exact `sourceRootDir` and `sinkRootDir` values displayed in the Storage Integration Setup Instructions. The values are specific to your environment and tenant. Include both paths in `STORAGE_ALLOWED_LOCATIONS` so Mediation can read from and write to Snowflake.

Describe the storage integration.

`DESC STORAGE INTEGRATION <storage_integration_name>;`

From the `DESC` output, collect the `STORAGE_AWS_IAM_USER_ARN` and `STORAGE_AWS_EXTERNAL_ID` values and raise a [support ticket](https://www.zuora.com/support-center/) to share these values with Zuora.

Grant USAGE on the integration to the role.

`GRANT USAGE ON INTEGRATION zuora_s3_int TO ROLE <ROLE_NAME>;`

Grant required privileges to the user.

Set the following Snowflake parameters to `FALSE` to allow the inline load and unload operations used by Mediation:

```
ALTER ACCOUNT SET PREVENT_UNLOAD_TO_INLINE_URL = FALSE;
ALTER ACCOUNT SET PREVENT_LOAD_FROM_INLINE_URL = FALSE;
```

At the bottom of the Setup page, select the checkbox **I have completed the required setup in Snowflake.**

Review the **Snowflake User & Role Grants** section if needed, then click **Continue** to move to the Validate step.