Truy cập dữ liệu từ Snowflake Horizon Catalog bằng liên kết danh mục trong AWS Glue Data Catalog

Tác giả: Andries Engelbrecht, Nidhi Gupta, Pratik Das, and Srividya Parthasarathy
Ngày phát hành: 14 JAN 2026
Chuyên mục: Advanced (300), Amazon Athena, AWS Glue, AWS Lake Formation, Technical How-to

Đây là bài viết của khách mời bởi Andries Engelbrecht, Principal Partner Solutions Engineer tại Snowflake, hợp tác với AWS.

AWS đã công bố một tính năng liên kết danh mục mới cho phép bạn truy cập trực tiếp dữ liệu từ Snowflake Horizon Catalog thông qua AWS Glue Data Catalog. Tích hợp này cho phép bạn khám phá và truy vấn dữ liệu Horizon Catalog ở định dạng Iceberg thông qua các điểm cuối REST, đồng thời áp dụng kiểm soát truy cập chi tiết bằng AWS Lake Formation. Tính năng liên kết danh mục mới kết hợp với tính năng cơ sở dữ liệu liên kết danh mục của Snowflake có nghĩa là người dùng có thể truy cập dữ liệu được lưu trữ trên AWS và Snowflake từ một điểm truy cập duy nhất, giảm thiểu việc di chuyển dữ liệu và các chi phí liên quan bằng cách loại bỏ nhu cầu sao chép dữ liệu giữa các nền tảng.

Trong bài viết này, chúng tôi sẽ chỉ cho bạn cách kết nối AWS Glue Data Catalog với Snowflake Horizon Catalog và truy vấn dữ liệu bằng các dịch vụ phân tích của AWS. Chúng tôi sẽ đề cập đến cách thiết lập các danh mục trong Horizon Catalog và cấu hình các quyền cần thiết, tạo và cấu hình kết nối liên kết trong AWS Glue, triển khai kiểm soát truy cập chi tiết bằng AWS Lake Formation, và cuối cùng, truy vấn các bảng liên kết bằng Amazon Athena. Cách tiếp cận từng bước này sẽ hướng dẫn bạn qua toàn bộ quá trình thiết lập tích hợp giữa môi trường dữ liệu Snowflake và AWS của bạn.

Các ví dụ kinh doanh và lợi ích chính

Liên kết danh mục cho phép một số kịch bản kinh doanh quan trọng đồng thời mang lại các lợi ích hoạt động và chiến lược chính.

Các ví dụ phổ biến

Khả năng liên kết này giải quyết một số kịch bản kinh doanh chính:

  • Phân tích đa nền tảng được quản lý: Truy vấn dữ liệu trên các môi trường AWS và Snowflake để cải thiện việc ra quyết định dựa trên dữ liệu mà không cần di chuyển hoặc sao chép dữ liệu.
  • Triển khai Data Mesh: Cho phép khám phá dữ liệu an toàn và liên kết trong khi vẫn duy trì quyền sở hữu theo định hướng miền.
  • Quản lý tuân thủ: Triển khai kiểm soát truy cập và kiểm toán nhất quán trên các nền tảng.

Lợi ích chính

  • Hiệu quả hoạt động: Loại bỏ việc sao chép dữ liệu và giảm khối lượng công việc Extract Transform Load (ETL).
  • Bảo mật nâng cao: Tập trung kiểm soát truy cập thông qua AWS Lake Formation với các quyền chi tiết.
  • Tối ưu hóa chi phí: Giảm thiểu chi phí truyền và lưu trữ dữ liệu trên các nền tảng.
  • Tăng cường sự linh hoạt: Cho phép thời gian thu thập thông tin nhanh hơn với quyền truy cập truy vấn trực tiếp.
  • Quản trị đơn giản hóa: Duy trì khung tuân thủ và kiểm toán thống nhất.

Tổng quan giải pháp

