@pulumi/databricks
Version:
A Pulumi package for creating and managing databricks cloud resources.
162 lines (161 loc) • 7.04 kB
TypeScript
import * as pulumi from "@pulumi/pulumi";
/**
* This data source constructs necessary AWS STS assume role policy for you.
*
* ## Example Usage
*
* End-to-end example of provisioning Cross-account IAM role with databricks.MwsCredentials and aws_iam_role:
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as aws from "@pulumi/aws";
* import * as databricks from "@pulumi/databricks";
*
* const config = new pulumi.Config();
* // Account Id that could be found in the top right corner of https://accounts.cloud.databricks.com/
* const databricksAccountId = config.requireObject<any>("databricksAccountId");
* const _this = databricks.getAwsCrossAccountPolicy({});
* const crossAccountPolicy = new aws.iam.Policy("cross_account_policy", {
* name: `${prefix}-crossaccount-iam-policy`,
* policy: _this.then(_this => _this.json),
* });
* const thisGetAwsAssumeRolePolicy = databricks.getAwsAssumeRolePolicy({
* externalId: databricksAccountId,
* });
* const crossAccount = new aws.iam.Role("cross_account", {
* name: `${prefix}-crossaccount-iam-role`,
* assumeRolePolicy: thisGetAwsAssumeRolePolicy.then(thisGetAwsAssumeRolePolicy => thisGetAwsAssumeRolePolicy.json),
* description: "Grants Databricks full access to VPC resources",
* });
* const crossAccountRolePolicyAttachment = new aws.iam.RolePolicyAttachment("cross_account", {
* policyArn: crossAccountPolicy.arn,
* role: crossAccount.name,
* });
* // required only in case of multi-workspace setup
* const thisMwsCredentials = new databricks.MwsCredentials("this", {
* accountId: databricksAccountId,
* credentialsName: `${prefix}-creds`,
* roleArn: crossAccount.arn,
* });
* ```
*
* ## Related Resources
*
* The following resources are used in the same context:
*
* * Provisioning AWS Databricks workspaces with a Hub & Spoke firewall for data exfiltration protection guide
* * databricks.getAwsBucketPolicy data to configure a simple access policy for AWS S3 buckets, so that Databricks can access data in it.
* * databricks.getAwsCrossAccountPolicy data to construct the necessary AWS cross-account policy for you, which is based on [official documentation](https://docs.databricks.com/administration-guide/account-api/iam-role.html#language-Your%C2%A0VPC,%C2%A0default).
*/
export declare function getAwsAssumeRolePolicy(args: GetAwsAssumeRolePolicyArgs, opts?: pulumi.InvokeOptions): Promise<GetAwsAssumeRolePolicyResult>;
/**
* A collection of arguments for invoking getAwsAssumeRolePolicy.
*/
export interface GetAwsAssumeRolePolicyArgs {
/**
* AWS partition. The options are `aws`, `aws-us-gov`, or `aws-us-gov-dod`. Defaults to `aws`
*/
awsPartition?: string;
/**
* @deprecated databricks_account_id will be will be removed in the next major release.
*/
databricksAccountId?: string;
/**
* Account Id that could be found in the top right corner of [Accounts Console](https://accounts.cloud.databricks.com/).
*/
externalId: string;
/**
* Either or not this assume role policy should be created for usage log delivery. Defaults to false.
*/
forLogDelivery?: boolean;
}
/**
* A collection of values returned by getAwsAssumeRolePolicy.
*/
export interface GetAwsAssumeRolePolicyResult {
readonly awsPartition?: string;
/**
* @deprecated databricks_account_id will be will be removed in the next major release.
*/
readonly databricksAccountId?: string;
readonly externalId: string;
readonly forLogDelivery?: boolean;
/**
* The provider-assigned unique ID for this managed resource.
*/
readonly id: string;
/**
* AWS IAM Policy JSON document
*/
readonly json: string;
}
/**
* This data source constructs necessary AWS STS assume role policy for you.
*
* ## Example Usage
*
* End-to-end example of provisioning Cross-account IAM role with databricks.MwsCredentials and aws_iam_role:
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as aws from "@pulumi/aws";
* import * as databricks from "@pulumi/databricks";
*
* const config = new pulumi.Config();
* // Account Id that could be found in the top right corner of https://accounts.cloud.databricks.com/
* const databricksAccountId = config.requireObject<any>("databricksAccountId");
* const _this = databricks.getAwsCrossAccountPolicy({});
* const crossAccountPolicy = new aws.iam.Policy("cross_account_policy", {
* name: `${prefix}-crossaccount-iam-policy`,
* policy: _this.then(_this => _this.json),
* });
* const thisGetAwsAssumeRolePolicy = databricks.getAwsAssumeRolePolicy({
* externalId: databricksAccountId,
* });
* const crossAccount = new aws.iam.Role("cross_account", {
* name: `${prefix}-crossaccount-iam-role`,
* assumeRolePolicy: thisGetAwsAssumeRolePolicy.then(thisGetAwsAssumeRolePolicy => thisGetAwsAssumeRolePolicy.json),
* description: "Grants Databricks full access to VPC resources",
* });
* const crossAccountRolePolicyAttachment = new aws.iam.RolePolicyAttachment("cross_account", {
* policyArn: crossAccountPolicy.arn,
* role: crossAccount.name,
* });
* // required only in case of multi-workspace setup
* const thisMwsCredentials = new databricks.MwsCredentials("this", {
* accountId: databricksAccountId,
* credentialsName: `${prefix}-creds`,
* roleArn: crossAccount.arn,
* });
* ```
*
* ## Related Resources
*
* The following resources are used in the same context:
*
* * Provisioning AWS Databricks workspaces with a Hub & Spoke firewall for data exfiltration protection guide
* * databricks.getAwsBucketPolicy data to configure a simple access policy for AWS S3 buckets, so that Databricks can access data in it.
* * databricks.getAwsCrossAccountPolicy data to construct the necessary AWS cross-account policy for you, which is based on [official documentation](https://docs.databricks.com/administration-guide/account-api/iam-role.html#language-Your%C2%A0VPC,%C2%A0default).
*/
export declare function getAwsAssumeRolePolicyOutput(args: GetAwsAssumeRolePolicyOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output<GetAwsAssumeRolePolicyResult>;
/**
* A collection of arguments for invoking getAwsAssumeRolePolicy.
*/
export interface GetAwsAssumeRolePolicyOutputArgs {
/**
* AWS partition. The options are `aws`, `aws-us-gov`, or `aws-us-gov-dod`. Defaults to `aws`
*/
awsPartition?: pulumi.Input<string>;
/**
* @deprecated databricks_account_id will be will be removed in the next major release.
*/
databricksAccountId?: pulumi.Input<string>;
/**
* Account Id that could be found in the top right corner of [Accounts Console](https://accounts.cloud.databricks.com/).
*/
externalId: pulumi.Input<string>;
/**
* Either or not this assume role policy should be created for usage log delivery. Defaults to false.
*/
forLogDelivery?: pulumi.Input<boolean>;
}