Nâng cao dashboard Amazon Quick Suite với khả năng làm mới dữ liệu theo yêu cầu

Tác giả: Kanwar Bajwa và Zainab Syeda
Ngày đăng: 05/01/2026
Danh mục: Amazon Quick Sight, Amazon Quick Suite, Analytics

Amazon Quick Suite là một không gian làm việc số được hỗ trợ bởi AI agentic, cung cấp cho người dùng doanh nghiệp một tập hợp các “đồng đội” agentic có khả năng nhanh chóng trả lời câu hỏi trong công việc và biến những câu trả lời đó thành hành động. Nền tảng này cũng giúp chuyển đổi dữ liệu phân tán thành các insight mang tính chiến lược, hỗ trợ khách hàng ra quyết định nhanh hơn và đạt được kết quả kinh doanh tốt hơn. Khi các tổ chức mở rộng khối lượng công việc phân tích trong Quick Suite, việc cung cấp dữ liệu kịp thời mà không làm ảnh hưởng đến hiệu năng dashboard trở nên cực kỳ quan trọng.

Đối với các nguồn dữ liệu có cấu trúc, Quick Suite cung cấp hai phương thức kết nối chính: Super-fast, Parallel, In-memory Calculation Engine (SPICE), cơ chế cache dữ liệu trong bộ nhớ để truy vấn nhanh, và chế độ direct query, truy xuất dữ liệu trực tiếp từ nguồn. SPICE mang lại hiệu năng ở mức dưới một giây nhưng phụ thuộc vào các lịch làm mới dữ liệu đã được lên lịch sẵn. Chế độ direct query cung cấp kết quả theo thời gian thực nhưng có thể gây độ trễ, đặc biệt với tập dữ liệu lớn hoặc truy vấn phức tạp trong giờ cao điểm.

Nhiều use case trong doanh nghiệp yêu cầu đồng thời hiệu năng cao và insight luôn được cập nhật. Ví dụ, một nhóm phân tích bán lẻ có thể cần cập nhật dữ liệu bán hàng, tồn kho và mức độ tương tác mỗi 10–15 phút. Tuy nhiên, lịch làm mới SPICE định kỳ có thể không phù hợp với tần suất cập nhật dày đặc như vậy, trong khi direct query có thể làm dashboard chậm đi vào thời điểm hiệu năng là yếu tố then chốt.

Khả năng làm mới SPICE theo yêu cầu (on-demand SPICE refresh) cho phép người dùng kích hoạt cập nhật dataset trực tiếp từ dashboard, cung cấp dữ liệu gần thời gian thực mà không làm giảm hiệu năng. Do API có giới hạn sử dụng (ví dụ: số lần refresh trong một ngày), tính năng này nên được giới hạn cho admin hoặc người dùng được ủy quyền nhằm tránh lạm dụng. Cách tiếp cận này kết hợp hiệu năng truy vấn nhanh của SPICE với sự linh hoạt trong việc cập nhật dữ liệu khi cần, mang lại insight chính xác và kịp thời cho các quyết định kinh doanh quan trọng, đồng thời vẫn duy trì hiệu năng tối ưu cho dashboard.

Trong bài viết này, chúng tôi hướng dẫn cách bật khả năng làm mới SPICE theo yêu cầu bằng một nút tùy chỉnh trong Quick Suite, như minh họa ở hình sau, giúp bạn duy trì các dashboard nhanh, tương tác tốt và trao quyền cho người dùng chủ động quyết định thời điểm cập nhật dữ liệu.

Tổng quan giải pháp

Giải pháp được xây dựng dựa trên một dataset SPICE đóng vai trò là lớp hiệu năng cho dashboard. Dataset này ingest dữ liệu từ các nguồn được hỗ trợ như Amazon Relational Database Service (Amazon RDS), Amazon Redshift, Amazon Athena hoặc Amazon Simple Storage Service (Amazon S3). Mặc dù đây là những nguồn dữ liệu được sử dụng phổ biến nhất, Quick Suite còn hỗ trợ nhiều nguồn khác. Một dataset SPICE duy nhất cũng có thể phục vụ nhiều dashboard trong toàn tổ chức, cung cấp một lớp dữ liệu dùng chung, hiệu năng cao, đảm bảo tính nhất quán và giảm trùng lặp. Các lần refresh theo lịch giúp duy trì mức độ cập nhật cơ bản của dữ liệu, còn khả năng refresh theo yêu cầu mở rộng kiến trúc để hỗ trợ cập nhật tức thì do người dùng kích hoạt vào những thời điểm quan trọng.