Giải pháp sử dụng liên kết danh mục trong AWS Glue Data Catalog để tích hợp với Snowflake Horizon Catalog. Tích hợp này hỗ trợ cả Snowflake Horizon, nơi danh mục nội bộ của Snowflake, và các danh mục bên ngoài như Apache Polaris, Snowflake Open Catalog (một dịch vụ được quản lý lưu trữ Apache Polaris), và các dịch vụ khác.

Sơ đồ sau minh họa cách AWS Glue Data Catalog liên kết với Snowflake Horizon Catalog, cho phép khách hàng truy cập trực tiếp dữ liệu định dạng Iceberg được quản lý bởi Snowflake Horizon Catalog thông qua Glue Data Catalog.


Hình 1: Sơ đồ kiến trúc cho thấy sự tích hợp giữa các dịch vụ AWS và Snowflake bằng cách sử dụng các kết nối danh mục liên kết thông qua Apache Iceberg REST API.

Tích hợp hoạt động thông qua ba thành phần chính:

  1. Xác thực: Sử dụng thông tin xác thực OAuth2 của Snowflake principal.
  2. Kiểm soát truy cập: AWS Lake Formation quản lý các quyền chi tiết.
  3. Truy cập truy vấn: Các dịch vụ phân tích của AWS như Amazon Athena có thể truy vấn trực tiếp các bảng liên kết.

Bây giờ, chúng ta sẽ đi qua quy trình từng bước để thiết lập tích hợp này.

Điều kiện tiên quyết

Trước khi bắt đầu, hãy xác nhận bạn có những điều sau:

Cấu hình Snowflake Horizon Catalog cho truy cập bên ngoài Iceberg

Snowflake Horizon Catalog đã hỗ trợ quản lý các bảng Iceberg. Đối với hướng dẫn này, bạn cần tạo các bảng Iceberg do Snowflake quản lý với dữ liệu được lưu trữ trong Amazon S3.

Thực hiện theo các bước sau theo thứ tự:

  1. Tạo một external volume cho S3: Đầu tiên, tạo một external volume trỏ đến S3 bucket của bạn nơi dữ liệu bảng Iceberg được lưu trữ. Thực hiện theo hướng dẫn trong Tạo External Volume(s) cho các bảng Iceberg trên S3.
  2. Tạo một cơ sở dữ liệu: Tạo một cơ sở dữ liệu để tổ chức các bảng của bạn. Tham khảo tài liệu tạo cơ sở dữ liệu của Snowflake.
  3. Tạo một schema: Tạo một schema trong cơ sở dữ liệu của bạn theo hướng dẫn tạo schema của Snowflake.
  4. Tạo một bảng Iceberg: Tạo bảng Iceberg của bạn bằng cách sử dụng external volume. Thực hiện theo hướng dẫn để Tạo bảng Iceberg.

Sau khi hoàn thành các bước này, các bảng Iceberg do Snowflake quản lý của bạn đã sẵn sàng để liên kết với AWS Glue Data Catalog.

Cấu hình kiểm soát truy cập và xác thực

Để cho phép AWS Glue truy cập các bảng Iceberg do Snowflake quản lý của bạn, bạn cần cấu hình kiểm soát truy cập và lấy thông tin xác thực.

Bước 1: Cấu hình kiểm soát truy cập

Tạo một vai trò Snowflake chuyên dụng cho quyền truy cập công cụ bên ngoài để thiết lập ranh giới quản trị rõ ràng. Thực hiện theo hướng dẫn trong Cấu hình kiểm soát truy cập cho các công cụ bên ngoài và thiết lập các quyền thích hợp cho các bảng Iceberg của bạn.

Bước 2: Lấy mã truy cập

Tạo mã truy cập để xác thực AWS Glue với Snowflake Horizon Catalog. Snowflake hỗ trợ ba cơ chế xác thực:

  • External OAuth
  • Xác thực cặp khóa
  • Programmatic Access Token (PAT)

Chọn phương pháp xác thực phù hợp nhất với yêu cầu bảo mật của bạn và làm theo tài liệu Snowflake tương ứng để tạo thông tin xác thực của bạn.

