1. Packages
  2. Packages
  3. Snowflake Provider
  4. API Docs
  5. ExternalVolume
Viewing docs for Snowflake v2.15.0
published on Saturday, May 9, 2026 by Pulumi
snowflake logo
Viewing docs for Snowflake v2.15.0
published on Saturday, May 9, 2026 by Pulumi

    !> Caution: Preview Feature This feature is considered a preview feature in the provider, regardless of the state of the resource in Snowflake. We do not guarantee its stability. It will be reworked and marked as a stable feature in future releases. Breaking changes are expected, even without bumping the major version. To use this feature, add the relevant feature name to previewFeaturesEnabled field in the provider configuration. Please always refer to the Getting Help section in our Github repo to best determine how to get help for your questions.

    !> Note According to Snowflake docs, the ALTER EXTERNAL VOLUME statement fails if you attempt to remove the active storage location used by Iceberg tables in your account. This means that Terraform may produce an error during apply. Ensure the active storage location is not being removed, or manually adjust the external volume in Snowflake before applying.

    Resource used to manage external volume objects. For more information, check external volume documentation.

    Example Usage

    import * as pulumi from "@pulumi/pulumi";
    import * as snowflake from "@pulumi/snowflake";
    
    // Basic - S3 storage location with required fields only
    const s3Basic = new snowflake.ExternalVolume("s3_basic", {
        name: "my_external_volume",
        storageLocations: [{
            storageLocationName: "my-s3-location",
            storageProvider: "S3",
            storageBaseUrl: "s3://mybucket/",
            storageAwsRoleArn: "arn:aws:iam::123456789012:role/myrole",
        }],
    });
    // Complete - S3 with all optional fields
    const s3Complete = new snowflake.ExternalVolume("s3_complete", {
        name: "my_external_volume_complete",
        comment: "my external volume",
        allowWrites: "true",
        storageLocations: [{
            storageLocationName: "my-s3-location",
            storageProvider: "S3",
            storageBaseUrl: "s3://mybucket/",
            storageAwsRoleArn: "arn:aws:iam::123456789012:role/myrole",
            storageAwsAccessPointArn: "arn:aws:s3:us-west-2:123456789012:accesspoint/my-access-point",
            usePrivatelinkEndpoint: "true",
            encryptionType: "AWS_SSE_KMS",
            encryptionKmsKeyId: "1234abcd-12ab-34cd-56ef-1234567890ab",
        }],
    });
    // Basic - GCS storage location with required fields only
    const gcsBasic = new snowflake.ExternalVolume("gcs_basic", {
        name: "my_gcs_external_volume",
        storageLocations: [{
            storageLocationName: "my-gcs-location",
            storageProvider: "GCS",
            storageBaseUrl: "gcs://mybucket/",
        }],
    });
    // Complete - GCS with all optional fields
    const gcsComplete = new snowflake.ExternalVolume("gcs_complete", {
        name: "my_gcs_external_volume_complete",
        storageLocations: [{
            storageLocationName: "my-gcs-location",
            storageProvider: "GCS",
            storageBaseUrl: "gcs://mybucket/",
            encryptionType: "GCS_SSE_KMS",
            encryptionKmsKeyId: "1234abcd-12ab-34cd-56ef-1234567890ab",
        }],
    });
    // Basic - Azure storage location with required fields only
    const azureBasic = new snowflake.ExternalVolume("azure_basic", {
        name: "my_azure_external_volume",
        storageLocations: [{
            storageLocationName: "my-azure-location",
            storageProvider: "AZURE",
            storageBaseUrl: "azure://myaccount.blob.core.windows.net/mycontainer/",
            azureTenantId: "123e4567-e89b-12d3-a456-426614174000",
        }],
    });
    // Complete - Azure with all optional fields
    const azureComplete = new snowflake.ExternalVolume("azure_complete", {
        name: "my_azure_external_volume_complete",
        comment: "my azure external volume",
        allowWrites: "true",
        storageLocations: [{
            storageLocationName: "my-azure-location",
            storageProvider: "AZURE",
            storageBaseUrl: "azure://myaccount.blob.core.windows.net/mycontainer/",
            azureTenantId: "123e4567-e89b-12d3-a456-426614174000",
            usePrivatelinkEndpoint: "true",
        }],
    });
    // S3-compatible storage location
    const s3compat = new snowflake.ExternalVolume("s3compat", {
        name: "my_s3compat_external_volume",
        storageLocations: [{
            storageLocationName: "my-s3compat-location",
            storageProvider: "S3COMPAT",
            storageBaseUrl: "s3compat://mybucket/",
            storageEndpoint: "https://s3-compatible.example.com",
            storageAwsKeyId: awsKeyId,
            storageAwsSecretKey: awsSecretKey,
        }],
    });
    
    import pulumi
    import pulumi_snowflake as snowflake
    
    # Basic - S3 storage location with required fields only
    s3_basic = snowflake.ExternalVolume("s3_basic",
        name="my_external_volume",
        storage_locations=[{
            "storage_location_name": "my-s3-location",
            "storage_provider": "S3",
            "storage_base_url": "s3://mybucket/",
            "storage_aws_role_arn": "arn:aws:iam::123456789012:role/myrole",
        }])
    # Complete - S3 with all optional fields
    s3_complete = snowflake.ExternalVolume("s3_complete",
        name="my_external_volume_complete",
        comment="my external volume",
        allow_writes="true",
        storage_locations=[{
            "storage_location_name": "my-s3-location",
            "storage_provider": "S3",
            "storage_base_url": "s3://mybucket/",
            "storage_aws_role_arn": "arn:aws:iam::123456789012:role/myrole",
            "storage_aws_access_point_arn": "arn:aws:s3:us-west-2:123456789012:accesspoint/my-access-point",
            "use_privatelink_endpoint": "true",
            "encryption_type": "AWS_SSE_KMS",
            "encryption_kms_key_id": "1234abcd-12ab-34cd-56ef-1234567890ab",
        }])
    # Basic - GCS storage location with required fields only
    gcs_basic = snowflake.ExternalVolume("gcs_basic",
        name="my_gcs_external_volume",
        storage_locations=[{
            "storage_location_name": "my-gcs-location",
            "storage_provider": "GCS",
            "storage_base_url": "gcs://mybucket/",
        }])
    # Complete - GCS with all optional fields
    gcs_complete = snowflake.ExternalVolume("gcs_complete",
        name="my_gcs_external_volume_complete",
        storage_locations=[{
            "storage_location_name": "my-gcs-location",
            "storage_provider": "GCS",
            "storage_base_url": "gcs://mybucket/",
            "encryption_type": "GCS_SSE_KMS",
            "encryption_kms_key_id": "1234abcd-12ab-34cd-56ef-1234567890ab",
        }])
    # Basic - Azure storage location with required fields only
    azure_basic = snowflake.ExternalVolume("azure_basic",
        name="my_azure_external_volume",
        storage_locations=[{
            "storage_location_name": "my-azure-location",
            "storage_provider": "AZURE",
            "storage_base_url": "azure://myaccount.blob.core.windows.net/mycontainer/",
            "azure_tenant_id": "123e4567-e89b-12d3-a456-426614174000",
        }])
    # Complete - Azure with all optional fields
    azure_complete = snowflake.ExternalVolume("azure_complete",
        name="my_azure_external_volume_complete",
        comment="my azure external volume",
        allow_writes="true",
        storage_locations=[{
            "storage_location_name": "my-azure-location",
            "storage_provider": "AZURE",
            "storage_base_url": "azure://myaccount.blob.core.windows.net/mycontainer/",
            "azure_tenant_id": "123e4567-e89b-12d3-a456-426614174000",
            "use_privatelink_endpoint": "true",
        }])
    # S3-compatible storage location
    s3compat = snowflake.ExternalVolume("s3compat",
        name="my_s3compat_external_volume",
        storage_locations=[{
            "storage_location_name": "my-s3compat-location",
            "storage_provider": "S3COMPAT",
            "storage_base_url": "s3compat://mybucket/",
            "storage_endpoint": "https://s3-compatible.example.com",
            "storage_aws_key_id": aws_key_id,
            "storage_aws_secret_key": aws_secret_key,
        }])
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-snowflake/sdk/v2/go/snowflake"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		// Basic - S3 storage location with required fields only
    		_, err := snowflake.NewExternalVolume(ctx, "s3_basic", &snowflake.ExternalVolumeArgs{
    			Name: pulumi.String("my_external_volume"),
    			StorageLocations: snowflake.ExternalVolumeStorageLocationArray{
    				&snowflake.ExternalVolumeStorageLocationArgs{
    					StorageLocationName: pulumi.String("my-s3-location"),
    					StorageProvider:     pulumi.String("S3"),
    					StorageBaseUrl:      pulumi.String("s3://mybucket/"),
    					StorageAwsRoleArn:   pulumi.String("arn:aws:iam::123456789012:role/myrole"),
    				},
    			},
    		})
    		if err != nil {
    			return err
    		}
    		// Complete - S3 with all optional fields
    		_, err = snowflake.NewExternalVolume(ctx, "s3_complete", &snowflake.ExternalVolumeArgs{
    			Name:        pulumi.String("my_external_volume_complete"),
    			Comment:     pulumi.String("my external volume"),
    			AllowWrites: pulumi.String("true"),
    			StorageLocations: snowflake.ExternalVolumeStorageLocationArray{
    				&snowflake.ExternalVolumeStorageLocationArgs{
    					StorageLocationName:      pulumi.String("my-s3-location"),
    					StorageProvider:          pulumi.String("S3"),
    					StorageBaseUrl:           pulumi.String("s3://mybucket/"),
    					StorageAwsRoleArn:        pulumi.String("arn:aws:iam::123456789012:role/myrole"),
    					StorageAwsAccessPointArn: pulumi.String("arn:aws:s3:us-west-2:123456789012:accesspoint/my-access-point"),
    					UsePrivatelinkEndpoint:   pulumi.String("true"),
    					EncryptionType:           pulumi.String("AWS_SSE_KMS"),
    					EncryptionKmsKeyId:       pulumi.String("1234abcd-12ab-34cd-56ef-1234567890ab"),
    				},
    			},
    		})
    		if err != nil {
    			return err
    		}
    		// Basic - GCS storage location with required fields only
    		_, err = snowflake.NewExternalVolume(ctx, "gcs_basic", &snowflake.ExternalVolumeArgs{
    			Name: pulumi.String("my_gcs_external_volume"),
    			StorageLocations: snowflake.ExternalVolumeStorageLocationArray{
    				&snowflake.ExternalVolumeStorageLocationArgs{
    					StorageLocationName: pulumi.String("my-gcs-location"),
    					StorageProvider:     pulumi.String("GCS"),
    					StorageBaseUrl:      pulumi.String("gcs://mybucket/"),
    				},
    			},
    		})
    		if err != nil {
    			return err
    		}
    		// Complete - GCS with all optional fields
    		_, err = snowflake.NewExternalVolume(ctx, "gcs_complete", &snowflake.ExternalVolumeArgs{
    			Name: pulumi.String("my_gcs_external_volume_complete"),
    			StorageLocations: snowflake.ExternalVolumeStorageLocationArray{
    				&snowflake.ExternalVolumeStorageLocationArgs{
    					StorageLocationName: pulumi.String("my-gcs-location"),
    					StorageProvider:     pulumi.String("GCS"),
    					StorageBaseUrl:      pulumi.String("gcs://mybucket/"),
    					EncryptionType:      pulumi.String("GCS_SSE_KMS"),
    					EncryptionKmsKeyId:  pulumi.String("1234abcd-12ab-34cd-56ef-1234567890ab"),
    				},
    			},
    		})
    		if err != nil {
    			return err
    		}
    		// Basic - Azure storage location with required fields only
    		_, err = snowflake.NewExternalVolume(ctx, "azure_basic", &snowflake.ExternalVolumeArgs{
    			Name: pulumi.String("my_azure_external_volume"),
    			StorageLocations: snowflake.ExternalVolumeStorageLocationArray{
    				&snowflake.ExternalVolumeStorageLocationArgs{
    					StorageLocationName: pulumi.String("my-azure-location"),
    					StorageProvider:     pulumi.String("AZURE"),
    					StorageBaseUrl:      pulumi.String("azure://myaccount.blob.core.windows.net/mycontainer/"),
    					AzureTenantId:       pulumi.String("123e4567-e89b-12d3-a456-426614174000"),
    				},
    			},
    		})
    		if err != nil {
    			return err
    		}
    		// Complete - Azure with all optional fields
    		_, err = snowflake.NewExternalVolume(ctx, "azure_complete", &snowflake.ExternalVolumeArgs{
    			Name:        pulumi.String("my_azure_external_volume_complete"),
    			Comment:     pulumi.String("my azure external volume"),
    			AllowWrites: pulumi.String("true"),
    			StorageLocations: snowflake.ExternalVolumeStorageLocationArray{
    				&snowflake.ExternalVolumeStorageLocationArgs{
    					StorageLocationName:    pulumi.String("my-azure-location"),
    					StorageProvider:        pulumi.String("AZURE"),
    					StorageBaseUrl:         pulumi.String("azure://myaccount.blob.core.windows.net/mycontainer/"),
    					AzureTenantId:          pulumi.String("123e4567-e89b-12d3-a456-426614174000"),
    					UsePrivatelinkEndpoint: pulumi.String("true"),
    				},
    			},
    		})
    		if err != nil {
    			return err
    		}
    		// S3-compatible storage location
    		_, err = snowflake.NewExternalVolume(ctx, "s3compat", &snowflake.ExternalVolumeArgs{
    			Name: pulumi.String("my_s3compat_external_volume"),
    			StorageLocations: snowflake.ExternalVolumeStorageLocationArray{
    				&snowflake.ExternalVolumeStorageLocationArgs{
    					StorageLocationName: pulumi.String("my-s3compat-location"),
    					StorageProvider:     pulumi.String("S3COMPAT"),
    					StorageBaseUrl:      pulumi.String("s3compat://mybucket/"),
    					StorageEndpoint:     pulumi.String("https://s3-compatible.example.com"),
    					StorageAwsKeyId:     pulumi.Any(awsKeyId),
    					StorageAwsSecretKey: pulumi.Any(awsSecretKey),
    				},
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Snowflake = Pulumi.Snowflake;
    
    return await Deployment.RunAsync(() => 
    {
        // Basic - S3 storage location with required fields only
        var s3Basic = new Snowflake.ExternalVolume("s3_basic", new()
        {
            Name = "my_external_volume",
            StorageLocations = new[]
            {
                new Snowflake.Inputs.ExternalVolumeStorageLocationArgs
                {
                    StorageLocationName = "my-s3-location",
                    StorageProvider = "S3",
                    StorageBaseUrl = "s3://mybucket/",
                    StorageAwsRoleArn = "arn:aws:iam::123456789012:role/myrole",
                },
            },
        });
    
        // Complete - S3 with all optional fields
        var s3Complete = new Snowflake.ExternalVolume("s3_complete", new()
        {
            Name = "my_external_volume_complete",
            Comment = "my external volume",
            AllowWrites = "true",
            StorageLocations = new[]
            {
                new Snowflake.Inputs.ExternalVolumeStorageLocationArgs
                {
                    StorageLocationName = "my-s3-location",
                    StorageProvider = "S3",
                    StorageBaseUrl = "s3://mybucket/",
                    StorageAwsRoleArn = "arn:aws:iam::123456789012:role/myrole",
                    StorageAwsAccessPointArn = "arn:aws:s3:us-west-2:123456789012:accesspoint/my-access-point",
                    UsePrivatelinkEndpoint = "true",
                    EncryptionType = "AWS_SSE_KMS",
                    EncryptionKmsKeyId = "1234abcd-12ab-34cd-56ef-1234567890ab",
                },
            },
        });
    
        // Basic - GCS storage location with required fields only
        var gcsBasic = new Snowflake.ExternalVolume("gcs_basic", new()
        {
            Name = "my_gcs_external_volume",
            StorageLocations = new[]
            {
                new Snowflake.Inputs.ExternalVolumeStorageLocationArgs
                {
                    StorageLocationName = "my-gcs-location",
                    StorageProvider = "GCS",
                    StorageBaseUrl = "gcs://mybucket/",
                },
            },
        });
    
        // Complete - GCS with all optional fields
        var gcsComplete = new Snowflake.ExternalVolume("gcs_complete", new()
        {
            Name = "my_gcs_external_volume_complete",
            StorageLocations = new[]
            {
                new Snowflake.Inputs.ExternalVolumeStorageLocationArgs
                {
                    StorageLocationName = "my-gcs-location",
                    StorageProvider = "GCS",
                    StorageBaseUrl = "gcs://mybucket/",
                    EncryptionType = "GCS_SSE_KMS",
                    EncryptionKmsKeyId = "1234abcd-12ab-34cd-56ef-1234567890ab",
                },
            },
        });
    
        // Basic - Azure storage location with required fields only
        var azureBasic = new Snowflake.ExternalVolume("azure_basic", new()
        {
            Name = "my_azure_external_volume",
            StorageLocations = new[]
            {
                new Snowflake.Inputs.ExternalVolumeStorageLocationArgs
                {
                    StorageLocationName = "my-azure-location",
                    StorageProvider = "AZURE",
                    StorageBaseUrl = "azure://myaccount.blob.core.windows.net/mycontainer/",
                    AzureTenantId = "123e4567-e89b-12d3-a456-426614174000",
                },
            },
        });
    
        // Complete - Azure with all optional fields
        var azureComplete = new Snowflake.ExternalVolume("azure_complete", new()
        {
            Name = "my_azure_external_volume_complete",
            Comment = "my azure external volume",
            AllowWrites = "true",
            StorageLocations = new[]
            {
                new Snowflake.Inputs.ExternalVolumeStorageLocationArgs
                {
                    StorageLocationName = "my-azure-location",
                    StorageProvider = "AZURE",
                    StorageBaseUrl = "azure://myaccount.blob.core.windows.net/mycontainer/",
                    AzureTenantId = "123e4567-e89b-12d3-a456-426614174000",
                    UsePrivatelinkEndpoint = "true",
                },
            },
        });
    
        // S3-compatible storage location
        var s3compat = new Snowflake.ExternalVolume("s3compat", new()
        {
            Name = "my_s3compat_external_volume",
            StorageLocations = new[]
            {
                new Snowflake.Inputs.ExternalVolumeStorageLocationArgs
                {
                    StorageLocationName = "my-s3compat-location",
                    StorageProvider = "S3COMPAT",
                    StorageBaseUrl = "s3compat://mybucket/",
                    StorageEndpoint = "https://s3-compatible.example.com",
                    StorageAwsKeyId = awsKeyId,
                    StorageAwsSecretKey = awsSecretKey,
                },
            },
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.snowflake.ExternalVolume;
    import com.pulumi.snowflake.ExternalVolumeArgs;
    import com.pulumi.snowflake.inputs.ExternalVolumeStorageLocationArgs;
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.Map;
    import java.io.File;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    
    public class App {
        public static void main(String[] args) {
            Pulumi.run(App::stack);
        }
    
        public static void stack(Context ctx) {
            // Basic - S3 storage location with required fields only
            var s3Basic = new ExternalVolume("s3Basic", ExternalVolumeArgs.builder()
                .name("my_external_volume")
                .storageLocations(ExternalVolumeStorageLocationArgs.builder()
                    .storageLocationName("my-s3-location")
                    .storageProvider("S3")
                    .storageBaseUrl("s3://mybucket/")
                    .storageAwsRoleArn("arn:aws:iam::123456789012:role/myrole")
                    .build())
                .build());
    
            // Complete - S3 with all optional fields
            var s3Complete = new ExternalVolume("s3Complete", ExternalVolumeArgs.builder()
                .name("my_external_volume_complete")
                .comment("my external volume")
                .allowWrites("true")
                .storageLocations(ExternalVolumeStorageLocationArgs.builder()
                    .storageLocationName("my-s3-location")
                    .storageProvider("S3")
                    .storageBaseUrl("s3://mybucket/")
                    .storageAwsRoleArn("arn:aws:iam::123456789012:role/myrole")
                    .storageAwsAccessPointArn("arn:aws:s3:us-west-2:123456789012:accesspoint/my-access-point")
                    .usePrivatelinkEndpoint("true")
                    .encryptionType("AWS_SSE_KMS")
                    .encryptionKmsKeyId("1234abcd-12ab-34cd-56ef-1234567890ab")
                    .build())
                .build());
    
            // Basic - GCS storage location with required fields only
            var gcsBasic = new ExternalVolume("gcsBasic", ExternalVolumeArgs.builder()
                .name("my_gcs_external_volume")
                .storageLocations(ExternalVolumeStorageLocationArgs.builder()
                    .storageLocationName("my-gcs-location")
                    .storageProvider("GCS")
                    .storageBaseUrl("gcs://mybucket/")
                    .build())
                .build());
    
            // Complete - GCS with all optional fields
            var gcsComplete = new ExternalVolume("gcsComplete", ExternalVolumeArgs.builder()
                .name("my_gcs_external_volume_complete")
                .storageLocations(ExternalVolumeStorageLocationArgs.builder()
                    .storageLocationName("my-gcs-location")
                    .storageProvider("GCS")
                    .storageBaseUrl("gcs://mybucket/")
                    .encryptionType("GCS_SSE_KMS")
                    .encryptionKmsKeyId("1234abcd-12ab-34cd-56ef-1234567890ab")
                    .build())
                .build());
    
            // Basic - Azure storage location with required fields only
            var azureBasic = new ExternalVolume("azureBasic", ExternalVolumeArgs.builder()
                .name("my_azure_external_volume")
                .storageLocations(ExternalVolumeStorageLocationArgs.builder()
                    .storageLocationName("my-azure-location")
                    .storageProvider("AZURE")
                    .storageBaseUrl("azure://myaccount.blob.core.windows.net/mycontainer/")
                    .azureTenantId("123e4567-e89b-12d3-a456-426614174000")
                    .build())
                .build());
    
            // Complete - Azure with all optional fields
            var azureComplete = new ExternalVolume("azureComplete", ExternalVolumeArgs.builder()
                .name("my_azure_external_volume_complete")
                .comment("my azure external volume")
                .allowWrites("true")
                .storageLocations(ExternalVolumeStorageLocationArgs.builder()
                    .storageLocationName("my-azure-location")
                    .storageProvider("AZURE")
                    .storageBaseUrl("azure://myaccount.blob.core.windows.net/mycontainer/")
                    .azureTenantId("123e4567-e89b-12d3-a456-426614174000")
                    .usePrivatelinkEndpoint("true")
                    .build())
                .build());
    
            // S3-compatible storage location
            var s3compat = new ExternalVolume("s3compat", ExternalVolumeArgs.builder()
                .name("my_s3compat_external_volume")
                .storageLocations(ExternalVolumeStorageLocationArgs.builder()
                    .storageLocationName("my-s3compat-location")
                    .storageProvider("S3COMPAT")
                    .storageBaseUrl("s3compat://mybucket/")
                    .storageEndpoint("https://s3-compatible.example.com")
                    .storageAwsKeyId(awsKeyId)
                    .storageAwsSecretKey(awsSecretKey)
                    .build())
                .build());
    
        }
    }
    
    resources:
      # Basic - S3 storage location with required fields only
      s3Basic:
        type: snowflake:ExternalVolume
        name: s3_basic
        properties:
          name: my_external_volume
          storageLocations:
            - storageLocationName: my-s3-location
              storageProvider: S3
              storageBaseUrl: s3://mybucket/
              storageAwsRoleArn: arn:aws:iam::123456789012:role/myrole
      # Complete - S3 with all optional fields
      s3Complete:
        type: snowflake:ExternalVolume
        name: s3_complete
        properties:
          name: my_external_volume_complete
          comment: my external volume
          allowWrites: 'true'
          storageLocations:
            - storageLocationName: my-s3-location
              storageProvider: S3
              storageBaseUrl: s3://mybucket/
              storageAwsRoleArn: arn:aws:iam::123456789012:role/myrole
              storageAwsAccessPointArn: arn:aws:s3:us-west-2:123456789012:accesspoint/my-access-point
              usePrivatelinkEndpoint: 'true'
              encryptionType: AWS_SSE_KMS
              encryptionKmsKeyId: 1234abcd-12ab-34cd-56ef-1234567890ab
      # Basic - GCS storage location with required fields only
      gcsBasic:
        type: snowflake:ExternalVolume
        name: gcs_basic
        properties:
          name: my_gcs_external_volume
          storageLocations:
            - storageLocationName: my-gcs-location
              storageProvider: GCS
              storageBaseUrl: gcs://mybucket/
      # Complete - GCS with all optional fields
      gcsComplete:
        type: snowflake:ExternalVolume
        name: gcs_complete
        properties:
          name: my_gcs_external_volume_complete
          storageLocations:
            - storageLocationName: my-gcs-location
              storageProvider: GCS
              storageBaseUrl: gcs://mybucket/
              encryptionType: GCS_SSE_KMS
              encryptionKmsKeyId: 1234abcd-12ab-34cd-56ef-1234567890ab
      # Basic - Azure storage location with required fields only
      azureBasic:
        type: snowflake:ExternalVolume
        name: azure_basic
        properties:
          name: my_azure_external_volume
          storageLocations:
            - storageLocationName: my-azure-location
              storageProvider: AZURE
              storageBaseUrl: azure://myaccount.blob.core.windows.net/mycontainer/
              azureTenantId: 123e4567-e89b-12d3-a456-426614174000
      # Complete - Azure with all optional fields
      azureComplete:
        type: snowflake:ExternalVolume
        name: azure_complete
        properties:
          name: my_azure_external_volume_complete
          comment: my azure external volume
          allowWrites: 'true'
          storageLocations:
            - storageLocationName: my-azure-location
              storageProvider: AZURE
              storageBaseUrl: azure://myaccount.blob.core.windows.net/mycontainer/
              azureTenantId: 123e4567-e89b-12d3-a456-426614174000
              usePrivatelinkEndpoint: 'true'
      # S3-compatible storage location
      s3compat:
        type: snowflake:ExternalVolume
        properties:
          name: my_s3compat_external_volume
          storageLocations:
            - storageLocationName: my-s3compat-location
              storageProvider: S3COMPAT
              storageBaseUrl: s3compat://mybucket/
              storageEndpoint: https://s3-compatible.example.com
              storageAwsKeyId: ${awsKeyId}
              storageAwsSecretKey: ${awsSecretKey}
    
    Example coming soon!
    

    Note If a field has a default value, it is shown next to the type in the schema.

    Create ExternalVolume Resource

    Resources are created with functions called constructors. To learn more about declaring and configuring resources, see Resources.

    Constructor syntax

    new ExternalVolume(name: string, args: ExternalVolumeArgs, opts?: CustomResourceOptions);
    @overload
    def ExternalVolume(resource_name: str,
                       args: ExternalVolumeArgs,
                       opts: Optional[ResourceOptions] = None)
    
    @overload
    def ExternalVolume(resource_name: str,
                       opts: Optional[ResourceOptions] = None,
                       storage_locations: Optional[Sequence[ExternalVolumeStorageLocationArgs]] = None,
                       allow_writes: Optional[str] = None,
                       comment: Optional[str] = None,
                       name: Optional[str] = None)
    func NewExternalVolume(ctx *Context, name string, args ExternalVolumeArgs, opts ...ResourceOption) (*ExternalVolume, error)
    public ExternalVolume(string name, ExternalVolumeArgs args, CustomResourceOptions? opts = null)
    public ExternalVolume(String name, ExternalVolumeArgs args)
    public ExternalVolume(String name, ExternalVolumeArgs args, CustomResourceOptions options)
    
    type: snowflake:ExternalVolume
    properties: # The arguments to resource properties.
    options: # Bag of options to control resource's behavior.
    
    
    resource "snowflake_externalvolume" "name" {
        # resource properties
    }

    Parameters

    name string
    The unique name of the resource.
    args ExternalVolumeArgs
    The arguments to resource properties.
    opts CustomResourceOptions
    Bag of options to control resource's behavior.
    resource_name str
    The unique name of the resource.
    args ExternalVolumeArgs
    The arguments to resource properties.
    opts ResourceOptions
    Bag of options to control resource's behavior.
    ctx Context
    Context object for the current deployment.
    name string
    The unique name of the resource.
    args ExternalVolumeArgs
    The arguments to resource properties.
    opts ResourceOption
    Bag of options to control resource's behavior.
    name string
    The unique name of the resource.
    args ExternalVolumeArgs
    The arguments to resource properties.
    opts CustomResourceOptions
    Bag of options to control resource's behavior.
    name String
    The unique name of the resource.
    args ExternalVolumeArgs
    The arguments to resource properties.
    options CustomResourceOptions
    Bag of options to control resource's behavior.

    Constructor example

    The following reference example uses placeholder values for all input properties.

    var externalVolumeResource = new Snowflake.ExternalVolume("externalVolumeResource", new()
    {
        StorageLocations = new[]
        {
            new Snowflake.Inputs.ExternalVolumeStorageLocationArgs
            {
                StorageBaseUrl = "string",
                StorageProvider = "string",
                StorageLocationName = "string",
                StorageAwsRoleArn = "string",
                StorageAwsExternalId = "string",
                StorageAwsKeyId = "string",
                AzureTenantId = "string",
                StorageAwsSecretKey = "string",
                StorageAwsAccessPointArn = "string",
                StorageEndpoint = "string",
                EncryptionType = "string",
                EncryptionKmsKeyId = "string",
                UsePrivatelinkEndpoint = "string",
            },
        },
        AllowWrites = "string",
        Comment = "string",
        Name = "string",
    });
    
    example, err := snowflake.NewExternalVolume(ctx, "externalVolumeResource", &snowflake.ExternalVolumeArgs{
    	StorageLocations: snowflake.ExternalVolumeStorageLocationArray{
    		&snowflake.ExternalVolumeStorageLocationArgs{
    			StorageBaseUrl:           pulumi.String("string"),
    			StorageProvider:          pulumi.String("string"),
    			StorageLocationName:      pulumi.String("string"),
    			StorageAwsRoleArn:        pulumi.String("string"),
    			StorageAwsExternalId:     pulumi.String("string"),
    			StorageAwsKeyId:          pulumi.String("string"),
    			AzureTenantId:            pulumi.String("string"),
    			StorageAwsSecretKey:      pulumi.String("string"),
    			StorageAwsAccessPointArn: pulumi.String("string"),
    			StorageEndpoint:          pulumi.String("string"),
    			EncryptionType:           pulumi.String("string"),
    			EncryptionKmsKeyId:       pulumi.String("string"),
    			UsePrivatelinkEndpoint:   pulumi.String("string"),
    		},
    	},
    	AllowWrites: pulumi.String("string"),
    	Comment:     pulumi.String("string"),
    	Name:        pulumi.String("string"),
    })
    
    resource "snowflake_externalvolume" "externalVolumeResource" {
      storage_locations {
        storage_base_url             = "string"
        storage_provider             = "string"
        storage_location_name        = "string"
        storage_aws_role_arn         = "string"
        storage_aws_external_id      = "string"
        storage_aws_key_id           = "string"
        azure_tenant_id              = "string"
        storage_aws_secret_key       = "string"
        storage_aws_access_point_arn = "string"
        storage_endpoint             = "string"
        encryption_type              = "string"
        encryption_kms_key_id        = "string"
        use_privatelink_endpoint     = "string"
      }
      allow_writes = "string"
      comment      = "string"
      name         = "string"
    }
    
    var externalVolumeResource = new ExternalVolume("externalVolumeResource", ExternalVolumeArgs.builder()
        .storageLocations(ExternalVolumeStorageLocationArgs.builder()
            .storageBaseUrl("string")
            .storageProvider("string")
            .storageLocationName("string")
            .storageAwsRoleArn("string")
            .storageAwsExternalId("string")
            .storageAwsKeyId("string")
            .azureTenantId("string")
            .storageAwsSecretKey("string")
            .storageAwsAccessPointArn("string")
            .storageEndpoint("string")
            .encryptionType("string")
            .encryptionKmsKeyId("string")
            .usePrivatelinkEndpoint("string")
            .build())
        .allowWrites("string")
        .comment("string")
        .name("string")
        .build());
    
    external_volume_resource = snowflake.ExternalVolume("externalVolumeResource",
        storage_locations=[{
            "storage_base_url": "string",
            "storage_provider": "string",
            "storage_location_name": "string",
            "storage_aws_role_arn": "string",
            "storage_aws_external_id": "string",
            "storage_aws_key_id": "string",
            "azure_tenant_id": "string",
            "storage_aws_secret_key": "string",
            "storage_aws_access_point_arn": "string",
            "storage_endpoint": "string",
            "encryption_type": "string",
            "encryption_kms_key_id": "string",
            "use_privatelink_endpoint": "string",
        }],
        allow_writes="string",
        comment="string",
        name="string")
    
    const externalVolumeResource = new snowflake.ExternalVolume("externalVolumeResource", {
        storageLocations: [{
            storageBaseUrl: "string",
            storageProvider: "string",
            storageLocationName: "string",
            storageAwsRoleArn: "string",
            storageAwsExternalId: "string",
            storageAwsKeyId: "string",
            azureTenantId: "string",
            storageAwsSecretKey: "string",
            storageAwsAccessPointArn: "string",
            storageEndpoint: "string",
            encryptionType: "string",
            encryptionKmsKeyId: "string",
            usePrivatelinkEndpoint: "string",
        }],
        allowWrites: "string",
        comment: "string",
        name: "string",
    });
    
    type: snowflake:ExternalVolume
    properties:
        allowWrites: string
        comment: string
        name: string
        storageLocations:
            - azureTenantId: string
              encryptionKmsKeyId: string
              encryptionType: string
              storageAwsAccessPointArn: string
              storageAwsExternalId: string
              storageAwsKeyId: string
              storageAwsRoleArn: string
              storageAwsSecretKey: string
              storageBaseUrl: string
              storageEndpoint: string
              storageLocationName: string
              storageProvider: string
              usePrivatelinkEndpoint: string
    

    ExternalVolume Resource Properties

    To learn more about resource properties and how to use them, see Inputs and Outputs in the Architecture and Concepts docs.

    Inputs

    In Python, inputs that are objects can be passed either as argument classes or as dictionary literals.

    The ExternalVolume resource accepts the following input properties:

    StorageLocations List<ExternalVolumeStorageLocation>
    List of named cloud storage locations in different regions and, optionally, cloud platforms. Minimum 1 required. The order of the list is important as it impacts the active storage location, and updates will be triggered if it changes. Note that not all parameter combinations are valid as they depend on the given storage*provider. Consult the docs for more details on this.
    AllowWrites string
    (Default: fallback to Snowflake default - uses special value that cannot be set in the configuration manually (default)) Specifies whether write operations are allowed for the external volume; must be set to TRUE for Iceberg tables that use Snowflake as the catalog. Available options are: "true" or "false". When the value is not set in the configuration the provider will put "default" there which means to use the Snowflake default for this value.
    Comment string
    Specifies a comment for the external volume.
    Name string
    Identifier for the external volume; must be unique for your account. Due to technical limitations (read more here), avoid using the following characters: |, ., ".
    StorageLocations []ExternalVolumeStorageLocationArgs
    List of named cloud storage locations in different regions and, optionally, cloud platforms. Minimum 1 required. The order of the list is important as it impacts the active storage location, and updates will be triggered if it changes. Note that not all parameter combinations are valid as they depend on the given storage*provider. Consult the docs for more details on this.
    AllowWrites string
    (Default: fallback to Snowflake default - uses special value that cannot be set in the configuration manually (default)) Specifies whether write operations are allowed for the external volume; must be set to TRUE for Iceberg tables that use Snowflake as the catalog. Available options are: "true" or "false". When the value is not set in the configuration the provider will put "default" there which means to use the Snowflake default for this value.
    Comment string
    Specifies a comment for the external volume.
    Name string
    Identifier for the external volume; must be unique for your account. Due to technical limitations (read more here), avoid using the following characters: |, ., ".
    storage_locations list(object)
    List of named cloud storage locations in different regions and, optionally, cloud platforms. Minimum 1 required. The order of the list is important as it impacts the active storage location, and updates will be triggered if it changes. Note that not all parameter combinations are valid as they depend on the given storage*provider. Consult the docs for more details on this.
    allow_writes string
    (Default: fallback to Snowflake default - uses special value that cannot be set in the configuration manually (default)) Specifies whether write operations are allowed for the external volume; must be set to TRUE for Iceberg tables that use Snowflake as the catalog. Available options are: "true" or "false". When the value is not set in the configuration the provider will put "default" there which means to use the Snowflake default for this value.
    comment string
    Specifies a comment for the external volume.
    name string
    Identifier for the external volume; must be unique for your account. Due to technical limitations (read more here), avoid using the following characters: |, ., ".
    storageLocations List<ExternalVolumeStorageLocation>
    List of named cloud storage locations in different regions and, optionally, cloud platforms. Minimum 1 required. The order of the list is important as it impacts the active storage location, and updates will be triggered if it changes. Note that not all parameter combinations are valid as they depend on the given storage*provider. Consult the docs for more details on this.
    allowWrites String
    (Default: fallback to Snowflake default - uses special value that cannot be set in the configuration manually (default)) Specifies whether write operations are allowed for the external volume; must be set to TRUE for Iceberg tables that use Snowflake as the catalog. Available options are: "true" or "false". When the value is not set in the configuration the provider will put "default" there which means to use the Snowflake default for this value.
    comment String
    Specifies a comment for the external volume.
    name String
    Identifier for the external volume; must be unique for your account. Due to technical limitations (read more here), avoid using the following characters: |, ., ".
    storageLocations ExternalVolumeStorageLocation[]
    List of named cloud storage locations in different regions and, optionally, cloud platforms. Minimum 1 required. The order of the list is important as it impacts the active storage location, and updates will be triggered if it changes. Note that not all parameter combinations are valid as they depend on the given storage*provider. Consult the docs for more details on this.
    allowWrites string
    (Default: fallback to Snowflake default - uses special value that cannot be set in the configuration manually (default)) Specifies whether write operations are allowed for the external volume; must be set to TRUE for Iceberg tables that use Snowflake as the catalog. Available options are: "true" or "false". When the value is not set in the configuration the provider will put "default" there which means to use the Snowflake default for this value.
    comment string
    Specifies a comment for the external volume.
    name string
    Identifier for the external volume; must be unique for your account. Due to technical limitations (read more here), avoid using the following characters: |, ., ".
    storage_locations Sequence[ExternalVolumeStorageLocationArgs]
    List of named cloud storage locations in different regions and, optionally, cloud platforms. Minimum 1 required. The order of the list is important as it impacts the active storage location, and updates will be triggered if it changes. Note that not all parameter combinations are valid as they depend on the given storage*provider. Consult the docs for more details on this.
    allow_writes str
    (Default: fallback to Snowflake default - uses special value that cannot be set in the configuration manually (default)) Specifies whether write operations are allowed for the external volume; must be set to TRUE for Iceberg tables that use Snowflake as the catalog. Available options are: "true" or "false". When the value is not set in the configuration the provider will put "default" there which means to use the Snowflake default for this value.
    comment str
    Specifies a comment for the external volume.
    name str
    Identifier for the external volume; must be unique for your account. Due to technical limitations (read more here), avoid using the following characters: |, ., ".
    storageLocations List<Property Map>
    List of named cloud storage locations in different regions and, optionally, cloud platforms. Minimum 1 required. The order of the list is important as it impacts the active storage location, and updates will be triggered if it changes. Note that not all parameter combinations are valid as they depend on the given storage*provider. Consult the docs for more details on this.
    allowWrites String
    (Default: fallback to Snowflake default - uses special value that cannot be set in the configuration manually (default)) Specifies whether write operations are allowed for the external volume; must be set to TRUE for Iceberg tables that use Snowflake as the catalog. Available options are: "true" or "false". When the value is not set in the configuration the provider will put "default" there which means to use the Snowflake default for this value.
    comment String
    Specifies a comment for the external volume.
    name String
    Identifier for the external volume; must be unique for your account. Due to technical limitations (read more here), avoid using the following characters: |, ., ".

    Outputs

    All input properties are implicitly available as output properties. Additionally, the ExternalVolume resource produces the following output properties:

    DescribeOutputs List<ExternalVolumeDescribeOutput>
    Outputs the result of DESCRIBE EXTERNAL VOLUME for the given external volume. Because of Terraform limitations, the changes on storage*location field do not mark this field as computed.
    FullyQualifiedName string
    Fully qualified name of the resource. For more information, see object name resolution.
    Id string
    The provider-assigned unique ID for this managed resource.
    ShowOutputs List<ExternalVolumeShowOutput>
    Outputs the result of SHOW EXTERNAL VOLUMES for the given external volume.
    DescribeOutputs []ExternalVolumeDescribeOutput
    Outputs the result of DESCRIBE EXTERNAL VOLUME for the given external volume. Because of Terraform limitations, the changes on storage*location field do not mark this field as computed.
    FullyQualifiedName string
    Fully qualified name of the resource. For more information, see object name resolution.
    Id string
    The provider-assigned unique ID for this managed resource.
    ShowOutputs []ExternalVolumeShowOutput
    Outputs the result of SHOW EXTERNAL VOLUMES for the given external volume.
    describe_outputs list(object)
    Outputs the result of DESCRIBE EXTERNAL VOLUME for the given external volume. Because of Terraform limitations, the changes on storage*location field do not mark this field as computed.
    fully_qualified_name string
    Fully qualified name of the resource. For more information, see object name resolution.
    id string
    The provider-assigned unique ID for this managed resource.
    show_outputs list(object)
    Outputs the result of SHOW EXTERNAL VOLUMES for the given external volume.
    describeOutputs List<ExternalVolumeDescribeOutput>
    Outputs the result of DESCRIBE EXTERNAL VOLUME for the given external volume. Because of Terraform limitations, the changes on storage*location field do not mark this field as computed.
    fullyQualifiedName String
    Fully qualified name of the resource. For more information, see object name resolution.
    id String
    The provider-assigned unique ID for this managed resource.
    showOutputs List<ExternalVolumeShowOutput>
    Outputs the result of SHOW EXTERNAL VOLUMES for the given external volume.
    describeOutputs ExternalVolumeDescribeOutput[]
    Outputs the result of DESCRIBE EXTERNAL VOLUME for the given external volume. Because of Terraform limitations, the changes on storage*location field do not mark this field as computed.
    fullyQualifiedName string
    Fully qualified name of the resource. For more information, see object name resolution.
    id string
    The provider-assigned unique ID for this managed resource.
    showOutputs ExternalVolumeShowOutput[]
    Outputs the result of SHOW EXTERNAL VOLUMES for the given external volume.
    describe_outputs Sequence[ExternalVolumeDescribeOutput]
    Outputs the result of DESCRIBE EXTERNAL VOLUME for the given external volume. Because of Terraform limitations, the changes on storage*location field do not mark this field as computed.
    fully_qualified_name str
    Fully qualified name of the resource. For more information, see object name resolution.
    id str
    The provider-assigned unique ID for this managed resource.
    show_outputs Sequence[ExternalVolumeShowOutput]
    Outputs the result of SHOW EXTERNAL VOLUMES for the given external volume.
    describeOutputs List<Property Map>
    Outputs the result of DESCRIBE EXTERNAL VOLUME for the given external volume. Because of Terraform limitations, the changes on storage*location field do not mark this field as computed.
    fullyQualifiedName String
    Fully qualified name of the resource. For more information, see object name resolution.
    id String
    The provider-assigned unique ID for this managed resource.
    showOutputs List<Property Map>
    Outputs the result of SHOW EXTERNAL VOLUMES for the given external volume.

    Look up Existing ExternalVolume Resource

    Get an existing ExternalVolume resource’s state with the given name, ID, and optional extra properties used to qualify the lookup.

    public static get(name: string, id: Input<ID>, state?: ExternalVolumeState, opts?: CustomResourceOptions): ExternalVolume
    @staticmethod
    def get(resource_name: str,
            id: str,
            opts: Optional[ResourceOptions] = None,
            allow_writes: Optional[str] = None,
            comment: Optional[str] = None,
            describe_outputs: Optional[Sequence[ExternalVolumeDescribeOutputArgs]] = None,
            fully_qualified_name: Optional[str] = None,
            name: Optional[str] = None,
            show_outputs: Optional[Sequence[ExternalVolumeShowOutputArgs]] = None,
            storage_locations: Optional[Sequence[ExternalVolumeStorageLocationArgs]] = None) -> ExternalVolume
    func GetExternalVolume(ctx *Context, name string, id IDInput, state *ExternalVolumeState, opts ...ResourceOption) (*ExternalVolume, error)
    public static ExternalVolume Get(string name, Input<string> id, ExternalVolumeState? state, CustomResourceOptions? opts = null)
    public static ExternalVolume get(String name, Output<String> id, ExternalVolumeState state, CustomResourceOptions options)
    resources:  _:    type: snowflake:ExternalVolume    get:      id: ${id}
    import {
      to = snowflake_externalvolume.example
      id = "${id}"
    }
    
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    resource_name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    The following state arguments are supported:
    AllowWrites string
    (Default: fallback to Snowflake default - uses special value that cannot be set in the configuration manually (default)) Specifies whether write operations are allowed for the external volume; must be set to TRUE for Iceberg tables that use Snowflake as the catalog. Available options are: "true" or "false". When the value is not set in the configuration the provider will put "default" there which means to use the Snowflake default for this value.
    Comment string
    Specifies a comment for the external volume.
    DescribeOutputs List<ExternalVolumeDescribeOutput>
    Outputs the result of DESCRIBE EXTERNAL VOLUME for the given external volume. Because of Terraform limitations, the changes on storage*location field do not mark this field as computed.
    FullyQualifiedName string
    Fully qualified name of the resource. For more information, see object name resolution.
    Name string
    Identifier for the external volume; must be unique for your account. Due to technical limitations (read more here), avoid using the following characters: |, ., ".
    ShowOutputs List<ExternalVolumeShowOutput>
    Outputs the result of SHOW EXTERNAL VOLUMES for the given external volume.
    StorageLocations List<ExternalVolumeStorageLocation>
    List of named cloud storage locations in different regions and, optionally, cloud platforms. Minimum 1 required. The order of the list is important as it impacts the active storage location, and updates will be triggered if it changes. Note that not all parameter combinations are valid as they depend on the given storage*provider. Consult the docs for more details on this.
    AllowWrites string
    (Default: fallback to Snowflake default - uses special value that cannot be set in the configuration manually (default)) Specifies whether write operations are allowed for the external volume; must be set to TRUE for Iceberg tables that use Snowflake as the catalog. Available options are: "true" or "false". When the value is not set in the configuration the provider will put "default" there which means to use the Snowflake default for this value.
    Comment string
    Specifies a comment for the external volume.
    DescribeOutputs []ExternalVolumeDescribeOutputArgs
    Outputs the result of DESCRIBE EXTERNAL VOLUME for the given external volume. Because of Terraform limitations, the changes on storage*location field do not mark this field as computed.
    FullyQualifiedName string
    Fully qualified name of the resource. For more information, see object name resolution.
    Name string
    Identifier for the external volume; must be unique for your account. Due to technical limitations (read more here), avoid using the following characters: |, ., ".
    ShowOutputs []ExternalVolumeShowOutputArgs
    Outputs the result of SHOW EXTERNAL VOLUMES for the given external volume.
    StorageLocations []ExternalVolumeStorageLocationArgs
    List of named cloud storage locations in different regions and, optionally, cloud platforms. Minimum 1 required. The order of the list is important as it impacts the active storage location, and updates will be triggered if it changes. Note that not all parameter combinations are valid as they depend on the given storage*provider. Consult the docs for more details on this.
    allow_writes string
    (Default: fallback to Snowflake default - uses special value that cannot be set in the configuration manually (default)) Specifies whether write operations are allowed for the external volume; must be set to TRUE for Iceberg tables that use Snowflake as the catalog. Available options are: "true" or "false". When the value is not set in the configuration the provider will put "default" there which means to use the Snowflake default for this value.
    comment string
    Specifies a comment for the external volume.
    describe_outputs list(object)
    Outputs the result of DESCRIBE EXTERNAL VOLUME for the given external volume. Because of Terraform limitations, the changes on storage*location field do not mark this field as computed.
    fully_qualified_name string
    Fully qualified name of the resource. For more information, see object name resolution.
    name string
    Identifier for the external volume; must be unique for your account. Due to technical limitations (read more here), avoid using the following characters: |, ., ".
    show_outputs list(object)
    Outputs the result of SHOW EXTERNAL VOLUMES for the given external volume.
    storage_locations list(object)
    List of named cloud storage locations in different regions and, optionally, cloud platforms. Minimum 1 required. The order of the list is important as it impacts the active storage location, and updates will be triggered if it changes. Note that not all parameter combinations are valid as they depend on the given storage*provider. Consult the docs for more details on this.
    allowWrites String
    (Default: fallback to Snowflake default - uses special value that cannot be set in the configuration manually (default)) Specifies whether write operations are allowed for the external volume; must be set to TRUE for Iceberg tables that use Snowflake as the catalog. Available options are: "true" or "false". When the value is not set in the configuration the provider will put "default" there which means to use the Snowflake default for this value.
    comment String
    Specifies a comment for the external volume.
    describeOutputs List<ExternalVolumeDescribeOutput>
    Outputs the result of DESCRIBE EXTERNAL VOLUME for the given external volume. Because of Terraform limitations, the changes on storage*location field do not mark this field as computed.
    fullyQualifiedName String
    Fully qualified name of the resource. For more information, see object name resolution.
    name String
    Identifier for the external volume; must be unique for your account. Due to technical limitations (read more here), avoid using the following characters: |, ., ".
    showOutputs List<ExternalVolumeShowOutput>
    Outputs the result of SHOW EXTERNAL VOLUMES for the given external volume.
    storageLocations List<ExternalVolumeStorageLocation>
    List of named cloud storage locations in different regions and, optionally, cloud platforms. Minimum 1 required. The order of the list is important as it impacts the active storage location, and updates will be triggered if it changes. Note that not all parameter combinations are valid as they depend on the given storage*provider. Consult the docs for more details on this.
    allowWrites string
    (Default: fallback to Snowflake default - uses special value that cannot be set in the configuration manually (default)) Specifies whether write operations are allowed for the external volume; must be set to TRUE for Iceberg tables that use Snowflake as the catalog. Available options are: "true" or "false". When the value is not set in the configuration the provider will put "default" there which means to use the Snowflake default for this value.
    comment string
    Specifies a comment for the external volume.
    describeOutputs ExternalVolumeDescribeOutput[]
    Outputs the result of DESCRIBE EXTERNAL VOLUME for the given external volume. Because of Terraform limitations, the changes on storage*location field do not mark this field as computed.
    fullyQualifiedName string
    Fully qualified name of the resource. For more information, see object name resolution.
    name string
    Identifier for the external volume; must be unique for your account. Due to technical limitations (read more here), avoid using the following characters: |, ., ".
    showOutputs ExternalVolumeShowOutput[]
    Outputs the result of SHOW EXTERNAL VOLUMES for the given external volume.
    storageLocations ExternalVolumeStorageLocation[]
    List of named cloud storage locations in different regions and, optionally, cloud platforms. Minimum 1 required. The order of the list is important as it impacts the active storage location, and updates will be triggered if it changes. Note that not all parameter combinations are valid as they depend on the given storage*provider. Consult the docs for more details on this.
    allow_writes str
    (Default: fallback to Snowflake default - uses special value that cannot be set in the configuration manually (default)) Specifies whether write operations are allowed for the external volume; must be set to TRUE for Iceberg tables that use Snowflake as the catalog. Available options are: "true" or "false". When the value is not set in the configuration the provider will put "default" there which means to use the Snowflake default for this value.
    comment str
    Specifies a comment for the external volume.
    describe_outputs Sequence[ExternalVolumeDescribeOutputArgs]
    Outputs the result of DESCRIBE EXTERNAL VOLUME for the given external volume. Because of Terraform limitations, the changes on storage*location field do not mark this field as computed.
    fully_qualified_name str
    Fully qualified name of the resource. For more information, see object name resolution.
    name str
    Identifier for the external volume; must be unique for your account. Due to technical limitations (read more here), avoid using the following characters: |, ., ".
    show_outputs Sequence[ExternalVolumeShowOutputArgs]
    Outputs the result of SHOW EXTERNAL VOLUMES for the given external volume.
    storage_locations Sequence[ExternalVolumeStorageLocationArgs]
    List of named cloud storage locations in different regions and, optionally, cloud platforms. Minimum 1 required. The order of the list is important as it impacts the active storage location, and updates will be triggered if it changes. Note that not all parameter combinations are valid as they depend on the given storage*provider. Consult the docs for more details on this.
    allowWrites String
    (Default: fallback to Snowflake default - uses special value that cannot be set in the configuration manually (default)) Specifies whether write operations are allowed for the external volume; must be set to TRUE for Iceberg tables that use Snowflake as the catalog. Available options are: "true" or "false". When the value is not set in the configuration the provider will put "default" there which means to use the Snowflake default for this value.
    comment String
    Specifies a comment for the external volume.
    describeOutputs List<Property Map>
    Outputs the result of DESCRIBE EXTERNAL VOLUME for the given external volume. Because of Terraform limitations, the changes on storage*location field do not mark this field as computed.
    fullyQualifiedName String
    Fully qualified name of the resource. For more information, see object name resolution.
    name String
    Identifier for the external volume; must be unique for your account. Due to technical limitations (read more here), avoid using the following characters: |, ., ".
    showOutputs List<Property Map>
    Outputs the result of SHOW EXTERNAL VOLUMES for the given external volume.
    storageLocations List<Property Map>
    List of named cloud storage locations in different regions and, optionally, cloud platforms. Minimum 1 required. The order of the list is important as it impacts the active storage location, and updates will be triggered if it changes. Note that not all parameter combinations are valid as they depend on the given storage*provider. Consult the docs for more details on this.

    Supporting Types

    ExternalVolumeDescribeOutput, ExternalVolumeDescribeOutputArgs

    ExternalVolumeDescribeOutputStorageLocation, ExternalVolumeDescribeOutputStorageLocationArgs

    ExternalVolumeDescribeOutputStorageLocationAzureStorageLocation, ExternalVolumeDescribeOutputStorageLocationAzureStorageLocationArgs

    ExternalVolumeDescribeOutputStorageLocationGcsStorageLocation, ExternalVolumeDescribeOutputStorageLocationGcsStorageLocationArgs

    ExternalVolumeDescribeOutputStorageLocationS3CompatStorageLocation, ExternalVolumeDescribeOutputStorageLocationS3CompatStorageLocationArgs

    ExternalVolumeDescribeOutputStorageLocationS3StorageLocation, ExternalVolumeDescribeOutputStorageLocationS3StorageLocationArgs

    ExternalVolumeShowOutput, ExternalVolumeShowOutputArgs

    AllowWrites bool
    Comment string
    Name string
    AllowWrites bool
    Comment string
    Name string
    allow_writes bool
    comment string
    name string
    allowWrites Boolean
    comment String
    name String
    allowWrites boolean
    comment string
    name string
    allowWrites Boolean
    comment String
    name String

    ExternalVolumeStorageLocation, ExternalVolumeStorageLocationArgs

    StorageBaseUrl string
    Specifies the base URL for your cloud storage location.
    StorageLocationName string
    Name of the storage location. Must be unique for the external volume. Do not use the name terraformProviderSentinelStorageLocation - this is reserved for the provider for performing update operations. Due to technical limitations (read more here), avoid using the following characters: |, ., ".
    StorageProvider string
    Specifies the cloud storage provider that stores your data files. Valid values are (case-insensitive): GCS | AZURE | S3 | S3GOV | S3COMPAT.
    AzureTenantId string
    Specifies the ID for your Office 365 tenant that the allowed and blocked storage accounts belong to.
    EncryptionKmsKeyId string
    Specifies the ID for the KMS-managed key used to encrypt files.
    EncryptionType string
    Specifies the encryption type used.
    StorageAwsAccessPointArn string
    Specifies the access point ARN for the S3 bucket containing your data files. Only applicable for S3 and S3GOV storage providers.
    StorageAwsExternalId string
    External ID that Snowflake uses to establish a trust relationship with AWS.
    StorageAwsKeyId string
    Specifies the AWS key ID for the S3-compatible storage location. Only applicable for S3COMPAT storage provider.
    StorageAwsRoleArn string
    Specifies the case-sensitive Amazon Resource Name (ARN) of the AWS identity and access management (IAM) role that grants privileges on the S3 bucket containing your data files.
    StorageAwsSecretKey string
    Specifies the AWS secret key for the S3-compatible storage location. Only applicable for S3COMPAT storage provider.
    StorageEndpoint string
    Specifies the endpoint for the S3-compatible storage location. Only applicable for S3COMPAT storage provider.
    UsePrivatelinkEndpoint string
    (Default: fallback to Snowflake default - uses special value that cannot be set in the configuration manually (default)) Specifies whether to use a privatelink endpoint for the storage location. Only applicable for S3, S3GOV, and AZURE storage providers. Available options are: "true" or "false". When the value is not set in the configuration the provider will put "default" there which means to use the Snowflake default for this value.
    StorageBaseUrl string
    Specifies the base URL for your cloud storage location.
    StorageLocationName string
    Name of the storage location. Must be unique for the external volume. Do not use the name terraformProviderSentinelStorageLocation - this is reserved for the provider for performing update operations. Due to technical limitations (read more here), avoid using the following characters: |, ., ".
    StorageProvider string
    Specifies the cloud storage provider that stores your data files. Valid values are (case-insensitive): GCS | AZURE | S3 | S3GOV | S3COMPAT.
    AzureTenantId string
    Specifies the ID for your Office 365 tenant that the allowed and blocked storage accounts belong to.
    EncryptionKmsKeyId string
    Specifies the ID for the KMS-managed key used to encrypt files.
    EncryptionType string
    Specifies the encryption type used.
    StorageAwsAccessPointArn string
    Specifies the access point ARN for the S3 bucket containing your data files. Only applicable for S3 and S3GOV storage providers.
    StorageAwsExternalId string
    External ID that Snowflake uses to establish a trust relationship with AWS.
    StorageAwsKeyId string
    Specifies the AWS key ID for the S3-compatible storage location. Only applicable for S3COMPAT storage provider.
    StorageAwsRoleArn string
    Specifies the case-sensitive Amazon Resource Name (ARN) of the AWS identity and access management (IAM) role that grants privileges on the S3 bucket containing your data files.
    StorageAwsSecretKey string
    Specifies the AWS secret key for the S3-compatible storage location. Only applicable for S3COMPAT storage provider.
    StorageEndpoint string
    Specifies the endpoint for the S3-compatible storage location. Only applicable for S3COMPAT storage provider.
    UsePrivatelinkEndpoint string
    (Default: fallback to Snowflake default - uses special value that cannot be set in the configuration manually (default)) Specifies whether to use a privatelink endpoint for the storage location. Only applicable for S3, S3GOV, and AZURE storage providers. Available options are: "true" or "false". When the value is not set in the configuration the provider will put "default" there which means to use the Snowflake default for this value.
    storage_base_url string
    Specifies the base URL for your cloud storage location.
    storage_location_name string
    Name of the storage location. Must be unique for the external volume. Do not use the name terraformProviderSentinelStorageLocation - this is reserved for the provider for performing update operations. Due to technical limitations (read more here), avoid using the following characters: |, ., ".
    storage_provider string
    Specifies the cloud storage provider that stores your data files. Valid values are (case-insensitive): GCS | AZURE | S3 | S3GOV | S3COMPAT.
    azure_tenant_id string
    Specifies the ID for your Office 365 tenant that the allowed and blocked storage accounts belong to.
    encryption_kms_key_id string
    Specifies the ID for the KMS-managed key used to encrypt files.
    encryption_type string
    Specifies the encryption type used.
    storage_aws_access_point_arn string
    Specifies the access point ARN for the S3 bucket containing your data files. Only applicable for S3 and S3GOV storage providers.
    storage_aws_external_id string
    External ID that Snowflake uses to establish a trust relationship with AWS.
    storage_aws_key_id string
    Specifies the AWS key ID for the S3-compatible storage location. Only applicable for S3COMPAT storage provider.
    storage_aws_role_arn string
    Specifies the case-sensitive Amazon Resource Name (ARN) of the AWS identity and access management (IAM) role that grants privileges on the S3 bucket containing your data files.
    storage_aws_secret_key string
    Specifies the AWS secret key for the S3-compatible storage location. Only applicable for S3COMPAT storage provider.
    storage_endpoint string
    Specifies the endpoint for the S3-compatible storage location. Only applicable for S3COMPAT storage provider.
    use_privatelink_endpoint string
    (Default: fallback to Snowflake default - uses special value that cannot be set in the configuration manually (default)) Specifies whether to use a privatelink endpoint for the storage location. Only applicable for S3, S3GOV, and AZURE storage providers. Available options are: "true" or "false". When the value is not set in the configuration the provider will put "default" there which means to use the Snowflake default for this value.
    storageBaseUrl String
    Specifies the base URL for your cloud storage location.
    storageLocationName String
    Name of the storage location. Must be unique for the external volume. Do not use the name terraformProviderSentinelStorageLocation - this is reserved for the provider for performing update operations. Due to technical limitations (read more here), avoid using the following characters: |, ., ".
    storageProvider String
    Specifies the cloud storage provider that stores your data files. Valid values are (case-insensitive): GCS | AZURE | S3 | S3GOV | S3COMPAT.
    azureTenantId String
    Specifies the ID for your Office 365 tenant that the allowed and blocked storage accounts belong to.
    encryptionKmsKeyId String
    Specifies the ID for the KMS-managed key used to encrypt files.
    encryptionType String
    Specifies the encryption type used.
    storageAwsAccessPointArn String
    Specifies the access point ARN for the S3 bucket containing your data files. Only applicable for S3 and S3GOV storage providers.
    storageAwsExternalId String
    External ID that Snowflake uses to establish a trust relationship with AWS.
    storageAwsKeyId String
    Specifies the AWS key ID for the S3-compatible storage location. Only applicable for S3COMPAT storage provider.
    storageAwsRoleArn String
    Specifies the case-sensitive Amazon Resource Name (ARN) of the AWS identity and access management (IAM) role that grants privileges on the S3 bucket containing your data files.
    storageAwsSecretKey String
    Specifies the AWS secret key for the S3-compatible storage location. Only applicable for S3COMPAT storage provider.
    storageEndpoint String
    Specifies the endpoint for the S3-compatible storage location. Only applicable for S3COMPAT storage provider.
    usePrivatelinkEndpoint String
    (Default: fallback to Snowflake default - uses special value that cannot be set in the configuration manually (default)) Specifies whether to use a privatelink endpoint for the storage location. Only applicable for S3, S3GOV, and AZURE storage providers. Available options are: "true" or "false". When the value is not set in the configuration the provider will put "default" there which means to use the Snowflake default for this value.
    storageBaseUrl string
    Specifies the base URL for your cloud storage location.
    storageLocationName string
    Name of the storage location. Must be unique for the external volume. Do not use the name terraformProviderSentinelStorageLocation - this is reserved for the provider for performing update operations. Due to technical limitations (read more here), avoid using the following characters: |, ., ".
    storageProvider string
    Specifies the cloud storage provider that stores your data files. Valid values are (case-insensitive): GCS | AZURE | S3 | S3GOV | S3COMPAT.
    azureTenantId string
    Specifies the ID for your Office 365 tenant that the allowed and blocked storage accounts belong to.
    encryptionKmsKeyId string
    Specifies the ID for the KMS-managed key used to encrypt files.
    encryptionType string
    Specifies the encryption type used.
    storageAwsAccessPointArn string
    Specifies the access point ARN for the S3 bucket containing your data files. Only applicable for S3 and S3GOV storage providers.
    storageAwsExternalId string
    External ID that Snowflake uses to establish a trust relationship with AWS.
    storageAwsKeyId string
    Specifies the AWS key ID for the S3-compatible storage location. Only applicable for S3COMPAT storage provider.
    storageAwsRoleArn string
    Specifies the case-sensitive Amazon Resource Name (ARN) of the AWS identity and access management (IAM) role that grants privileges on the S3 bucket containing your data files.
    storageAwsSecretKey string
    Specifies the AWS secret key for the S3-compatible storage location. Only applicable for S3COMPAT storage provider.
    storageEndpoint string
    Specifies the endpoint for the S3-compatible storage location. Only applicable for S3COMPAT storage provider.
    usePrivatelinkEndpoint string
    (Default: fallback to Snowflake default - uses special value that cannot be set in the configuration manually (default)) Specifies whether to use a privatelink endpoint for the storage location. Only applicable for S3, S3GOV, and AZURE storage providers. Available options are: "true" or "false". When the value is not set in the configuration the provider will put "default" there which means to use the Snowflake default for this value.
    storage_base_url str
    Specifies the base URL for your cloud storage location.
    storage_location_name str
    Name of the storage location. Must be unique for the external volume. Do not use the name terraformProviderSentinelStorageLocation - this is reserved for the provider for performing update operations. Due to technical limitations (read more here), avoid using the following characters: |, ., ".
    storage_provider str
    Specifies the cloud storage provider that stores your data files. Valid values are (case-insensitive): GCS | AZURE | S3 | S3GOV | S3COMPAT.
    azure_tenant_id str
    Specifies the ID for your Office 365 tenant that the allowed and blocked storage accounts belong to.
    encryption_kms_key_id str
    Specifies the ID for the KMS-managed key used to encrypt files.
    encryption_type str
    Specifies the encryption type used.
    storage_aws_access_point_arn str
    Specifies the access point ARN for the S3 bucket containing your data files. Only applicable for S3 and S3GOV storage providers.
    storage_aws_external_id str
    External ID that Snowflake uses to establish a trust relationship with AWS.
    storage_aws_key_id str
    Specifies the AWS key ID for the S3-compatible storage location. Only applicable for S3COMPAT storage provider.
    storage_aws_role_arn str
    Specifies the case-sensitive Amazon Resource Name (ARN) of the AWS identity and access management (IAM) role that grants privileges on the S3 bucket containing your data files.
    storage_aws_secret_key str
    Specifies the AWS secret key for the S3-compatible storage location. Only applicable for S3COMPAT storage provider.
    storage_endpoint str
    Specifies the endpoint for the S3-compatible storage location. Only applicable for S3COMPAT storage provider.
    use_privatelink_endpoint str
    (Default: fallback to Snowflake default - uses special value that cannot be set in the configuration manually (default)) Specifies whether to use a privatelink endpoint for the storage location. Only applicable for S3, S3GOV, and AZURE storage providers. Available options are: "true" or "false". When the value is not set in the configuration the provider will put "default" there which means to use the Snowflake default for this value.
    storageBaseUrl String
    Specifies the base URL for your cloud storage location.
    storageLocationName String
    Name of the storage location. Must be unique for the external volume. Do not use the name terraformProviderSentinelStorageLocation - this is reserved for the provider for performing update operations. Due to technical limitations (read more here), avoid using the following characters: |, ., ".
    storageProvider String
    Specifies the cloud storage provider that stores your data files. Valid values are (case-insensitive): GCS | AZURE | S3 | S3GOV | S3COMPAT.
    azureTenantId String
    Specifies the ID for your Office 365 tenant that the allowed and blocked storage accounts belong to.
    encryptionKmsKeyId String
    Specifies the ID for the KMS-managed key used to encrypt files.
    encryptionType String
    Specifies the encryption type used.
    storageAwsAccessPointArn String
    Specifies the access point ARN for the S3 bucket containing your data files. Only applicable for S3 and S3GOV storage providers.
    storageAwsExternalId String
    External ID that Snowflake uses to establish a trust relationship with AWS.
    storageAwsKeyId String
    Specifies the AWS key ID for the S3-compatible storage location. Only applicable for S3COMPAT storage provider.
    storageAwsRoleArn String
    Specifies the case-sensitive Amazon Resource Name (ARN) of the AWS identity and access management (IAM) role that grants privileges on the S3 bucket containing your data files.
    storageAwsSecretKey String
    Specifies the AWS secret key for the S3-compatible storage location. Only applicable for S3COMPAT storage provider.
    storageEndpoint String
    Specifies the endpoint for the S3-compatible storage location. Only applicable for S3COMPAT storage provider.
    usePrivatelinkEndpoint String
    (Default: fallback to Snowflake default - uses special value that cannot be set in the configuration manually (default)) Specifies whether to use a privatelink endpoint for the storage location. Only applicable for S3, S3GOV, and AZURE storage providers. Available options are: "true" or "false". When the value is not set in the configuration the provider will put "default" there which means to use the Snowflake default for this value.

    Import

    $ pulumi import snowflake:index/externalVolume:ExternalVolume example '"<external_volume_name>"'
    

    To learn more about importing existing cloud resources, see Importing resources.

    Package Details

    Repository
    Snowflake pulumi/pulumi-snowflake
    License
    Apache-2.0
    Notes
    This Pulumi package is based on the snowflake Terraform Provider.
    snowflake logo
    Viewing docs for Snowflake v2.15.0
    published on Saturday, May 9, 2026 by Pulumi
      Try Pulumi Cloud free. Your team will thank you.