Giải pháp này tích hợp một cơ chế điều khiển refresh vào dashboard Quick Suite để khởi tạo ingestion SPICE theo yêu cầu. Cơ chế refresh được triển khai dưới dạng một custom action của Quick Suite, gửi request tới một endpoint của Amazon API Gateway. API Gateway sẽ gọi một hàm AWS Lambda, và hàm này gọi API CreateIngestion của Quick Suite để refresh dataset được chỉ định. Bạn có thể làm mới dataset thủ công tối đa 32 lần trong 24 giờ đối với tài khoản Enterprise edition, và 8 lần trong 24 giờ đối với tài khoản Standard edition. Mỗi chu kỳ 24 giờ được tính bắt đầu từ 24 giờ trước thời điểm hiện tại. Sau khi ingestion hoàn tất, dashboard sẽ tự động hiển thị dữ liệu đã được cập nhật cho người dùng.

Kiến trúc của giải pháp được minh họa trong sơ đồ sau và bao gồm các thành phần:

  • Quick Suite – Chứa dashboard và custom action Refresh
  • API Gateway – Đóng vai trò là endpoint REST API an toàn mà Quick Suite gọi tới
  • Lambda – Nhận request và gọi API Quick Suite để khởi động SPICE ingestion
  • Amazon S3 – Nguồn dữ liệu

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

Các điều kiện sau là bắt buộc cho giải pháp này:

  • Tài khoản AWS
  • Kiến thức cơ bản về các dịch vụ AWS
  • Quick Suite Enterprise edition
  • Dung lượng SPICE trong Quick Suite

Triển khai

Trong các phần sau, chúng tôi sẽ hướng dẫn từng bước để triển khai pipeline ingestion SPICE theo yêu cầu bằng các dịch vụ AWS.

Tạo S3 bucket và upload dataset

Ở bước đầu tiên, bạn tạo một S3 bucket để lưu trữ dữ liệu và upload dataset.

Tạo S3 bucket

  • Tạo một S3 bucket theo các bước sau:
  • Trên Amazon S3 console, chọn Create bucket.
  • Nhập tên bucket, ví dụ refresh-iris-data.
  • Chọn AWS Region nơi bạn muốn tạo bucket.
  • Giữ các thiết lập khác ở mặc định hoặc điều chỉnh theo yêu cầu bảo mật/chính sách của bạn.
  • Chọn Create bucket.

Upload dataset

Thực hiện các bước sau để upload dataset:

  • Trên Amazon S3 console, vào bucket bạn vừa tạo.
  • Chọn Upload và chọn Add files.
  • Chọn file dataset của bạn (trong ví dụ này là iris-parquet.csv).
  • Chọn Upload.

Tạo file manifest cho Quick Suite

Quick Suite sử dụng file manifest để hiểu cấu trúc các file trong Amazon S3. Sử dụng đoạn code sau để tạo file manifest với tên iris-parquet.csv:

{
  "fileLocations": [
    {
      "URIs": [
        "s3://refresh-iris-data/iris-parquet.csv"
      ]
    }
  ],
  "globalUploadSettings": {
    "format": "CSV",
    "delimiter": ",",
    "textqualifier": "\"",
    "containsHeader": "true"
  }
}

Bash

Cấp quyền Amazon S3 cho Quick Suite

Thực hiện các bước sau để cấp quyền Amazon S3 cho Quick Suite:

  • Trên Quick Suite console, chọn tên người dùng của bạn ở góc trên bên phải và chọn Manage Quick Suite.
  • Trong phần Permissions ở thanh điều hướng, chọn AWS resources.
  • Trong mục Select Amazon S3 buckets, chọn Select buckets, chọn bucket bạn đã tạo (ví dụ refresh-iris-data), sau đó chọn Finish.
  • Chọn Save.

