databricks.File
Explore with Pulumi AI
This resource allows uploading and downloading files in databricks_volume.
Notes:
- Currently the limit is 5GiB in octet-stream.
- Currently, only UC volumes are supported. The list of destinations may change.
Example Usage
In order to manage a file on Unity Catalog Volumes with Pulumi, you must specify the source
attribute containing the full path to the file on the local filesystem.
import * as pulumi from "@pulumi/pulumi";
import * as databricks from "@pulumi/databricks";
const sandbox = new databricks.Catalog("sandbox", {
metastoreId: thisDatabricksMetastore.id,
name: "sandbox",
comment: "this catalog is managed by terraform",
properties: {
purpose: "testing",
},
});
const things = new databricks.Schema("things", {
catalogName: sandbox.name,
name: "things",
comment: "this schema is managed by terraform",
properties: {
kind: "various",
},
});
const _this = new databricks.Volume("this", {
name: "quickstart_volume",
catalogName: sandbox.name,
schemaName: things.name,
volumeType: "MANAGED",
comment: "this volume is managed by terraform",
});
const thisFile = new databricks.File("this", {
source: "/full/path/on/local/system",
path: pulumi.interpolate`${_this.volumePath}/fileName`,
});
import pulumi
import pulumi_databricks as databricks
sandbox = databricks.Catalog("sandbox",
metastore_id=this_databricks_metastore["id"],
name="sandbox",
comment="this catalog is managed by terraform",
properties={
"purpose": "testing",
})
things = databricks.Schema("things",
catalog_name=sandbox.name,
name="things",
comment="this schema is managed by terraform",
properties={
"kind": "various",
})
this = databricks.Volume("this",
name="quickstart_volume",
catalog_name=sandbox.name,
schema_name=things.name,
volume_type="MANAGED",
comment="this volume is managed by terraform")
this_file = databricks.File("this",
source="/full/path/on/local/system",
path=this.volume_path.apply(lambda volume_path: f"{volume_path}/fileName"))
package main
import (
"fmt"
"github.com/pulumi/pulumi-databricks/sdk/go/databricks"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
sandbox, err := databricks.NewCatalog(ctx, "sandbox", &databricks.CatalogArgs{
MetastoreId: pulumi.Any(thisDatabricksMetastore.Id),
Name: pulumi.String("sandbox"),
Comment: pulumi.String("this catalog is managed by terraform"),
Properties: pulumi.StringMap{
"purpose": pulumi.String("testing"),
},
})
if err != nil {
return err
}
things, err := databricks.NewSchema(ctx, "things", &databricks.SchemaArgs{
CatalogName: sandbox.Name,
Name: pulumi.String("things"),
Comment: pulumi.String("this schema is managed by terraform"),
Properties: pulumi.StringMap{
"kind": pulumi.String("various"),
},
})
if err != nil {
return err
}
this, err := databricks.NewVolume(ctx, "this", &databricks.VolumeArgs{
Name: pulumi.String("quickstart_volume"),
CatalogName: sandbox.Name,
SchemaName: things.Name,
VolumeType: pulumi.String("MANAGED"),
Comment: pulumi.String("this volume is managed by terraform"),
})
if err != nil {
return err
}
_, err = databricks.NewFile(ctx, "this", &databricks.FileArgs{
Source: pulumi.String("/full/path/on/local/system"),
Path: this.VolumePath.ApplyT(func(volumePath string) (string, error) {
return fmt.Sprintf("%v/fileName", volumePath), nil
}).(pulumi.StringOutput),
})
if err != nil {
return err
}
return nil
})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Databricks = Pulumi.Databricks;
return await Deployment.RunAsync(() =>
{
var sandbox = new Databricks.Catalog("sandbox", new()
{
MetastoreId = thisDatabricksMetastore.Id,
Name = "sandbox",
Comment = "this catalog is managed by terraform",
Properties =
{
{ "purpose", "testing" },
},
});
var things = new Databricks.Schema("things", new()
{
CatalogName = sandbox.Name,
Name = "things",
Comment = "this schema is managed by terraform",
Properties =
{
{ "kind", "various" },
},
});
var @this = new Databricks.Volume("this", new()
{
Name = "quickstart_volume",
CatalogName = sandbox.Name,
SchemaName = things.Name,
VolumeType = "MANAGED",
Comment = "this volume is managed by terraform",
});
var thisFile = new Databricks.File("this", new()
{
Source = "/full/path/on/local/system",
Path = @this.VolumePath.Apply(volumePath => $"{volumePath}/fileName"),
});
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.databricks.Catalog;
import com.pulumi.databricks.CatalogArgs;
import com.pulumi.databricks.Schema;
import com.pulumi.databricks.SchemaArgs;
import com.pulumi.databricks.Volume;
import com.pulumi.databricks.VolumeArgs;
import com.pulumi.databricks.File;
import com.pulumi.databricks.FileArgs;
import java.util.List;
import java.util.ArrayList;
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) {
var sandbox = new Catalog("sandbox", CatalogArgs.builder()
.metastoreId(thisDatabricksMetastore.id())
.name("sandbox")
.comment("this catalog is managed by terraform")
.properties(Map.of("purpose", "testing"))
.build());
var things = new Schema("things", SchemaArgs.builder()
.catalogName(sandbox.name())
.name("things")
.comment("this schema is managed by terraform")
.properties(Map.of("kind", "various"))
.build());
var this_ = new Volume("this", VolumeArgs.builder()
.name("quickstart_volume")
.catalogName(sandbox.name())
.schemaName(things.name())
.volumeType("MANAGED")
.comment("this volume is managed by terraform")
.build());
var thisFile = new File("thisFile", FileArgs.builder()
.source("/full/path/on/local/system")
.path(this_.volumePath().applyValue(volumePath -> String.format("%s/fileName", volumePath)))
.build());
}
}
resources:
sandbox:
type: databricks:Catalog
properties:
metastoreId: ${thisDatabricksMetastore.id}
name: sandbox
comment: this catalog is managed by terraform
properties:
purpose: testing
things:
type: databricks:Schema
properties:
catalogName: ${sandbox.name}
name: things
comment: this schema is managed by terraform
properties:
kind: various
this:
type: databricks:Volume
properties:
name: quickstart_volume
catalogName: ${sandbox.name}
schemaName: ${things.name}
volumeType: MANAGED
comment: this volume is managed by terraform
thisFile:
type: databricks:File
name: this
properties:
source: /full/path/on/local/system
path: ${this.volumePath}/fileName
You can also inline sources through content_base64
attribute.
import * as pulumi from "@pulumi/pulumi";
import * as databricks from "@pulumi/databricks";
import * as std from "@pulumi/std";
const initScript = new databricks.File("init_script", {
contentBase64: std.base64encode({
input: `#!/bin/bash
echo "Hello World"
`,
}).then(invoke => invoke.result),
path: `${_this.volumePath}/fileName`,
});
import pulumi
import pulumi_databricks as databricks
import pulumi_std as std
init_script = databricks.File("init_script",
content_base64=std.base64encode(input="""#!/bin/bash
echo "Hello World"
""").result,
path=f"{this['volumePath']}/fileName")
package main
import (
"fmt"
"github.com/pulumi/pulumi-databricks/sdk/go/databricks"
"github.com/pulumi/pulumi-std/sdk/go/std"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
invokeBase64encode, err := std.Base64encode(ctx, &std.Base64encodeArgs{
Input: "#!/bin/bash\necho \"Hello World\"\n",
}, nil)
if err != nil {
return err
}
_, err = databricks.NewFile(ctx, "init_script", &databricks.FileArgs{
ContentBase64: pulumi.String(invokeBase64encode.Result),
Path: pulumi.Sprintf("%v/fileName", this.VolumePath),
})
if err != nil {
return err
}
return nil
})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Databricks = Pulumi.Databricks;
using Std = Pulumi.Std;
return await Deployment.RunAsync(() =>
{
var initScript = new Databricks.File("init_script", new()
{
ContentBase64 = Std.Base64encode.Invoke(new()
{
Input = @"#!/bin/bash
echo ""Hello World""
",
}).Apply(invoke => invoke.Result),
Path = $"{@this.VolumePath}/fileName",
});
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.databricks.File;
import com.pulumi.databricks.FileArgs;
import java.util.List;
import java.util.ArrayList;
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) {
var initScript = new File("initScript", FileArgs.builder()
.contentBase64(StdFunctions.base64encode(Base64encodeArgs.builder()
.input("""
#!/bin/bash
echo "Hello World"
""")
.build()).result())
.path(String.format("%s/fileName", this_.volumePath()))
.build());
}
}
resources:
initScript:
type: databricks:File
name: init_script
properties:
contentBase64:
fn::invoke:
Function: std:base64encode
Arguments:
input: |
#!/bin/bash
echo "Hello World"
Return: result
path: ${this.volumePath}/fileName
Related Resources
The following resources are often used in the same context:
- databricks.WorkspaceFile
- End to end workspace management guide.
- databricks.Volume to manage volumes within Unity Catalog.
Create File Resource
Resources are created with functions called constructors. To learn more about declaring and configuring resources, see Resources.
Constructor syntax
new File(name: string, args: FileArgs, opts?: CustomResourceOptions);
@overload
def File(resource_name: str,
args: FileArgs,
opts: Optional[ResourceOptions] = None)
@overload
def File(resource_name: str,
opts: Optional[ResourceOptions] = None,
path: Optional[str] = None,
content_base64: Optional[str] = None,
md5: Optional[str] = None,
remote_file_modified: Optional[bool] = None,
source: Optional[str] = None)
func NewFile(ctx *Context, name string, args FileArgs, opts ...ResourceOption) (*File, error)
public File(string name, FileArgs args, CustomResourceOptions? opts = null)
type: databricks:File
properties: # The arguments to resource properties.
options: # Bag of options to control resource's behavior.
Parameters
- name string
- The unique name of the resource.
- args FileArgs
- 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 FileArgs
- 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 FileArgs
- The arguments to resource properties.
- opts ResourceOption
- Bag of options to control resource's behavior.
- name string
- The unique name of the resource.
- args FileArgs
- The arguments to resource properties.
- opts CustomResourceOptions
- Bag of options to control resource's behavior.
- name String
- The unique name of the resource.
- args FileArgs
- 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 fileResource = new Databricks.File("fileResource", new()
{
Path = "string",
ContentBase64 = "string",
Md5 = "string",
RemoteFileModified = false,
Source = "string",
});
example, err := databricks.NewFile(ctx, "fileResource", &databricks.FileArgs{
Path: pulumi.String("string"),
ContentBase64: pulumi.String("string"),
Md5: pulumi.String("string"),
RemoteFileModified: pulumi.Bool(false),
Source: pulumi.String("string"),
})
var fileResource = new File("fileResource", FileArgs.builder()
.path("string")
.contentBase64("string")
.md5("string")
.remoteFileModified(false)
.source("string")
.build());
file_resource = databricks.File("fileResource",
path="string",
content_base64="string",
md5="string",
remote_file_modified=False,
source="string")
const fileResource = new databricks.File("fileResource", {
path: "string",
contentBase64: "string",
md5: "string",
remoteFileModified: false,
source: "string",
});
type: databricks:File
properties:
contentBase64: string
md5: string
path: string
remoteFileModified: false
source: string
File Resource Properties
To learn more about resource properties and how to use them, see Inputs and Outputs in the Architecture and Concepts docs.
Inputs
The File resource accepts the following input properties:
- Path string
- The path of the file in which you wish to save. For example,
/Volumes/main/default/volume1/file.txt
. - Content
Base64 string - Contents in base 64 format. Conflicts with
source
. - Md5 string
- Remote
File boolModified - Source string
- The full absolute path to the file. Conflicts with
content_base64
.
- Path string
- The path of the file in which you wish to save. For example,
/Volumes/main/default/volume1/file.txt
. - Content
Base64 string - Contents in base 64 format. Conflicts with
source
. - Md5 string
- Remote
File boolModified - Source string
- The full absolute path to the file. Conflicts with
content_base64
.
- path String
- The path of the file in which you wish to save. For example,
/Volumes/main/default/volume1/file.txt
. - content
Base64 String - Contents in base 64 format. Conflicts with
source
. - md5 String
- remote
File BooleanModified - source String
- The full absolute path to the file. Conflicts with
content_base64
.
- path string
- The path of the file in which you wish to save. For example,
/Volumes/main/default/volume1/file.txt
. - content
Base64 string - Contents in base 64 format. Conflicts with
source
. - md5 string
- remote
File booleanModified - source string
- The full absolute path to the file. Conflicts with
content_base64
.
- path str
- The path of the file in which you wish to save. For example,
/Volumes/main/default/volume1/file.txt
. - content_
base64 str - Contents in base 64 format. Conflicts with
source
. - md5 str
- remote_
file_ boolmodified - source str
- The full absolute path to the file. Conflicts with
content_base64
.
- path String
- The path of the file in which you wish to save. For example,
/Volumes/main/default/volume1/file.txt
. - content
Base64 String - Contents in base 64 format. Conflicts with
source
. - md5 String
- remote
File BooleanModified - source String
- The full absolute path to the file. Conflicts with
content_base64
.
Outputs
All input properties are implicitly available as output properties. Additionally, the File resource produces the following output properties:
- File
Size int - The file size of the file that is being tracked by this resource in bytes.
- Id string
- The provider-assigned unique ID for this managed resource.
- Modification
Time string - The last time stamp when the file was modified
- File
Size int - The file size of the file that is being tracked by this resource in bytes.
- Id string
- The provider-assigned unique ID for this managed resource.
- Modification
Time string - The last time stamp when the file was modified
- file
Size Integer - The file size of the file that is being tracked by this resource in bytes.
- id String
- The provider-assigned unique ID for this managed resource.
- modification
Time String - The last time stamp when the file was modified
- file
Size number - The file size of the file that is being tracked by this resource in bytes.
- id string
- The provider-assigned unique ID for this managed resource.
- modification
Time string - The last time stamp when the file was modified
- file_
size int - The file size of the file that is being tracked by this resource in bytes.
- id str
- The provider-assigned unique ID for this managed resource.
- modification_
time str - The last time stamp when the file was modified
- file
Size Number - The file size of the file that is being tracked by this resource in bytes.
- id String
- The provider-assigned unique ID for this managed resource.
- modification
Time String - The last time stamp when the file was modified
Look up Existing File Resource
Get an existing File 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?: FileState, opts?: CustomResourceOptions): File
@staticmethod
def get(resource_name: str,
id: str,
opts: Optional[ResourceOptions] = None,
content_base64: Optional[str] = None,
file_size: Optional[int] = None,
md5: Optional[str] = None,
modification_time: Optional[str] = None,
path: Optional[str] = None,
remote_file_modified: Optional[bool] = None,
source: Optional[str] = None) -> File
func GetFile(ctx *Context, name string, id IDInput, state *FileState, opts ...ResourceOption) (*File, error)
public static File Get(string name, Input<string> id, FileState? state, CustomResourceOptions? opts = null)
public static File get(String name, Output<String> id, FileState state, CustomResourceOptions options)
Resource lookup is not supported in YAML
- 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.
- Content
Base64 string - Contents in base 64 format. Conflicts with
source
. - File
Size int - The file size of the file that is being tracked by this resource in bytes.
- Md5 string
- Modification
Time string - The last time stamp when the file was modified
- Path string
- The path of the file in which you wish to save. For example,
/Volumes/main/default/volume1/file.txt
. - Remote
File boolModified - Source string
- The full absolute path to the file. Conflicts with
content_base64
.
- Content
Base64 string - Contents in base 64 format. Conflicts with
source
. - File
Size int - The file size of the file that is being tracked by this resource in bytes.
- Md5 string
- Modification
Time string - The last time stamp when the file was modified
- Path string
- The path of the file in which you wish to save. For example,
/Volumes/main/default/volume1/file.txt
. - Remote
File boolModified - Source string
- The full absolute path to the file. Conflicts with
content_base64
.
- content
Base64 String - Contents in base 64 format. Conflicts with
source
. - file
Size Integer - The file size of the file that is being tracked by this resource in bytes.
- md5 String
- modification
Time String - The last time stamp when the file was modified
- path String
- The path of the file in which you wish to save. For example,
/Volumes/main/default/volume1/file.txt
. - remote
File BooleanModified - source String
- The full absolute path to the file. Conflicts with
content_base64
.
- content
Base64 string - Contents in base 64 format. Conflicts with
source
. - file
Size number - The file size of the file that is being tracked by this resource in bytes.
- md5 string
- modification
Time string - The last time stamp when the file was modified
- path string
- The path of the file in which you wish to save. For example,
/Volumes/main/default/volume1/file.txt
. - remote
File booleanModified - source string
- The full absolute path to the file. Conflicts with
content_base64
.
- content_
base64 str - Contents in base 64 format. Conflicts with
source
. - file_
size int - The file size of the file that is being tracked by this resource in bytes.
- md5 str
- modification_
time str - The last time stamp when the file was modified
- path str
- The path of the file in which you wish to save. For example,
/Volumes/main/default/volume1/file.txt
. - remote_
file_ boolmodified - source str
- The full absolute path to the file. Conflicts with
content_base64
.
- content
Base64 String - Contents in base 64 format. Conflicts with
source
. - file
Size Number - The file size of the file that is being tracked by this resource in bytes.
- md5 String
- modification
Time String - The last time stamp when the file was modified
- path String
- The path of the file in which you wish to save. For example,
/Volumes/main/default/volume1/file.txt
. - remote
File BooleanModified - source String
- The full absolute path to the file. Conflicts with
content_base64
.
Import
The resource databricks_file
can be imported using the path of the file:
bash
$ pulumi import databricks:index/file:File this <path>
To learn more about importing existing cloud resources, see Importing resources.
Package Details
- Repository
- databricks pulumi/pulumi-databricks
- License
- Apache-2.0
- Notes
- This Pulumi package is based on the
databricks
Terraform Provider.