Catalog Federation hỗ trợ OAuth hoặc xác thực tùy chỉnh. Để biết chi tiết về cách sử dụng OAuth, hãy tham khảo Liên kết với Snowflake Iceberg Catalog.

Đối với bài viết này, chúng tôi sử dụng xác thực tùy chỉnh và tạo mã truy cập bằng PAT. Thay thế role_name bằng vai trò principal và token_value bằng Programmatic Access Token của principal.

curl --location 'https://<accountidentifier>.snowflakecomputing.com/polaris/api/catalog/v1/oauth/tokens' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'grant_type=client_credentials' \
--data-urlencode 'scope=session:role:<role_name>' \
--data-urlencode 'client_secret=<token_value>'

Ghi lại mã truy cập được tạo.

Bước 3: Bật liên kết danh mục

Với kiểm soát truy cập đã được cấu hình và thông tin xác thực đã có, AWS Glue Catalog Federation giờ đây có thể kết nối và truy cập Horizon Catalog của Snowflake.

Tùy chọn: Cấu hình Snowflake Open Catalog

Nếu bạn muốn sử dụng Snowflake Open Catalog để truy cập bên ngoài Iceberg, hãy tham khảo Đồng bộ hóa bảng do Snowflake quản lý với Snowflake Open Catalog để biết hướng dẫn thiết lập thay thế.

Thiết lập liên kết Glue Catalog với Snowflake Horizon Catalog

Tạo một secret trên AWS Secrets Manager

Đăng nhập vào bảng điều khiển AWS bằng vai trò IAM có quyền truy cập vào AWS Secrets Manager. Mở Secrets Manager:

  • Chọn Store a new secret và chọn Other type of secret cho loại secret.
  • Đặt cặp khóa-giá trị:
    • Key: BEARER_TOKEN
    • Value: Mã truy cập đã ghi lại trước đó
  • Chọn Next và cung cấp tên secret là horizon-secret.
  • Hoàn tất thiết lập bằng cách chọn Store.

Ngoài ra, bạn có thể sử dụng CLI để tạo secret bằng cách chạy lệnh sau.

Thay thế your-access-tokenyour-region bằng các giá trị thực tế của bạn:

aws secretsmanager create-secret \
--name horizon-secret \
--description "Snowflake Horizon access token" \
--secret-string '{
"BEARER_TOKEN": "your-access-token"
}' \
--region your-region

Tạo vai trò IAM cho liên kết danh mục

Với tư cách là chủ sở hữu danh mục của một danh mục liên kết trong AWS Glue Data Catalog, bạn có thể sử dụng Lake Formation để triển khai kiểm soát truy cập toàn diện cho các nhóm dữ liệu của mình:

Các tùy chọn kiểm soát truy cập

Bạn có thể triển khai kiểm soát truy cập ở các mức độ chi tiết khác nhau tùy thuộc vào nhu cầu quản trị của bạn:

  • Mức độ thô: Quyền cấp bảng
  • Mức độ chi tiết: Lọc cấp cột, cấp hàng và cấp ô
  • Dựa trên thẻ: Truy cập động dựa trên các thẻ phân loại dữ liệu

Lake Formation yêu cầu một vai trò IAM có quyền truy cập vào các vị trí S3 cơ bản của danh mục bên ngoài của bạn.

Tạo một vai trò IAM cho phép Glue Connection truy cập AWS Secrets Manager, cấu hình VPC (tùy chọn) và Lake Formation để quản lý việc cấp thông tin xác thực cho S3 bucket/prefix.