Tạo SPICE dataset trong Quick Suite

Ở bước này, bạn tạo một SPICE dataset từ dữ liệu đã upload lên Amazon S3.

Tạo dataset

Thực hiện các bước sau để tạo dataset:

  • Trên Quick Suite console, trong thanh điều hướng, chọn Datasets.
  • Chọn Create dataset.
  • Chọn Create data source.
  • Chọn S3 làm nguồn dữ liệu.
  • Với Data source name, nhập tên (ví dụ IrisDataFromS3).
  • Với Upload a manifest file, nhập S3 URI của file manifest (ví dụ s3://refresh-iris-data/manifest.json).
  • Chọn Connect.

Import dataset vào SPICE

Quick Suite sẽ đọc file và hiển thị bản xem trước. Thực hiện các bước sau để import dataset vào SPICE:

  • Trong phần Data source details, chọn Visualize.
  • Ghi lại dataset ID. Bạn có thể lấy bằng cách mở dataset và sao chép URL. Trong ví dụ sau, dataset ID là 2423b7:
    https://us-east-1.quicksight.aws.amazon.com/data-sets/2423b7xxxx/view.

Tạo Lambda function để kích hoạt ingestion

Ở bước này, bạn tạo một Lambda function để kích hoạt ingestion dữ liệu mới nhất.

Tạo Lambda function

Thực hiện các bước sau để tạo Lambda function:

  • Trên Lambda console, chọn Create function.
  • Với Function name, nhập tên (ví dụ quicksuite_refresh).
  • Với Runtime, chọn Python 3.12 hoặc mới hơn.
  • Chọn Create a new role with basic Lambda permissions.
  • Chọn Create function.
  • Tạo Lambda function bằng cách nhập đoạn code sau. Hàm Lambda này được viết bằng Python để kích hoạt API refresh SPICE ingestion cho dataset Quick Suite.
import json
import boto3
import uuid
def lambda_handler(event, context):
    print("Full event:", event)
    qs_params = event.get("queryStringParameters") or {}
    account_id = qs_params.get("QUICKSUITE_ACCOUNT_ID")
    dataset_id = qs_params.get("DATASET_ID")
    ingestion_type = "FULL_REFRESH"  # or "INCREMENTAL_REFRESH"
    if not account_id or not dataset_id:
        return {
            "statusCode": 400,
            "body": json.dumps({
                "message": "Missing required parameters: QUICKSUITE_ACCOUNT_ID and/or DATASET_ID"
            })
        }
    ingestion_id = str(uuid.uuid4())
    client = boto3.client("quicksight")
    try:
        response = client.create_ingestion(
            AwsAccountId=account_id,
            DataSetId=dataset_id,
            IngestionId=ingestion_id,
            IngestionType=ingestion_type
        )
        print("Full response:", response)
        return {
            "body": json.dumps({
                "StatusCode" : response.get("ResponseMetadata", {}).get("HTTPStatusCode"),
                "Arn": response.get("Arn"),
                "IngestionId": response.get("IngestionId"),
                "IngestionStatus": response.get("IngestionStatus"),
                "RequestId": response.get("RequestId")
            })
        }
    except Exception as e:
        print("Error:", str(e))
        return {
            "statusCode": 500,
            "body": json.dumps({
                "message": "Failed to start ingestion",
                "error": str(e)
            })
        }

Bash

  • Chọn Deploy.

Cấu hình IAM role cho Lambda

Thực hiện các bước sau để cấu hình role của AWS Identity and Access Management (IAM) cho Lambda:

  • Trên tab Configurations, chọn Permissions.
  • Trong phần Execution role, chọn link Role name.
  • Gắn inline policy sau vào execution role của Lambda:
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "logs:CreateLogGroup",
            "Resource": "arn:aws:logs:us-east-1:<AccountID>:*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogStream",
                "logs:PutLogEvents"
            ],
            "Resource": [
                "arn:aws:logs:us-east-1:<AccountID>:log-group:/aws/lambda/quicksuitet_refresh:*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "quicksight:CreateIngestion",
                "quicksight:DescribeIngestion"
            ],
            "Resource": "arn:aws:quicksight:us-east-1:<AccountID>:dataset/*"
        }
    ]
}

