From ff0aab1462063f6c8bd675b78f8382f096bbefaa Mon Sep 17 00:00:00 2001 From: Carl Hall Date: Mon, 23 Jan 2023 18:14:55 -0500 Subject: [PATCH 1/2] Add Cloudformation templates for setting up Unity Catalog metastore and IAM role. --- README.md | 50 +++++++- cloudformation/uc-cloudformation-ui.png | Bin 0 -> 68820 bytes .../unity-catalog-setup-kms-template.json | 119 ++++++++++++++++++ .../unity-catalog-setup-template.json | 104 +++++++++++++++ 4 files changed, 272 insertions(+), 1 deletion(-) create mode 100644 cloudformation/uc-cloudformation-ui.png create mode 100644 cloudformation/unity-catalog-setup-kms-template.json create mode 100644 cloudformation/unity-catalog-setup-template.json diff --git a/README.md b/README.md index d459563..9449781 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,51 @@ # Unity Catalog Setup -This repository is now deprecated, as Unity Catalog is now in GA. Customers should follow instructions from the [official documentation](https://docs.databricks.com/data-governance/unity-catalog/index.html) +[Unity Catalog](https://docs.databricks.com/data-governance/unity-catalog/index.html) is a unified governance solution for all data and AI assets including files, tables, machine learning models and dashboards in your lakehouse on any cloud. This repository includes resources and guides helpful for setting up Unity Catalog metastores. + +Customers should follow instructions from the [official documentation](https://docs.databricks.com/data-governance/unity-catalog/index.html) to [get started using Unity Catalog](https://docs.databricks.com/data-governance/unity-catalog/get-started.html). + +## Cloudformation + +To get started using Unity Catalog on AWS, you need an S3 bucket and an IAM role. It is required to setup an S3 bucket to be the root storage location for managed tables. You must also set up a cross-account trust relationship so that Unity Catalog can assume a role to access the data in the bucket on behalf of Databricks users. To help with this setup, we have provided two Cloudformation templates. + +1. **Without KMS** - [`unity-catalog-setup-template.json`](cloudformation/unity-catalog-template.json) - A template to create the S3 bucket, the IAM role, and the necessary IAM policy. S3 is configured to use server-side encryption using **S3-managed keys**, and _KMS permissions are **not** granted._ +2. **With KMS** - [`unity-catalog-setup-kms-template.json`](cloudformation/unity-catalog-kms-template.json) - A template to create the S3 bucket, the IAM role, and the necessary IAM policy. S3 is configured to use server-side encryption using **the provided KMS key**, and _KMS permissions are granted._ + +### Usage Examples + +#### Create a Stack Using the [AWS CLI](https://aws.amazon.com/cli/) + +_Prerequisite: [Install and configur the AWS command line interface](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)_) + +**Without KMS** + +```bash +aws cloudformation create-stack \ + --stack-name "unity-catalog-stack" \ + --template-url https://raw.githubusercontent.com/databricks/unity-catalog-setup/main/cloudformation/unity-catalog-setup-template.json \ + --capabilities CAPABILITY_IAM \ + --parameters ParameterKey=DatabricksAccountID,ParameterValue=111122223333 \ + ParameterKey=MetastoreBucketName,ParameterValue=unity-catalog-bucket +``` + +**With KMS** + +```bash +aws cloudformation create-stack \ + --stack-name "unity-catalog-stack" \ + --template-url https://raw.githubusercontent.com/databricks/unity-catalog-setup/main/cloudformation/unity-catalog-setup-kms-template.json \ + --capabilities CAPABILITY_IAM \ + --parameters ParameterKey=DatabricksAccountID,ParameterValue=123412341234 \ + ParameterKey=MetastoreBucketName,ParameterValue=unity-catalog-bucket \ + ParameterKey=KMSKeyARN,ParameterValue=arn:aws:kms:us-east-1:111122223333:key/really-long-key-identifier +``` + +#### Create a Stack Using the AWS Console + +1. Log into your AWS console +2. Click into the Cloudformation console +3. Click "Create Stack" then "With new resources (standard)" +4. Paste a link to the raw Cloudformation template to use. E.g., [the template without KMS](https://raw.githubusercontent.com/databricks/unity-catalog-setup/main/cloudformation/unity-catalog-setup-template.json) +5. Follow the prompts on screen for stack name, `DatabricksAccountID`, and `MetastoreBucketName` (and `KMSKeyARN` if using KMS). + +![](cloudformation/uc-cloudformation-ui.png) diff --git a/cloudformation/uc-cloudformation-ui.png b/cloudformation/uc-cloudformation-ui.png new file mode 100644 index 0000000000000000000000000000000000000000..eab94d878ed5e6faa5f92b1403ca73b9ad0cd008 GIT binary patch literal 68820 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≦pNLa*+ev2=gUaN81_8r&y}vCv$Boito5?Mwz;%H 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 Date: Tue, 24 Jan 2023 09:42:34 -0600 Subject: [PATCH 2/2] DOCS: minor clarifications and typo fixes --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 9449781..a81bd1f 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ Customers should follow instructions from the [official documentation](https://d ## Cloudformation -To get started using Unity Catalog on AWS, you need an S3 bucket and an IAM role. It is required to setup an S3 bucket to be the root storage location for managed tables. You must also set up a cross-account trust relationship so that Unity Catalog can assume a role to access the data in the bucket on behalf of Databricks users. To help with this setup, we have provided two Cloudformation templates. +To get started using Unity Catalog on AWS, you will need an S3 bucket and an IAM role for your first UC metastore. It is required to setup an S3 bucket to be the root storage location for managed tables in that metastore. You must also set up a cross-account trust relationship so that Unity Catalog can assume a role to access the data in the bucket on behalf of Databricks users. To help with this setup, we have provided two Cloudformation templates. 1. **Without KMS** - [`unity-catalog-setup-template.json`](cloudformation/unity-catalog-template.json) - A template to create the S3 bucket, the IAM role, and the necessary IAM policy. S3 is configured to use server-side encryption using **S3-managed keys**, and _KMS permissions are **not** granted._ 2. **With KMS** - [`unity-catalog-setup-kms-template.json`](cloudformation/unity-catalog-kms-template.json) - A template to create the S3 bucket, the IAM role, and the necessary IAM policy. S3 is configured to use server-side encryption using **the provided KMS key**, and _KMS permissions are granted._ @@ -15,7 +15,7 @@ To get started using Unity Catalog on AWS, you need an S3 bucket and an IAM role #### Create a Stack Using the [AWS CLI](https://aws.amazon.com/cli/) -_Prerequisite: [Install and configur the AWS command line interface](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)_) +_Prerequisite: [Install and configure the AWS command line interface](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)_ **Without KMS**