Các quyền cần thiết

  1. Truy cập Secrets Manager: Glue connection yêu cầu quyền truy xuất giá trị secret từ Secrets Manager cho các mã thông báo OAuth được lưu trữ cho kết nối dịch vụ Snowflake của bạn.
  2. Truy cập Amazon Virtual Private Cloud (VPC) (tùy chọn): Khi sử dụng các điểm cuối VPC để hạn chế kết nối với tài khoản Snowflake Open Catalog của bạn, Glue connection cần quyền mô tả và sử dụng các giao diện mạng VPC. Cấu hình này đảm bảo quyền truy cập an toàn, được kiểm soát vào cả thông tin xác thực được lưu trữ và tài nguyên mạng của bạn trong khi vẫn duy trì sự cô lập thích hợp thông qua các điểm cuối VPC.
  3. Quyền S3 bucket và khóa AWS Key Management Service (KMS): Glue connection yêu cầu quyền S3 để đọc chứng chỉ nếu được sử dụng trong thiết lập kết nối. Ngoài ra, Lake Formation yêu cầu quyền đọc trên bucket/prefix nơi dữ liệu bảng danh mục từ xa cư trú. Nếu dữ liệu được mã hóa bằng khóa KMS, cần có thêm quyền KMS.

Các bước thiết lập:

Chạy lệnh sau bằng AWS CLI bằng cách thay thế phần giữ chỗ bằng thông tin thiết lập của bạn:

Tạo một tệp JSON (ví dụ: trust-policy.json) với cấu trúc sau:

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": ["glue.amazonaws.com","lakeformation.amazonaws.com"]
},
"Action": "sts:AssumeRole"
}
]
}

Sử dụng lệnh aws iam create-role, tham chiếu đến tệp chính sách tin cậy:

aws iam create-role \
--role-name LFDataAccessRole \
--assume-role-policy-document file://<path_file_downloaded>/trust-policy.json

Đầu tiên, tạo một tệp JSON (chẳng hạn như, permissions-policy.json) cho các quyền:

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"secretsmanager:GetSecretValue",
"secretsmanager:DescribeSecret"
],
"Resource": [
"<secrets manager ARN>"
]
},
{
"Effect": "Allow",
"Action": [
"ec2:CreateNetworkInterface",
"ec2:DeleteNetworkInterface",
"ec2:DescribeNetworkInterfaces"
],
"Resource": "*",
"Condition": {
"ArnEquals": {
"ec2:Vpc": "arn:aws:ec2:region:account-id:vpc/<vpc-id>",
"ec2:Subnet": [
"arn:aws:ec2:region:account-id:subnet/<subnet-id>"
]
}
}
},
{
# Required when using custom cert to sign requests.
"Effect": "Allow",
"Action": [
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::<bucketname>/<certpath>"
]
},
{ # Required when using customer managed encryption key for s3
"Effect": "Allow",
"Action": [
"kms:decrypt",
"kms:encrypt"
],
"Resource": [
"<kmsKey>"
]
}
]
}

Sau đó, đính kèm nó vào vai trò:

aws iam put-role-policy \
--role-name LFDataAccessRole \
--policy-name myaccesspolicies \
--policy-document file://<path_file_downloaded>/permissions- policy.json

Tạo danh mục liên kết trong Glue Data Catalog

AWS Glue hỗ trợ loại kết nối SNOWFLAKEICEBERGRESTCATALOG để kết nối Glue Data Catalog với Snowflake Horizon Catalog và Snowflake Open Catalog. Trình kết nối Glue này hỗ trợ xác thực OAuth2 và bao gồm các tham số cấu hình bổ sung như CASING_TYPE để tùy chỉnh cách AWS Glue Data Catalog khám phá siêu dữ liệu trong các tài khoản Snowflake Horizon Catalog.

Đăng nhập vào bảng điều khiển AWS của bạn với tư cách là quản trị viên dữ liệu và mở bảng điều khiển AWS Lake Formation.