Bash

Kiểm thử Lambda function

Thực hiện các bước sau để kiểm thử function:

  • Trên trang chi tiết function, chọn Test.
  • Tạo một event mới và đặt tên, ví dụ Refresh.
  • Cung cấp account ID và dataset ID dưới dạng query parameters.
  • Chọn Test.

Lambda sẽ thực thi thành công, như minh họa ở hình sau.

Tạo API Gateway endpoint tích hợp với Lambda function

Sử dụng endpoint tích hợp để kích hoạt Lambda function (khởi động ingestion Quick Suite) thông qua request REST GET.

Tạo REST API mới

Thực hiện các bước sau để tạo REST API mới:

  • Trên API Gateway console, trong thanh điều hướng, chọn APIs.
  • Chọn Create API.
  • Chọn REST API.
  • Chọn Build.
  • Với API name, nhập tên (ví dụ quicksuite_refresh).
  • Với Endpoint type, chọn Regional (giá trị mặc định).
  • Chọn Create API.
  • Trong thanh điều hướng, dưới API mới của bạn, chọn Create resource.
  • Với Resource name, nhập refresh.
  • Chọn Create resource.

Tạo GET method cho resource

Thực hiện các bước sau để tạo GET method:

  • Trên trang Resources, chọn resource /refresh.
  • Chọn Create method.
  • Chọn GET trong menu thả xuống.
  • Với Integration type, chọn Lambda function.
  • Bật Lambda proxy integration.
  • Với Lambda function, nhập Lambda function bạn đã tạo trước đó.
  • Chọn Create method.

Deploy API

Thực hiện các bước sau để deploy API:

  • Trên API Gateway console, trong thanh điều hướng, chọn Deploy API.
  • Với Deployment stage, chọn New stage.
  • Với Stage name, nhập prod (hoặc dev).
  • Chọn Deploy.

Kiểm thử API

Thực hiện các bước sau để kiểm thử API:

  • Trên trang chi tiết API, chọn tab Test.
  • Nhập account ID và dataset ID dưới dạng query parameters.
  • Chọn Test.

API sẽ thực thi thành công, như minh họa ở hình sau.

Thêm nút refresh dataset trong Quick Suite

Để hoàn thiện giải pháp, hãy thêm một nút để refresh dataset.

Tạo parameter

Thực hiện các bước sau để tạo parameter:

  • Trong Quick Suite, vào phần analyses của bạn.
  • Trong Parameters, chọn Add.
  • Đặt tên parameter là refresh, đặt Data type là String, và nhập Click here to refresh data cho Static default value.
  • Chọn Create.

Tạo calculated field

Thực hiện các bước sau để tạo calculated field:

  • Chọn Calculated field để tạo field mới với biểu thức ${refresh}.
  • Đặt tên là refresh_field.

Thêm table visual

Thực hiện các bước sau để thêm table visual:

  • Trong pane Visuals, thêm một table visual mới vào analysis.
  • Kéo refresh_field vào phần Group by.

Điều này tạo ra một bảng một dòng hiển thị giá trị của parameter.

Thêm custom action

Thực hiện các bước sau để thêm custom action:

  • Chọn visual, chọn Actions, và chọn Add URL action.
  • Trong trường URL, nhập endpoint API Gateway kích hoạt ingestion, ví dụ:
    https://your-api-url.amazonaws.com/dev/refresh?QUICKSUITE_ACCOUNT_ID=<AccountID>&DATASET_ID=<DataSetID>.
  • Với Open in, chọn New browser tab.
  • Chọn Save.

Tùy chỉnh nút bấm

Bạn có thể tùy chỉnh nút vừa tạo theo nhu cầu:

  • Ẩn tiêu đề cột nếu cần.
  • Thay đổi kích thước visual để trông giống một nút bấm.
  • Tùy chỉnh định dạng để thân thiện hơn với người dùng (ví dụ: thay đổi cỡ chữ, màu sắc, viền, v.v.).

Bảo mật API Gateway bằng resource policy

