@pulumi/databricks 1.32.0-alpha.1706827626 → 1.32.0-alpha.1707285262
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/mount.d.ts +238 -0
- package/mount.js +238 -0
- package/mount.js.map +1 -1
- package/mwsCredentials.d.ts +6 -51
- package/mwsCredentials.js +6 -27
- package/mwsCredentials.js.map +1 -1
- package/mwsNetworks.d.ts +2 -46
- package/mwsNetworks.js +2 -46
- package/mwsNetworks.js.map +1 -1
- package/mwsStorageConfigurations.d.ts +7 -49
- package/mwsStorageConfigurations.js +7 -22
- package/mwsStorageConfigurations.js.map +1 -1
- package/mwsWorkspaces.d.ts +224 -0
- package/mwsWorkspaces.js +224 -0
- package/mwsWorkspaces.js.map +1 -1
- package/package.json +1 -1
package/mount.d.ts
CHANGED
|
@@ -2,6 +2,244 @@ import * as pulumi from "@pulumi/pulumi";
|
|
|
2
2
|
import * as inputs from "./types/input";
|
|
3
3
|
import * as outputs from "./types/output";
|
|
4
4
|
/**
|
|
5
|
+
* This resource will mount your cloud storage
|
|
6
|
+
* * `gs` - to [mount Google Cloud Storage](https://docs.gcp.databricks.com/data/data-sources/google/gcs.html)
|
|
7
|
+
* * `abfs` - to [mount ADLS Gen2](https://docs.microsoft.com/en-us/azure/databricks/data/data-sources/azure/adls-gen2/) using Azure Blob Filesystem (ABFS) driver
|
|
8
|
+
* * `adl` - to [mount ADLS Gen1](https://docs.microsoft.com/en-us/azure/databricks/data/data-sources/azure/azure-datalake) using Azure Data Lake (ADL) driver
|
|
9
|
+
* * `wasb` - to [mount Azure Blob Storage](https://docs.microsoft.com/en-us/azure/databricks/data/data-sources/azure/azure-storage) using Windows Azure Storage Blob (WASB) driver
|
|
10
|
+
*
|
|
11
|
+
* 1. Use generic arguments - you have a responsibility for providing all necessary parameters that are required to mount specific storage. This is most flexible option
|
|
12
|
+
*
|
|
13
|
+
* ## Common arguments
|
|
14
|
+
*
|
|
15
|
+
* * `clusterId` - (Optional, String) Cluster to use for mounting. If no cluster is specified, a new cluster will be created and will mount the bucket for all of the clusters in this workspace. If the cluster is not running - it's going to be started, so be aware to set auto-termination rules on it.
|
|
16
|
+
* * `name` - (Optional, String) Name, under which mount will be accessible in `dbfs:/mnt/<MOUNT_NAME>`. If not specified, provider will try to infer it from depending on the resource type:
|
|
17
|
+
* * `bucketName` for AWS S3 and Google Cloud Storage
|
|
18
|
+
* * `containerName` for ADLS Gen2 and Azure Blob Storage
|
|
19
|
+
* * `storageResourceName` for ADLS Gen1
|
|
20
|
+
* * `uri` - (Optional, String) the URI for accessing specific storage (`s3a://....`, `abfss://....`, `gs://....`, etc.)
|
|
21
|
+
* * `extraConfigs` - (Optional, String map) configuration parameters that are necessary for mounting of specific storage
|
|
22
|
+
* * `resourceId` - (Optional, String) resource ID for a given storage account. Could be used to fill defaults, such as storage account & container names on Azure.
|
|
23
|
+
* * `encryptionType` - (Optional, String) encryption type. Currently used only for [AWS S3 mounts](https://docs.databricks.com/data/data-sources/aws/amazon-s3.html#encrypt-data-in-s3-buckets)
|
|
24
|
+
*
|
|
25
|
+
* ### Example mounting ADLS Gen2 using uri and extraConfigs
|
|
26
|
+
*
|
|
27
|
+
* ```typescript
|
|
28
|
+
* import * as pulumi from "@pulumi/pulumi";
|
|
29
|
+
* import * as databricks from "@pulumi/databricks";
|
|
30
|
+
*
|
|
31
|
+
* const tenantId = "00000000-1111-2222-3333-444444444444";
|
|
32
|
+
* const clientId = "55555555-6666-7777-8888-999999999999";
|
|
33
|
+
* const secretScope = "some-kv";
|
|
34
|
+
* const secretKey = "some-sp-secret";
|
|
35
|
+
* const container = "test";
|
|
36
|
+
* const storageAcc = "lrs";
|
|
37
|
+
* const _this = new databricks.Mount("this", {
|
|
38
|
+
* uri: `abfss://${container}@${storageAcc}.dfs.core.windows.net`,
|
|
39
|
+
* extraConfigs: {
|
|
40
|
+
* "fs.azure.account.auth.type": "OAuth",
|
|
41
|
+
* "fs.azure.account.oauth.provider.type": "org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider",
|
|
42
|
+
* "fs.azure.account.oauth2.client.id": clientId,
|
|
43
|
+
* "fs.azure.account.oauth2.client.secret": `{{secrets/${secretScope}/${secretKey}}}`,
|
|
44
|
+
* "fs.azure.account.oauth2.client.endpoint": `https://login.microsoftonline.com/${tenantId}/oauth2/token`,
|
|
45
|
+
* "fs.azure.createRemoteFileSystemDuringInitialization": "false",
|
|
46
|
+
* },
|
|
47
|
+
* });
|
|
48
|
+
* ```
|
|
49
|
+
*
|
|
50
|
+
* ## s3 block
|
|
51
|
+
*
|
|
52
|
+
* This block allows specifying parameters for mounting of the ADLS Gen2. The following arguments are required inside the `s3` block:
|
|
53
|
+
*
|
|
54
|
+
* * `instanceProfile` - (Optional) (String) ARN of registered instance profile for data access. If it's not specified, then the `clusterId` should be provided, and the cluster should have an instance profile attached to it. If both `clusterId` & `instanceProfile` are specified, then `clusterId` takes precedence.
|
|
55
|
+
* * `bucketName` - (Required) (String) S3 bucket name to be mounted.
|
|
56
|
+
*
|
|
57
|
+
* ### Example of mounting S3
|
|
58
|
+
*
|
|
59
|
+
* ```typescript
|
|
60
|
+
* import * as pulumi from "@pulumi/pulumi";
|
|
61
|
+
* import * as databricks from "@pulumi/databricks";
|
|
62
|
+
*
|
|
63
|
+
* // now you can do `%fs ls /mnt/experiments` in notebooks
|
|
64
|
+
* const _this = new databricks.Mount("this", {s3: {
|
|
65
|
+
* instanceProfile: databricks_instance_profile.ds.id,
|
|
66
|
+
* bucketName: aws_s3_bucket["this"].bucket,
|
|
67
|
+
* }});
|
|
68
|
+
* ```
|
|
69
|
+
*
|
|
70
|
+
* ## abfs block
|
|
71
|
+
*
|
|
72
|
+
* This block allows specifying parameters for mounting of the ADLS Gen2. The following arguments are required inside the `abfs` block:
|
|
73
|
+
*
|
|
74
|
+
* * `clientId` - (Required) (String) This is the clientId (Application Object ID) for the enterprise application for the service principal.
|
|
75
|
+
* * `tenantId` - (Optional) (String) This is your azure directory tenant id. It is required for creating the mount. (Could be omitted if Azure authentication is used, and we can extract `tenantId` from it).
|
|
76
|
+
* * `clientSecretKey` - (Required) (String) This is the secret key in which your service principal/enterprise app client secret will be stored.
|
|
77
|
+
* * `clientSecretScope` - (Required) (String) This is the secret scope in which your service principal/enterprise app client secret will be stored.
|
|
78
|
+
* * `containerName` - (Required) (String) ADLS gen2 container name. (Could be omitted if `resourceId` is provided)
|
|
79
|
+
* * `storageAccountName` - (Required) (String) The name of the storage resource in which the data is. (Could be omitted if `resourceId` is provided)
|
|
80
|
+
* * `directory` - (Computed) (String) This is optional if you don't want to add an additional directory that you wish to mount. This must start with a "/".
|
|
81
|
+
* * `initializeFileSystem` - (Required) (Bool) either or not initialize FS for the first use
|
|
82
|
+
*
|
|
83
|
+
* ### Creating mount for ADLS Gen2 using abfs block
|
|
84
|
+
*
|
|
85
|
+
* In this example, we're using Azure authentication, so we can omit some parameters (`tenantId`, `storageAccountName`, and `containerName`) that will be detected automatically.
|
|
86
|
+
*
|
|
87
|
+
* ```typescript
|
|
88
|
+
* import * as pulumi from "@pulumi/pulumi";
|
|
89
|
+
* import * as azurerm from "@pulumi/azurerm";
|
|
90
|
+
* import * as databricks from "@pulumi/databricks";
|
|
91
|
+
*
|
|
92
|
+
* const terraform = new databricks.SecretScope("terraform", {initialManagePrincipal: "users"});
|
|
93
|
+
* const servicePrincipalKey = new databricks.Secret("servicePrincipalKey", {
|
|
94
|
+
* key: "service_principal_key",
|
|
95
|
+
* stringValue: _var.ARM_CLIENT_SECRET,
|
|
96
|
+
* scope: terraform.name,
|
|
97
|
+
* });
|
|
98
|
+
* const thisazurerm_storage_account = new azurerm.index.Azurerm_storage_account("thisazurerm_storage_account", {
|
|
99
|
+
* name: `${_var.prefix}datalake`,
|
|
100
|
+
* resourceGroupName: _var.resource_group_name,
|
|
101
|
+
* location: _var.resource_group_location,
|
|
102
|
+
* accountTier: "Standard",
|
|
103
|
+
* accountReplicationType: "GRS",
|
|
104
|
+
* accountKind: "StorageV2",
|
|
105
|
+
* isHnsEnabled: true,
|
|
106
|
+
* });
|
|
107
|
+
* const thisazurerm_role_assignment = new azurerm.index.Azurerm_role_assignment("thisazurerm_role_assignment", {
|
|
108
|
+
* scope: thisazurerm_storage_account.id,
|
|
109
|
+
* roleDefinitionName: "Storage Blob Data Contributor",
|
|
110
|
+
* principalId: data.azurerm_client_config.current.object_id,
|
|
111
|
+
* });
|
|
112
|
+
* const thisazurerm_storage_container = new azurerm.index.Azurerm_storage_container("thisazurerm_storage_container", {
|
|
113
|
+
* name: "marketing",
|
|
114
|
+
* storageAccountName: thisazurerm_storage_account.name,
|
|
115
|
+
* containerAccessType: "private",
|
|
116
|
+
* });
|
|
117
|
+
* const marketing = new databricks.Mount("marketing", {
|
|
118
|
+
* resourceId: thisazurerm_storage_container.resourceManagerId,
|
|
119
|
+
* abfs: {
|
|
120
|
+
* clientId: data.azurerm_client_config.current.client_id,
|
|
121
|
+
* clientSecretScope: terraform.name,
|
|
122
|
+
* clientSecretKey: servicePrincipalKey.key,
|
|
123
|
+
* initializeFileSystem: true,
|
|
124
|
+
* },
|
|
125
|
+
* });
|
|
126
|
+
* ```
|
|
127
|
+
*
|
|
128
|
+
* ## gs block
|
|
129
|
+
*
|
|
130
|
+
* This block allows specifying parameters for mounting of the Google Cloud Storage. The following arguments are required inside the `gs` block:
|
|
131
|
+
*
|
|
132
|
+
* * `serviceAccount` - (Optional) (String) email of registered [Google Service Account](https://docs.gcp.databricks.com/data/data-sources/google/gcs.html#step-1-set-up-google-cloud-service-account-using-google-cloud-console) for data access. If it's not specified, then the `clusterId` should be provided, and the cluster should have a Google service account attached to it.
|
|
133
|
+
* * `bucketName` - (Required) (String) GCS bucket name to be mounted.
|
|
134
|
+
*
|
|
135
|
+
* ### Example mounting Google Cloud Storage
|
|
136
|
+
*
|
|
137
|
+
* ```typescript
|
|
138
|
+
* import * as pulumi from "@pulumi/pulumi";
|
|
139
|
+
* import * as databricks from "@pulumi/databricks";
|
|
140
|
+
*
|
|
141
|
+
* const thisGs = new databricks.Mount("thisGs", {gs: {
|
|
142
|
+
* bucketName: "mybucket",
|
|
143
|
+
* serviceAccount: "acc@company.iam.gserviceaccount.com",
|
|
144
|
+
* }});
|
|
145
|
+
* ```
|
|
146
|
+
*
|
|
147
|
+
* ## adl block
|
|
148
|
+
*
|
|
149
|
+
* This block allows specifying parameters for mounting of the ADLS Gen1. The following arguments are required inside the `adl` block:
|
|
150
|
+
*
|
|
151
|
+
* * `clientId` - (Required) (String) This is the clientId for the enterprise application for the service principal.
|
|
152
|
+
* * `tenantId` - (Optional) (String) This is your azure directory tenant id. It is required for creating the mount. (Could be omitted if Azure authentication is used, and we can extract `tenantId` from it)
|
|
153
|
+
* * `clientSecretKey` - (Required) (String) This is the secret key in which your service principal/enterprise app client secret will be stored.
|
|
154
|
+
* * `clientSecretScope` - (Required) (String) This is the secret scope in which your service principal/enterprise app client secret will be stored.
|
|
155
|
+
*
|
|
156
|
+
* * `storageResourceName` - (Required) (String) The name of the storage resource in which the data is for ADLS gen 1. This is what you are trying to mount. (Could be omitted if `resourceId` is provided)
|
|
157
|
+
* * `sparkConfPrefix` - (Optional) (String) This is the spark configuration prefix for adls gen 1 mount. The options are `fs.adl`, `dfs.adls`. Use `fs.adl` for runtime 6.0 and above for the clusters. Otherwise use `dfs.adls`. The default value is: `fs.adl`.
|
|
158
|
+
* * `directory` - (Computed) (String) This is optional if you don't want to add an additional directory that you wish to mount. This must start with a "/".
|
|
159
|
+
*
|
|
160
|
+
* ### Example mounting ADLS Gen1
|
|
161
|
+
*
|
|
162
|
+
* ```typescript
|
|
163
|
+
* import * as pulumi from "@pulumi/pulumi";
|
|
164
|
+
* import * as databricks from "@pulumi/databricks";
|
|
165
|
+
*
|
|
166
|
+
* const mount = new databricks.Mount("mount", {adl: {
|
|
167
|
+
* storageResourceName: "{env.TEST_STORAGE_ACCOUNT_NAME}",
|
|
168
|
+
* tenantId: data.azurerm_client_config.current.tenant_id,
|
|
169
|
+
* clientId: data.azurerm_client_config.current.client_id,
|
|
170
|
+
* clientSecretScope: databricks_secret_scope.terraform.name,
|
|
171
|
+
* clientSecretKey: databricks_secret.service_principal_key.key,
|
|
172
|
+
* sparkConfPrefix: "fs.adl",
|
|
173
|
+
* }});
|
|
174
|
+
* ```
|
|
175
|
+
*
|
|
176
|
+
* ## wasb block
|
|
177
|
+
*
|
|
178
|
+
* This block allows specifying parameters for mounting of the Azure Blob Storage. The following arguments are required inside the `wasb` block:
|
|
179
|
+
*
|
|
180
|
+
* * `authType` - (Required) (String) This is the auth type for blob storage. This can either be SAS tokens (`SAS`) or account access keys (`ACCESS_KEY`).
|
|
181
|
+
* * `tokenSecretScope` - (Required) (String) This is the secret scope in which your auth type token is stored.
|
|
182
|
+
* * `tokenSecretKey` - (Required) (String) This is the secret key in which your auth type token is stored.
|
|
183
|
+
* * `containerName` - (Required) (String) The container in which the data is. This is what you are trying to mount. (Could be omitted if `resourceId` is provided)
|
|
184
|
+
* * `storageAccountName` - (Required) (String) The name of the storage resource in which the data is. (Could be omitted if `resourceId` is provided)
|
|
185
|
+
* * `directory` - (Computed) (String) This is optional if you don't want to add an additional directory that you wish to mount. This must start with a "/".
|
|
186
|
+
*
|
|
187
|
+
* ### Example mounting Azure Blob Storage
|
|
188
|
+
*
|
|
189
|
+
* ```typescript
|
|
190
|
+
* import * as pulumi from "@pulumi/pulumi";
|
|
191
|
+
* import * as azurerm from "@pulumi/azurerm";
|
|
192
|
+
* import * as databricks from "@pulumi/databricks";
|
|
193
|
+
*
|
|
194
|
+
* const blobaccount = new azurerm.index.Azurerm_storage_account("blobaccount", {
|
|
195
|
+
* name: `${_var.prefix}blob`,
|
|
196
|
+
* resourceGroupName: _var.resource_group_name,
|
|
197
|
+
* location: _var.resource_group_location,
|
|
198
|
+
* accountTier: "Standard",
|
|
199
|
+
* accountReplicationType: "LRS",
|
|
200
|
+
* accountKind: "StorageV2",
|
|
201
|
+
* });
|
|
202
|
+
* const marketingazurerm_storage_container = new azurerm.index.Azurerm_storage_container("marketingazurerm_storage_container", {
|
|
203
|
+
* name: "marketing",
|
|
204
|
+
* storageAccountName: blobaccount.name,
|
|
205
|
+
* containerAccessType: "private",
|
|
206
|
+
* });
|
|
207
|
+
* const terraform = new databricks.SecretScope("terraform", {initialManagePrincipal: "users"});
|
|
208
|
+
* const storageKey = new databricks.Secret("storageKey", {
|
|
209
|
+
* key: "blob_storage_key",
|
|
210
|
+
* stringValue: blobaccount.primaryAccessKey,
|
|
211
|
+
* scope: terraform.name,
|
|
212
|
+
* });
|
|
213
|
+
* const marketingMount = new databricks.Mount("marketingMount", {wasb: {
|
|
214
|
+
* containerName: marketingazurerm_storage_container.name,
|
|
215
|
+
* storageAccountName: blobaccount.name,
|
|
216
|
+
* authType: "ACCESS_KEY",
|
|
217
|
+
* tokenSecretScope: terraform.name,
|
|
218
|
+
* tokenSecretKey: storageKey.key,
|
|
219
|
+
* }});
|
|
220
|
+
* ```
|
|
221
|
+
*
|
|
222
|
+
* ## Migration from other mount resources
|
|
223
|
+
*
|
|
224
|
+
* Migration from the specific mount resource is straightforward:
|
|
225
|
+
*
|
|
226
|
+
* * rename `mountName` to `name`
|
|
227
|
+
* * wrap storage-specific settings (`containerName`, ...) into corresponding block (`adl`, `abfs`, `s3`, `wasbs`)
|
|
228
|
+
* * for S3 mounts, rename `s3BucketName` to `bucketName`
|
|
229
|
+
*
|
|
230
|
+
* ## Related Resources
|
|
231
|
+
*
|
|
232
|
+
* The following resources are often used in the same context:
|
|
233
|
+
*
|
|
234
|
+
* * End to end workspace management guide.
|
|
235
|
+
* * databricks.getAwsBucketPolicy data to configure a simple access policy for AWS S3 buckets, so that Databricks can access data in it.
|
|
236
|
+
* * databricks.Cluster to create [Databricks Clusters](https://docs.databricks.com/clusters/index.html).
|
|
237
|
+
* * databricks.DbfsFile data to get file content from [Databricks File System (DBFS)](https://docs.databricks.com/data/databricks-file-system.html).
|
|
238
|
+
* * databricks.getDbfsFilePaths data to get list of file names from get file content from [Databricks File System (DBFS)](https://docs.databricks.com/data/databricks-file-system.html).
|
|
239
|
+
* * databricks.DbfsFile to manage relatively small files on [Databricks File System (DBFS)](https://docs.databricks.com/data/databricks-file-system.html).
|
|
240
|
+
* * databricks.InstanceProfile to manage AWS EC2 instance profiles that users can launch databricks.Cluster and access data, like databricks_mount.
|
|
241
|
+
* * databricks.Library to install a [library](https://docs.databricks.com/libraries/index.html) on databricks_cluster.
|
|
242
|
+
*
|
|
5
243
|
* ## Import
|
|
6
244
|
*
|
|
7
245
|
* -> **Note** Importing this resource is not currently supported.
|
package/mount.js
CHANGED
|
@@ -6,6 +6,244 @@ exports.Mount = void 0;
|
|
|
6
6
|
const pulumi = require("@pulumi/pulumi");
|
|
7
7
|
const utilities = require("./utilities");
|
|
8
8
|
/**
|
|
9
|
+
* This resource will mount your cloud storage
|
|
10
|
+
* * `gs` - to [mount Google Cloud Storage](https://docs.gcp.databricks.com/data/data-sources/google/gcs.html)
|
|
11
|
+
* * `abfs` - to [mount ADLS Gen2](https://docs.microsoft.com/en-us/azure/databricks/data/data-sources/azure/adls-gen2/) using Azure Blob Filesystem (ABFS) driver
|
|
12
|
+
* * `adl` - to [mount ADLS Gen1](https://docs.microsoft.com/en-us/azure/databricks/data/data-sources/azure/azure-datalake) using Azure Data Lake (ADL) driver
|
|
13
|
+
* * `wasb` - to [mount Azure Blob Storage](https://docs.microsoft.com/en-us/azure/databricks/data/data-sources/azure/azure-storage) using Windows Azure Storage Blob (WASB) driver
|
|
14
|
+
*
|
|
15
|
+
* 1. Use generic arguments - you have a responsibility for providing all necessary parameters that are required to mount specific storage. This is most flexible option
|
|
16
|
+
*
|
|
17
|
+
* ## Common arguments
|
|
18
|
+
*
|
|
19
|
+
* * `clusterId` - (Optional, String) Cluster to use for mounting. If no cluster is specified, a new cluster will be created and will mount the bucket for all of the clusters in this workspace. If the cluster is not running - it's going to be started, so be aware to set auto-termination rules on it.
|
|
20
|
+
* * `name` - (Optional, String) Name, under which mount will be accessible in `dbfs:/mnt/<MOUNT_NAME>`. If not specified, provider will try to infer it from depending on the resource type:
|
|
21
|
+
* * `bucketName` for AWS S3 and Google Cloud Storage
|
|
22
|
+
* * `containerName` for ADLS Gen2 and Azure Blob Storage
|
|
23
|
+
* * `storageResourceName` for ADLS Gen1
|
|
24
|
+
* * `uri` - (Optional, String) the URI for accessing specific storage (`s3a://....`, `abfss://....`, `gs://....`, etc.)
|
|
25
|
+
* * `extraConfigs` - (Optional, String map) configuration parameters that are necessary for mounting of specific storage
|
|
26
|
+
* * `resourceId` - (Optional, String) resource ID for a given storage account. Could be used to fill defaults, such as storage account & container names on Azure.
|
|
27
|
+
* * `encryptionType` - (Optional, String) encryption type. Currently used only for [AWS S3 mounts](https://docs.databricks.com/data/data-sources/aws/amazon-s3.html#encrypt-data-in-s3-buckets)
|
|
28
|
+
*
|
|
29
|
+
* ### Example mounting ADLS Gen2 using uri and extraConfigs
|
|
30
|
+
*
|
|
31
|
+
* ```typescript
|
|
32
|
+
* import * as pulumi from "@pulumi/pulumi";
|
|
33
|
+
* import * as databricks from "@pulumi/databricks";
|
|
34
|
+
*
|
|
35
|
+
* const tenantId = "00000000-1111-2222-3333-444444444444";
|
|
36
|
+
* const clientId = "55555555-6666-7777-8888-999999999999";
|
|
37
|
+
* const secretScope = "some-kv";
|
|
38
|
+
* const secretKey = "some-sp-secret";
|
|
39
|
+
* const container = "test";
|
|
40
|
+
* const storageAcc = "lrs";
|
|
41
|
+
* const _this = new databricks.Mount("this", {
|
|
42
|
+
* uri: `abfss://${container}@${storageAcc}.dfs.core.windows.net`,
|
|
43
|
+
* extraConfigs: {
|
|
44
|
+
* "fs.azure.account.auth.type": "OAuth",
|
|
45
|
+
* "fs.azure.account.oauth.provider.type": "org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider",
|
|
46
|
+
* "fs.azure.account.oauth2.client.id": clientId,
|
|
47
|
+
* "fs.azure.account.oauth2.client.secret": `{{secrets/${secretScope}/${secretKey}}}`,
|
|
48
|
+
* "fs.azure.account.oauth2.client.endpoint": `https://login.microsoftonline.com/${tenantId}/oauth2/token`,
|
|
49
|
+
* "fs.azure.createRemoteFileSystemDuringInitialization": "false",
|
|
50
|
+
* },
|
|
51
|
+
* });
|
|
52
|
+
* ```
|
|
53
|
+
*
|
|
54
|
+
* ## s3 block
|
|
55
|
+
*
|
|
56
|
+
* This block allows specifying parameters for mounting of the ADLS Gen2. The following arguments are required inside the `s3` block:
|
|
57
|
+
*
|
|
58
|
+
* * `instanceProfile` - (Optional) (String) ARN of registered instance profile for data access. If it's not specified, then the `clusterId` should be provided, and the cluster should have an instance profile attached to it. If both `clusterId` & `instanceProfile` are specified, then `clusterId` takes precedence.
|
|
59
|
+
* * `bucketName` - (Required) (String) S3 bucket name to be mounted.
|
|
60
|
+
*
|
|
61
|
+
* ### Example of mounting S3
|
|
62
|
+
*
|
|
63
|
+
* ```typescript
|
|
64
|
+
* import * as pulumi from "@pulumi/pulumi";
|
|
65
|
+
* import * as databricks from "@pulumi/databricks";
|
|
66
|
+
*
|
|
67
|
+
* // now you can do `%fs ls /mnt/experiments` in notebooks
|
|
68
|
+
* const _this = new databricks.Mount("this", {s3: {
|
|
69
|
+
* instanceProfile: databricks_instance_profile.ds.id,
|
|
70
|
+
* bucketName: aws_s3_bucket["this"].bucket,
|
|
71
|
+
* }});
|
|
72
|
+
* ```
|
|
73
|
+
*
|
|
74
|
+
* ## abfs block
|
|
75
|
+
*
|
|
76
|
+
* This block allows specifying parameters for mounting of the ADLS Gen2. The following arguments are required inside the `abfs` block:
|
|
77
|
+
*
|
|
78
|
+
* * `clientId` - (Required) (String) This is the clientId (Application Object ID) for the enterprise application for the service principal.
|
|
79
|
+
* * `tenantId` - (Optional) (String) This is your azure directory tenant id. It is required for creating the mount. (Could be omitted if Azure authentication is used, and we can extract `tenantId` from it).
|
|
80
|
+
* * `clientSecretKey` - (Required) (String) This is the secret key in which your service principal/enterprise app client secret will be stored.
|
|
81
|
+
* * `clientSecretScope` - (Required) (String) This is the secret scope in which your service principal/enterprise app client secret will be stored.
|
|
82
|
+
* * `containerName` - (Required) (String) ADLS gen2 container name. (Could be omitted if `resourceId` is provided)
|
|
83
|
+
* * `storageAccountName` - (Required) (String) The name of the storage resource in which the data is. (Could be omitted if `resourceId` is provided)
|
|
84
|
+
* * `directory` - (Computed) (String) This is optional if you don't want to add an additional directory that you wish to mount. This must start with a "/".
|
|
85
|
+
* * `initializeFileSystem` - (Required) (Bool) either or not initialize FS for the first use
|
|
86
|
+
*
|
|
87
|
+
* ### Creating mount for ADLS Gen2 using abfs block
|
|
88
|
+
*
|
|
89
|
+
* In this example, we're using Azure authentication, so we can omit some parameters (`tenantId`, `storageAccountName`, and `containerName`) that will be detected automatically.
|
|
90
|
+
*
|
|
91
|
+
* ```typescript
|
|
92
|
+
* import * as pulumi from "@pulumi/pulumi";
|
|
93
|
+
* import * as azurerm from "@pulumi/azurerm";
|
|
94
|
+
* import * as databricks from "@pulumi/databricks";
|
|
95
|
+
*
|
|
96
|
+
* const terraform = new databricks.SecretScope("terraform", {initialManagePrincipal: "users"});
|
|
97
|
+
* const servicePrincipalKey = new databricks.Secret("servicePrincipalKey", {
|
|
98
|
+
* key: "service_principal_key",
|
|
99
|
+
* stringValue: _var.ARM_CLIENT_SECRET,
|
|
100
|
+
* scope: terraform.name,
|
|
101
|
+
* });
|
|
102
|
+
* const thisazurerm_storage_account = new azurerm.index.Azurerm_storage_account("thisazurerm_storage_account", {
|
|
103
|
+
* name: `${_var.prefix}datalake`,
|
|
104
|
+
* resourceGroupName: _var.resource_group_name,
|
|
105
|
+
* location: _var.resource_group_location,
|
|
106
|
+
* accountTier: "Standard",
|
|
107
|
+
* accountReplicationType: "GRS",
|
|
108
|
+
* accountKind: "StorageV2",
|
|
109
|
+
* isHnsEnabled: true,
|
|
110
|
+
* });
|
|
111
|
+
* const thisazurerm_role_assignment = new azurerm.index.Azurerm_role_assignment("thisazurerm_role_assignment", {
|
|
112
|
+
* scope: thisazurerm_storage_account.id,
|
|
113
|
+
* roleDefinitionName: "Storage Blob Data Contributor",
|
|
114
|
+
* principalId: data.azurerm_client_config.current.object_id,
|
|
115
|
+
* });
|
|
116
|
+
* const thisazurerm_storage_container = new azurerm.index.Azurerm_storage_container("thisazurerm_storage_container", {
|
|
117
|
+
* name: "marketing",
|
|
118
|
+
* storageAccountName: thisazurerm_storage_account.name,
|
|
119
|
+
* containerAccessType: "private",
|
|
120
|
+
* });
|
|
121
|
+
* const marketing = new databricks.Mount("marketing", {
|
|
122
|
+
* resourceId: thisazurerm_storage_container.resourceManagerId,
|
|
123
|
+
* abfs: {
|
|
124
|
+
* clientId: data.azurerm_client_config.current.client_id,
|
|
125
|
+
* clientSecretScope: terraform.name,
|
|
126
|
+
* clientSecretKey: servicePrincipalKey.key,
|
|
127
|
+
* initializeFileSystem: true,
|
|
128
|
+
* },
|
|
129
|
+
* });
|
|
130
|
+
* ```
|
|
131
|
+
*
|
|
132
|
+
* ## gs block
|
|
133
|
+
*
|
|
134
|
+
* This block allows specifying parameters for mounting of the Google Cloud Storage. The following arguments are required inside the `gs` block:
|
|
135
|
+
*
|
|
136
|
+
* * `serviceAccount` - (Optional) (String) email of registered [Google Service Account](https://docs.gcp.databricks.com/data/data-sources/google/gcs.html#step-1-set-up-google-cloud-service-account-using-google-cloud-console) for data access. If it's not specified, then the `clusterId` should be provided, and the cluster should have a Google service account attached to it.
|
|
137
|
+
* * `bucketName` - (Required) (String) GCS bucket name to be mounted.
|
|
138
|
+
*
|
|
139
|
+
* ### Example mounting Google Cloud Storage
|
|
140
|
+
*
|
|
141
|
+
* ```typescript
|
|
142
|
+
* import * as pulumi from "@pulumi/pulumi";
|
|
143
|
+
* import * as databricks from "@pulumi/databricks";
|
|
144
|
+
*
|
|
145
|
+
* const thisGs = new databricks.Mount("thisGs", {gs: {
|
|
146
|
+
* bucketName: "mybucket",
|
|
147
|
+
* serviceAccount: "acc@company.iam.gserviceaccount.com",
|
|
148
|
+
* }});
|
|
149
|
+
* ```
|
|
150
|
+
*
|
|
151
|
+
* ## adl block
|
|
152
|
+
*
|
|
153
|
+
* This block allows specifying parameters for mounting of the ADLS Gen1. The following arguments are required inside the `adl` block:
|
|
154
|
+
*
|
|
155
|
+
* * `clientId` - (Required) (String) This is the clientId for the enterprise application for the service principal.
|
|
156
|
+
* * `tenantId` - (Optional) (String) This is your azure directory tenant id. It is required for creating the mount. (Could be omitted if Azure authentication is used, and we can extract `tenantId` from it)
|
|
157
|
+
* * `clientSecretKey` - (Required) (String) This is the secret key in which your service principal/enterprise app client secret will be stored.
|
|
158
|
+
* * `clientSecretScope` - (Required) (String) This is the secret scope in which your service principal/enterprise app client secret will be stored.
|
|
159
|
+
*
|
|
160
|
+
* * `storageResourceName` - (Required) (String) The name of the storage resource in which the data is for ADLS gen 1. This is what you are trying to mount. (Could be omitted if `resourceId` is provided)
|
|
161
|
+
* * `sparkConfPrefix` - (Optional) (String) This is the spark configuration prefix for adls gen 1 mount. The options are `fs.adl`, `dfs.adls`. Use `fs.adl` for runtime 6.0 and above for the clusters. Otherwise use `dfs.adls`. The default value is: `fs.adl`.
|
|
162
|
+
* * `directory` - (Computed) (String) This is optional if you don't want to add an additional directory that you wish to mount. This must start with a "/".
|
|
163
|
+
*
|
|
164
|
+
* ### Example mounting ADLS Gen1
|
|
165
|
+
*
|
|
166
|
+
* ```typescript
|
|
167
|
+
* import * as pulumi from "@pulumi/pulumi";
|
|
168
|
+
* import * as databricks from "@pulumi/databricks";
|
|
169
|
+
*
|
|
170
|
+
* const mount = new databricks.Mount("mount", {adl: {
|
|
171
|
+
* storageResourceName: "{env.TEST_STORAGE_ACCOUNT_NAME}",
|
|
172
|
+
* tenantId: data.azurerm_client_config.current.tenant_id,
|
|
173
|
+
* clientId: data.azurerm_client_config.current.client_id,
|
|
174
|
+
* clientSecretScope: databricks_secret_scope.terraform.name,
|
|
175
|
+
* clientSecretKey: databricks_secret.service_principal_key.key,
|
|
176
|
+
* sparkConfPrefix: "fs.adl",
|
|
177
|
+
* }});
|
|
178
|
+
* ```
|
|
179
|
+
*
|
|
180
|
+
* ## wasb block
|
|
181
|
+
*
|
|
182
|
+
* This block allows specifying parameters for mounting of the Azure Blob Storage. The following arguments are required inside the `wasb` block:
|
|
183
|
+
*
|
|
184
|
+
* * `authType` - (Required) (String) This is the auth type for blob storage. This can either be SAS tokens (`SAS`) or account access keys (`ACCESS_KEY`).
|
|
185
|
+
* * `tokenSecretScope` - (Required) (String) This is the secret scope in which your auth type token is stored.
|
|
186
|
+
* * `tokenSecretKey` - (Required) (String) This is the secret key in which your auth type token is stored.
|
|
187
|
+
* * `containerName` - (Required) (String) The container in which the data is. This is what you are trying to mount. (Could be omitted if `resourceId` is provided)
|
|
188
|
+
* * `storageAccountName` - (Required) (String) The name of the storage resource in which the data is. (Could be omitted if `resourceId` is provided)
|
|
189
|
+
* * `directory` - (Computed) (String) This is optional if you don't want to add an additional directory that you wish to mount. This must start with a "/".
|
|
190
|
+
*
|
|
191
|
+
* ### Example mounting Azure Blob Storage
|
|
192
|
+
*
|
|
193
|
+
* ```typescript
|
|
194
|
+
* import * as pulumi from "@pulumi/pulumi";
|
|
195
|
+
* import * as azurerm from "@pulumi/azurerm";
|
|
196
|
+
* import * as databricks from "@pulumi/databricks";
|
|
197
|
+
*
|
|
198
|
+
* const blobaccount = new azurerm.index.Azurerm_storage_account("blobaccount", {
|
|
199
|
+
* name: `${_var.prefix}blob`,
|
|
200
|
+
* resourceGroupName: _var.resource_group_name,
|
|
201
|
+
* location: _var.resource_group_location,
|
|
202
|
+
* accountTier: "Standard",
|
|
203
|
+
* accountReplicationType: "LRS",
|
|
204
|
+
* accountKind: "StorageV2",
|
|
205
|
+
* });
|
|
206
|
+
* const marketingazurerm_storage_container = new azurerm.index.Azurerm_storage_container("marketingazurerm_storage_container", {
|
|
207
|
+
* name: "marketing",
|
|
208
|
+
* storageAccountName: blobaccount.name,
|
|
209
|
+
* containerAccessType: "private",
|
|
210
|
+
* });
|
|
211
|
+
* const terraform = new databricks.SecretScope("terraform", {initialManagePrincipal: "users"});
|
|
212
|
+
* const storageKey = new databricks.Secret("storageKey", {
|
|
213
|
+
* key: "blob_storage_key",
|
|
214
|
+
* stringValue: blobaccount.primaryAccessKey,
|
|
215
|
+
* scope: terraform.name,
|
|
216
|
+
* });
|
|
217
|
+
* const marketingMount = new databricks.Mount("marketingMount", {wasb: {
|
|
218
|
+
* containerName: marketingazurerm_storage_container.name,
|
|
219
|
+
* storageAccountName: blobaccount.name,
|
|
220
|
+
* authType: "ACCESS_KEY",
|
|
221
|
+
* tokenSecretScope: terraform.name,
|
|
222
|
+
* tokenSecretKey: storageKey.key,
|
|
223
|
+
* }});
|
|
224
|
+
* ```
|
|
225
|
+
*
|
|
226
|
+
* ## Migration from other mount resources
|
|
227
|
+
*
|
|
228
|
+
* Migration from the specific mount resource is straightforward:
|
|
229
|
+
*
|
|
230
|
+
* * rename `mountName` to `name`
|
|
231
|
+
* * wrap storage-specific settings (`containerName`, ...) into corresponding block (`adl`, `abfs`, `s3`, `wasbs`)
|
|
232
|
+
* * for S3 mounts, rename `s3BucketName` to `bucketName`
|
|
233
|
+
*
|
|
234
|
+
* ## Related Resources
|
|
235
|
+
*
|
|
236
|
+
* The following resources are often used in the same context:
|
|
237
|
+
*
|
|
238
|
+
* * End to end workspace management guide.
|
|
239
|
+
* * databricks.getAwsBucketPolicy data to configure a simple access policy for AWS S3 buckets, so that Databricks can access data in it.
|
|
240
|
+
* * databricks.Cluster to create [Databricks Clusters](https://docs.databricks.com/clusters/index.html).
|
|
241
|
+
* * databricks.DbfsFile data to get file content from [Databricks File System (DBFS)](https://docs.databricks.com/data/databricks-file-system.html).
|
|
242
|
+
* * databricks.getDbfsFilePaths data to get list of file names from get file content from [Databricks File System (DBFS)](https://docs.databricks.com/data/databricks-file-system.html).
|
|
243
|
+
* * databricks.DbfsFile to manage relatively small files on [Databricks File System (DBFS)](https://docs.databricks.com/data/databricks-file-system.html).
|
|
244
|
+
* * databricks.InstanceProfile to manage AWS EC2 instance profiles that users can launch databricks.Cluster and access data, like databricks_mount.
|
|
245
|
+
* * databricks.Library to install a [library](https://docs.databricks.com/libraries/index.html) on databricks_cluster.
|
|
246
|
+
*
|
|
9
247
|
* ## Import
|
|
10
248
|
*
|
|
11
249
|
* -> **Note** Importing this resource is not currently supported.
|
package/mount.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mount.js","sourceRoot":"","sources":["../mount.ts"],"names":[],"mappings":";AAAA,wFAAwF;AACxF,iFAAiF;;;AAEjF,yCAAyC;AAGzC,yCAAyC;AAEzC
|
|
1
|
+
{"version":3,"file":"mount.js","sourceRoot":"","sources":["../mount.ts"],"names":[],"mappings":"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"}
|
package/mwsCredentials.d.ts
CHANGED
|
@@ -1,34 +1,13 @@
|
|
|
1
1
|
import * as pulumi from "@pulumi/pulumi";
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* > **Note** Initialize provider with `alias = "mws"`, `host = "https://accounts.cloud.databricks.com"` and use `provider = databricks.mws`
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
5
|
+
* This resource to configure the cross-account role for creation of new workspaces within AWS.
|
|
6
|
+
*
|
|
7
|
+
* Please follow this complete runnable example Account Id that could be found in the top right corner of [Accounts Console](https://accounts.cloud.databricks.com/)
|
|
8
|
+
* * `credentialsName` - (Required) name of credentials to register
|
|
9
|
+
* * `roleArn` - (Required) ARN of cross-account role
|
|
9
10
|
*
|
|
10
|
-
* const config = new pulumi.Config();
|
|
11
|
-
* const databricksAccountId = config.requireObject("databricksAccountId");
|
|
12
|
-
* const thisAwsAssumeRolePolicy = databricks.getAwsAssumeRolePolicy({
|
|
13
|
-
* externalId: databricksAccountId,
|
|
14
|
-
* });
|
|
15
|
-
* const crossAccountRole = new aws.iam.Role("crossAccountRole", {
|
|
16
|
-
* assumeRolePolicy: thisAwsAssumeRolePolicy.then(thisAwsAssumeRolePolicy => thisAwsAssumeRolePolicy.json),
|
|
17
|
-
* tags: _var.tags,
|
|
18
|
-
* });
|
|
19
|
-
* const thisAwsCrossAccountPolicy = databricks.getAwsCrossAccountPolicy({});
|
|
20
|
-
* const thisRolePolicy = new aws.iam.RolePolicy("thisRolePolicy", {
|
|
21
|
-
* role: crossAccountRole.id,
|
|
22
|
-
* policy: thisAwsCrossAccountPolicy.then(thisAwsCrossAccountPolicy => thisAwsCrossAccountPolicy.json),
|
|
23
|
-
* });
|
|
24
|
-
* const thisMwsCredentials = new databricks.MwsCredentials("thisMwsCredentials", {
|
|
25
|
-
* accountId: databricksAccountId,
|
|
26
|
-
* credentialsName: `${local.prefix}-creds`,
|
|
27
|
-
* roleArn: crossAccountRole.arn,
|
|
28
|
-
* }, {
|
|
29
|
-
* provider: databricks.mws,
|
|
30
|
-
* });
|
|
31
|
-
* ```
|
|
32
11
|
* ## Related Resources
|
|
33
12
|
*
|
|
34
13
|
* The following resources are used in the same context:
|
|
@@ -65,8 +44,6 @@ export declare class MwsCredentials extends pulumi.CustomResource {
|
|
|
65
44
|
*/
|
|
66
45
|
static isInstance(obj: any): obj is MwsCredentials;
|
|
67
46
|
/**
|
|
68
|
-
* Account Id that could be found in the top right corner of [Accounts Console](https://accounts.cloud.databricks.com/)
|
|
69
|
-
*
|
|
70
47
|
* @deprecated `account_id` should be set as part of the Databricks Config, not in the resource.
|
|
71
48
|
*/
|
|
72
49
|
readonly accountId: pulumi.Output<string | undefined>;
|
|
@@ -78,14 +55,8 @@ export declare class MwsCredentials extends pulumi.CustomResource {
|
|
|
78
55
|
* (String) identifier of credentials
|
|
79
56
|
*/
|
|
80
57
|
readonly credentialsId: pulumi.Output<string>;
|
|
81
|
-
/**
|
|
82
|
-
* name of credentials to register
|
|
83
|
-
*/
|
|
84
58
|
readonly credentialsName: pulumi.Output<string>;
|
|
85
59
|
readonly externalId: pulumi.Output<string>;
|
|
86
|
-
/**
|
|
87
|
-
* ARN of cross-account role
|
|
88
|
-
*/
|
|
89
60
|
readonly roleArn: pulumi.Output<string>;
|
|
90
61
|
/**
|
|
91
62
|
* Create a MwsCredentials resource with the given unique name, arguments, and options.
|
|
@@ -101,8 +72,6 @@ export declare class MwsCredentials extends pulumi.CustomResource {
|
|
|
101
72
|
*/
|
|
102
73
|
export interface MwsCredentialsState {
|
|
103
74
|
/**
|
|
104
|
-
* Account Id that could be found in the top right corner of [Accounts Console](https://accounts.cloud.databricks.com/)
|
|
105
|
-
*
|
|
106
75
|
* @deprecated `account_id` should be set as part of the Databricks Config, not in the resource.
|
|
107
76
|
*/
|
|
108
77
|
accountId?: pulumi.Input<string>;
|
|
@@ -114,14 +83,8 @@ export interface MwsCredentialsState {
|
|
|
114
83
|
* (String) identifier of credentials
|
|
115
84
|
*/
|
|
116
85
|
credentialsId?: pulumi.Input<string>;
|
|
117
|
-
/**
|
|
118
|
-
* name of credentials to register
|
|
119
|
-
*/
|
|
120
86
|
credentialsName?: pulumi.Input<string>;
|
|
121
87
|
externalId?: pulumi.Input<string>;
|
|
122
|
-
/**
|
|
123
|
-
* ARN of cross-account role
|
|
124
|
-
*/
|
|
125
88
|
roleArn?: pulumi.Input<string>;
|
|
126
89
|
}
|
|
127
90
|
/**
|
|
@@ -129,8 +92,6 @@ export interface MwsCredentialsState {
|
|
|
129
92
|
*/
|
|
130
93
|
export interface MwsCredentialsArgs {
|
|
131
94
|
/**
|
|
132
|
-
* Account Id that could be found in the top right corner of [Accounts Console](https://accounts.cloud.databricks.com/)
|
|
133
|
-
*
|
|
134
95
|
* @deprecated `account_id` should be set as part of the Databricks Config, not in the resource.
|
|
135
96
|
*/
|
|
136
97
|
accountId?: pulumi.Input<string>;
|
|
@@ -142,13 +103,7 @@ export interface MwsCredentialsArgs {
|
|
|
142
103
|
* (String) identifier of credentials
|
|
143
104
|
*/
|
|
144
105
|
credentialsId?: pulumi.Input<string>;
|
|
145
|
-
/**
|
|
146
|
-
* name of credentials to register
|
|
147
|
-
*/
|
|
148
106
|
credentialsName: pulumi.Input<string>;
|
|
149
107
|
externalId?: pulumi.Input<string>;
|
|
150
|
-
/**
|
|
151
|
-
* ARN of cross-account role
|
|
152
|
-
*/
|
|
153
108
|
roleArn: pulumi.Input<string>;
|
|
154
109
|
}
|
package/mwsCredentials.js
CHANGED
|
@@ -6,35 +6,14 @@ exports.MwsCredentials = void 0;
|
|
|
6
6
|
const pulumi = require("@pulumi/pulumi");
|
|
7
7
|
const utilities = require("./utilities");
|
|
8
8
|
/**
|
|
9
|
-
*
|
|
9
|
+
* > **Note** Initialize provider with `alias = "mws"`, `host = "https://accounts.cloud.databricks.com"` and use `provider = databricks.mws`
|
|
10
10
|
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
11
|
+
* This resource to configure the cross-account role for creation of new workspaces within AWS.
|
|
12
|
+
*
|
|
13
|
+
* Please follow this complete runnable example Account Id that could be found in the top right corner of [Accounts Console](https://accounts.cloud.databricks.com/)
|
|
14
|
+
* * `credentialsName` - (Required) name of credentials to register
|
|
15
|
+
* * `roleArn` - (Required) ARN of cross-account role
|
|
15
16
|
*
|
|
16
|
-
* const config = new pulumi.Config();
|
|
17
|
-
* const databricksAccountId = config.requireObject("databricksAccountId");
|
|
18
|
-
* const thisAwsAssumeRolePolicy = databricks.getAwsAssumeRolePolicy({
|
|
19
|
-
* externalId: databricksAccountId,
|
|
20
|
-
* });
|
|
21
|
-
* const crossAccountRole = new aws.iam.Role("crossAccountRole", {
|
|
22
|
-
* assumeRolePolicy: thisAwsAssumeRolePolicy.then(thisAwsAssumeRolePolicy => thisAwsAssumeRolePolicy.json),
|
|
23
|
-
* tags: _var.tags,
|
|
24
|
-
* });
|
|
25
|
-
* const thisAwsCrossAccountPolicy = databricks.getAwsCrossAccountPolicy({});
|
|
26
|
-
* const thisRolePolicy = new aws.iam.RolePolicy("thisRolePolicy", {
|
|
27
|
-
* role: crossAccountRole.id,
|
|
28
|
-
* policy: thisAwsCrossAccountPolicy.then(thisAwsCrossAccountPolicy => thisAwsCrossAccountPolicy.json),
|
|
29
|
-
* });
|
|
30
|
-
* const thisMwsCredentials = new databricks.MwsCredentials("thisMwsCredentials", {
|
|
31
|
-
* accountId: databricksAccountId,
|
|
32
|
-
* credentialsName: `${local.prefix}-creds`,
|
|
33
|
-
* roleArn: crossAccountRole.arn,
|
|
34
|
-
* }, {
|
|
35
|
-
* provider: databricks.mws,
|
|
36
|
-
* });
|
|
37
|
-
* ```
|
|
38
17
|
* ## Related Resources
|
|
39
18
|
*
|
|
40
19
|
* The following resources are used in the same context:
|