Hình 2: Ảnh chụp màn hình bảng điều khiển AWS Lake Formation hiển thị Bước 1 của trình hướng dẫn tạo danh mục với năm tùy chọn loại liên kết, Snowflake Horizon Catalog được chọn.

  1. Chọn Catalog trong ngăn điều hướng bên trái và chọn Create catalog.
  2. Chọn nguồn dữ liệu là Snowflake Horizon Catalog.
  3. Cung cấp thông tin sau:
    • Name: Tên của danh mục liên kết trong Glue Catalog. Đối với bài viết này, chúng tôi sử dụng federated_lakehousedb.
    • Catalog name in Snowflake: Tên danh mục hiện có trong Snowflake Horizon Catalog, tên này phải khớp chính xác với tên trong Horizon Catalog. Đối với bài viết này, chúng tôi sử dụng LAKEHOUSEDB.
    • Đối với Connection details, chọn New connection configurations:
      • Connection name: Tên cho kết nối Glue. Đối với bài viết này, chúng tôi sử dụng federatedconnection1.
      • Workspace URL: URL Horizon IRC (định dạng: https://<account_identifier>.snowflakecomputing.com)
      • Casing type: chọn Uppercase only
      • Authentication:
        • Authentication type: chọn Custom. Ngoài ra, bạn có thể chọn OAuth2 authentication. Đối với xác thực tùy chỉnh, mã truy cập được tạo, làm mới và quản lý bởi ứng dụng hoặc hệ thống của khách hàng và được lưu trữ bằng AWS Secrets Manager.
        • OAuth Secret: Cung cấp ARN của secret manager đã được tạo ở bước trước.
  • Nếu bạn có thiết lập AWS PrivateLink và/hoặc thiết lập proxy, bạn có thể cung cấp chi tiết mạng trong Settings for network configurations (tùy chọn).
  • Để đăng ký kết nối Glue với Lake Formation:
    • Chọn vai trò IAM đã tạo trước đó (LFDataAccessRole) để quản lý quyền truy cập dữ liệu bằng Lake Formation.

Để kiểm tra kết nối, chọn Run test. Sau khi thông tin kết nối được xác thực, nó sẽ hiển thị là thành công.


Hình 3: Biểu ngữ thành công màu xanh lá cây hiển thị “Connection test successful” với biểu tượng dấu kiểm, xác nhận cấu hình AWS hợp lệ.

Bây giờ bạn có thể tạo danh mục bằng cách chọn Create catalog.

Ngoài ra, bạn có thể sử dụng AWS CLI để tạo kết nối và danh mục bằng các lệnh ví dụ:

aws glue create-connection \
--connection-input '{
"Name": "federatedconnection1",
"ConnectionType": "SNOWFLAKEICEBERGRESTCATALOG",
"ConnectionProperties": {
"INSTANCE_URL": "<your-snowflake-account-URL>",
"ROLE_ARN": "< ARN_of_LFDataAccessRole>",
"CATALOG_CASING_FILTER": "UPPERCASE_ONLY"
},
"AuthenticationConfiguration": {
"AuthenticationType": "CUSTOM",
"SecretArn": "arn:aws:secretsmanager:<your-aws-region>:<your-aws-account-id>:secret:horizon-secret"
}
}' \
--region <your-aws-region>
aws lakeformation register-resource \
--resource-arn <ARN_of_federatedconnection1_connection> \
--role-arn <ARN_of_LFDataAccessRole> \
--with-federation \
--with-privileged-access \
--region <your-aws-region>
aws glue create-catalog \
--name federated_lakehousedb \
--catalog-input '{
"FederatedCatalog": {
"Identifier": "LAKEHOUSEDB",
"ConnectionName": “federatedconnection1 "
},
"CreateTableDefaultPermissions": [],
"CreateDatabaseDefaultPermissions": []
}'

Sau khi danh mục được tạo, các cơ sở dữ liệu và bảng Horizon sẽ được liệt kê dưới danh mục liên kết.

Bạn có thể triển khai kiểm soát truy cập chi tiết trên các bảng bằng cách áp dụng bộ lọc hàng/cột bằng Lake Formation.

Truy vấn dữ liệu bằng trình chỉnh sửa truy vấn Athena:

Mở bảng điều khiển Amazon Athena và chạy truy vấn sau để truy cập bảng Horizon liên kết:

SELECT * FROM "public"."customer" limit 10;

Dọn dẹp