Để đảm bảo chỉ người dùng được ủy quyền (ví dụ: truy cập từ proxy của tổ chức hoặc các địa chỉ IP cụ thể) mới có thể kích hoạt SPICE ingestion theo yêu cầu, hãy sử dụng resource policy trên API Gateway để giới hạn truy cập theo IP. Thực hiện các bước sau:

  • Xác định địa chỉ IP hoặc dải IP đáng tin cậy.
  • Xác định địa chỉ IP công khai hoặc CIDR block mà người dùng của bạn sẽ truy cập từ đó, ví dụ: 22.01.13.11/32 (một IP) hoặc 22.01.13.11/24 (một dải).
  • Trên API Gateway console, vào API bạn đã tạo (ví dụ quicksuite_refresh).
  • Trong thanh điều hướng, chọn Resource policy.
  • Nhập policy sau:
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowFromCorporateProxy",
      "Effect": "Allow",
      "Principal": "*",
      "Action": "execute-api:Invoke",
      "Resource": "arn:aws:execute-api:us-east-1:<AccountID>:4muro2t76a/*/GET/refresh",
      "Condition": {
        "IpAddress": {
          "aws:SourceIp": [
            "<IP Address>",
            "<IP Address Range>"
          ]
        }
      }
    },
    {
      "Sid": "DenyAllOthers",
      "Effect": "Deny",
      "Principal": "*",
      "Action": "execute-api:Invoke",
      "Resource": "arn:aws:execute-api:us-east-1:<AccountID>:4muro2t76a/*/GET/refresh",
      "Condition": {
        "NotIpAddress": {
          "aws:SourceIp": [
            "<IP Address>"
          ]
        }
      }
    }
  ]
}

Bash

  • Chọn Deploy để deploy API.

Kiểm thử toàn bộ luồng

Sau khi hoàn tất giải pháp, bạn có thể kiểm thử bằng cách chọn Refresh. Bạn sẽ thấy một JSON response chứa trạng thái ingestion.

Nếu resource policy được cấu hình đúng, môi trường được phép sẽ nhận HTTP 201 OK. Khi chạy lại từ môi trường không nằm trong danh sách IP cho phép, bạn sẽ nhận lỗi HTTP 403 Forbidden.

Bạn có thể xem lịch sử refresh trên console, như minh họa ở hình sau.

Kết luận

Bằng cách triển khai giải pháp làm mới SPICE theo yêu cầu, bạn có thể duy trì các dashboard hiệu năng cao trong Quick Suite, đồng thời đảm bảo dữ liệu phản ánh những cập nhật mới nhất vào thời điểm quan trọng nhất, và vẫn trao quyền cho người dùng cuối chủ động kiểm soát việc refresh dữ liệu. Kiến trúc này cung cấp cho người ra quyết định khả năng truy cập ngay lập tức vào insight chính xác mà không làm ảnh hưởng đến khả năng phản hồi hay khả năng mở rộng. Với khả năng kích hoạt refresh dataset trực tiếp từ dashboard, các nhóm có thể đồng bộ việc cập nhật dữ liệu với các thời điểm ra quyết định quan trọng, tối ưu hóa việc sử dụng tài nguyên và giảm các job ingestion không cần thiết.

Hãy áp dụng giải pháp này để cải thiện tính kịp thời và mức độ liên quan của phân tích, nâng cao trải nghiệm người dùng và tăng hiệu quả vận hành cho các workload BI doanh nghiệp trên AWS.

Nếu bạn có bất kỳ câu hỏi, nhận xét hoặc đề xuất nào, hãy để lại bình luận. Bạn cũng có thể truy cập AWS re:Post.

Tác giả

Kanwar Bajwa là Principal Enterprise Account Engineer tại AWS, làm việc cùng khách hàng để tối ưu hóa việc sử dụng các dịch vụ AWS và đạt được các mục tiêu kinh doanh.

Zainab Syeda là Technical Account Manager tại Amazon Web Services ở Toronto. Cô làm việc với khách hàng trong lĩnh vực Financial Services, hỗ trợ họ khai thác các giải pháp cloud-native ở quy mô lớn.