Để dọn dẹp tài nguyên của bạn, hãy hoàn thành các bước sau:

  1. Xóa cơ sở dữ liệu Snowflake với Cascade.
  2. Xóa External Volume đã tạo cho các bảng Iceberg trên S3.
  3. Xóa các tài nguyên trong Glue Data Catalog và Lake Formation đã tạo cho bài viết này.
  4. Xóa các vai trò IAMS3 buckets đã sử dụng cho bài viết này.
  5. Xóa bất kỳ VPC, khóa KMS nào nếu được sử dụng cho thiết lập bài viết này.

Kết luận

Trong bài viết này, chúng tôi đã trình bày cách thiết lập kết nối an toàn giữa các dịch vụ AWS Analytics và Snowflake Horizon Catalog, cho phép bạn truy cập dữ liệu của mình từ một chế độ xem được kết nối và quản lý duy nhất. Bạn đã học cách:

  • Cấu hình liên kết danh mục giữa AWS Glue Data Catalog và Snowflake Horizon Catalog
  • Thiết lập xác thực OAuth2 để truy cập an toàn
  • Cấp quyền truy cập vào bảng Iceberg trong Snowflake Horizon Catalog bằng AWS Lake Formation
  • Truy vấn các bảng liên kết bằng Amazon Athena

Bạn có thể làm theo các bước tương tự để thiết lập kết nối an toàn với các tùy chọn danh mục mã nguồn mở như Snowflake Open Catalog, một dịch vụ được quản lý cho Apache Iceberg. Hãy nhớ dọn dẹp bất kỳ tài nguyên nào bạn đã tạo trong khi làm theo hướng dẫn này để tránh các khoản phí liên tục.

Để khám phá thêm giải pháp này trong môi trường của bạn, hãy xem xét các tài nguyên sau:

Các tài nguyên này có thể giúp bạn triển khai và tối ưu hóa mô hình tích hợp này cho trường hợp sử dụng cụ thể của bạn. Khi bạn bắt đầu hành trình này, hãy nhớ bắt đầu nhỏ, xác thực kiến trúc của bạn với dữ liệu thử nghiệm và dần dần mở rộng quy mô triển khai dựa trên nhu cầu của tổ chức bạn. Hãy theo dõi các buổi workshop và tài nguyên trong tương lai.


Về tác giả

Andries Engelbrecht

Andries Engelbrecht

Andries là Principal Partner Solutions Engineer tại Snowflake, làm việc với AWS. Anh ấy hỗ trợ tích hợp sản phẩm và dịch vụ, cũng như phát triển các giải pháp chung với AWS. Andries có hơn 25 năm kinh nghiệm trong lĩnh vực dữ liệu và phân tích.

Nidhi Gupta

Nidhi Gupta

Nidhi là Senior Partner Solutions Architect tại AWS, chuyên về phân tích dữ liệu và AI. Cô ấy giúp khách hàng và đối tác xây dựng và tối ưu hóa khối lượng công việc Snowflake trên AWS. Nidhi có kinh nghiệm sâu rộng trong việc dẫn dắt phát triển, phát hành sản phẩm và triển khai, tập trung vào Dữ liệu, AI, ML, AI tạo sinh và Phân tích nâng cao.

Srividya Parthasarathy

Srividya Parthasarathy

Srividya là Senior Big Data Architect trong nhóm AWS Lake Formation. Cô ấy làm việc với nhóm sản phẩm và khách hàng để xây dựng các tính năng và giải pháp mạnh mẽ cho nền tảng dữ liệu phân tích của họ. Cô ấy thích xây dựng các giải pháp data mesh và chia sẻ chúng với cộng đồng.

Pratik Das

Pratik Das

Pratik là Senior Product Manager với AWS Lake Formation. Anh ấy đam mê mọi thứ về dữ liệu và làm việc với khách hàng để hiểu yêu cầu của họ và xây dựng những trải nghiệm thú vị. Anh ấy có kinh nghiệm trong việc xây dựng các giải pháp dựa trên dữ liệu và hệ thống học máy.

Leave a comment