Ngân hàng đề — AWS Certified Data Engineer Associate

Tìm thấy 867 câu.

Câu 71 Domain 1: Data Ingestion and Transformation

An online gaming platform generates large amounts of player activity logs, which are stored in Amazon S3 as JSON files. The platform requires a solution to process these logs nightly, aggregate player statistics, and then store the aggregated data in a format that supports efficient querying for daily reports.

Which AWS solution should be implemented to process and store the aggregated player statistics for efficient daily reporting?

  1. A

    Implement an AWS Lambda function to process the logs in S3, aggregate statistics, and write the data to Amazon DynamoDB.

  2. B

    Configure Amazon EMR to run nightly batch jobs on the S3 logs, aggregate the data, and output to Amazon Aurora.

  3. C

    Use AWS Data Pipeline to orchestrate the data processing in S3 and store the aggregated results in Amazon RDS.

  4. D

    Use AWS Glue to transform the JSON logs in S3, aggregate the data, and store the results in Amazon Redshift.

Xem giải thích

🧩 Phân tích nội dung câu hỏi

Một nền tảng game online sinh lượng lớn log hoạt động của người chơi, lưu dưới dạng JSON trên Amazon S3. Yêu cầu gồm ba vế nối nhau:

  1. Xử lý log theo lô mỗi đêm (nightly),
  2. Tổng hợp (aggregate) số liệu người chơi,
  3. Lưu kết quả ở định dạng hỗ trợ truy vấn hiệu quả cho báo cáo hằng ngày.

Cụm từ quyết định nằm ở vế thứ ba: "store the aggregated data in a format that supports efficient querying for daily reports". Đề không hỏi "xử lý được hay không" — cả bốn phương án đều xử lý được ở mức nào đó. Đề hỏi nơi lưu kết quả có phải là kho dữ liệu phân tích hay không. Cụm phụ trợ thứ hai là "nightly" và "large amounts": khối lượng lớn, chạy theo lịch, không cần thời gian thực — nghĩa là bài toán batch analytics chứ không phải bài toán transactional.

Nói ngắn gọn: đề đang mô tả một pipeline ETL → data warehouse. Ai bám vào hai chữ reporting và aggregated sẽ chọn đúng ngay.

✅ Vì sao đáp án đúng là đúng

Đáp án đúng theo tệp là D — dùng AWS Glue để transform log JSON trong S3, aggregate dữ liệu, rồi lưu kết quả vào Amazon Redshift.

Hai nửa của phương án này khớp đúng hai nửa của đề:

  • AWS Glue là dịch vụ data integration serverless, sinh ra để chuẩn bị và biến đổi dữ liệu cho phân tích. Nó đọc/ghi S3 trực tiếp, xử lý được khối lượng lớn, và chạy theo lịch mỗi đêm là kiểu công việc tự nhiên của nó — không phải dựng và quản cluster, không phải lo giới hạn thời gian chạy của một hàm.
  • Amazon Redshift là data warehouse, tối ưu cho tập dữ liệu lớn và truy vấn phân tích phức tạp. Đây chính là "format that supports efficient querying for daily reports" mà đề đòi: dữ liệu đã tổng hợp nằm trong kho cột, báo cáo hằng ngày quét và nhóm dữ liệu nhanh.

Ghép lại: Glue lo phần process và aggregate, Redshift lo phần store for efficient reporting. Không phương án nào khác ghép đủ cả hai vế.

❌ Vì sao các phương án còn lại sai

A — Lambda xử lý log trong S3, ghi vào DynamoDB. Hỏng ở cả hai đầu. Lambda có giới hạn thời gian chạy cho mỗi lần gọi, nên chạy job batch trên khối lượng log lớn là đi ngược thiết kế của nó — muốn dùng thì phải tự cắt nhỏ và điều phối, phức tạp thêm mà không được gì. Đầu kia, DynamoDB là NoSQL key-value, mạnh ở đọc/ghi từng bản ghi cực nhanh theo khoá, chứ không phải ở truy vấn phân tích kiểu nhóm – tổng hợp – lọc nhiều chiều mà báo cáo cần.

B — EMR chạy batch mỗi đêm, xuất ra Aurora. Đây là phương án gần đúng nhất, và cần nói rõ nó hỏng ở đâu. Vế xử lý thì hợp lý: EMR thừa sức chạy batch big data trên S3. Vế lưu trữ mới là chỗ sai — Aurora là cơ sở dữ liệu quan hệ hướng giao dịch (OLTP), không phải kho dữ liệu phân tích, nên không cho hiệu năng truy vấn báo cáo như Redshift. Thêm nữa, EMR đòi dựng và vận hành cluster, tức là gánh nặng quản trị và chi phí lớn hơn Glue cho đúng cùng một việc.

C — AWS Data Pipeline điều phối xử lý trong S3, lưu vào Amazon RDS. Data Pipeline là dịch vụ điều phối — nó lên lịch và di chuyển dữ liệu giữa các dịch vụ, chứ bản thân nó không phải công cụ transform như Glue. Nhưng điểm chí mạng vẫn là đích đến: RDS cũng là cơ sở dữ liệu quan hệ hướng giao dịch, mắc đúng lỗi của phương án B. Với dữ liệu tổng hợp phục vụ báo cáo, RDS không có mức tối ưu truy vấn phân tích mà Redshift được thiết kế riêng cho.

Để ý mạch chung: A, B, C đều chọn sai kho đích. Ba lựa chọn đích lần lượt là NoSQL, Aurora và RDS — không cái nào là data warehouse.

📌 Điểm cần nhớ

  • Thấy "aggregate + reporting/analytics/BI" trong đề AWS Data Engineer thì đích đến gần như luôn là Redshift (data warehouse), không phải RDS/Aurora (OLTP) hay DynamoDB (NoSQL key-value).
  • Glue là lựa chọn mặc định cho ETL serverless trên S3. Cân nhắc EMR khi đề nhấn mạnh framework cụ thể (Spark/Hive/Presto tuỳ biến) hoặc quyền kiểm soát cluster; nếu không, EMR chỉ thêm gánh nặng vận hành.
  • Lambda không hợp với batch job dài trên dữ liệu lớn vì giới hạn thời gian chạy mỗi lần gọi — gặp cụm "nightly batch" trên "large amounts of data" thì cảnh giác với phương án Lambda.
  • Với câu hỏi nhiều tầng kiểu này, hãy tách đề thành từng vế (xử lý / lưu trữ) rồi soi từng phương án theo vế: nhiều phương án đúng vế xử lý nhưng sai vế lưu trữ, và đó chính là chỗ để loại.
Câu 72 Domain 3: Data Operations and Support

A company stores large image files in an Amazon S3 bucket. They need a solution to dynamically resize images on-the-fly when accessed by different applications, without storing multiple versions of the same image. The solution should modify the image data during retrieval based on the application's requirements.

Which AWS service should the company use to achieve this on-the-fly transformation of image data?

  1. A

    AWS Step Functions

  2. B

    Amazon S3 Object Lambda

  3. C

    AWS Lambda@Edge

  4. D

    Amazon Elastic Transcoder

Xem giải thích

🧩 Phân tích nội dung câu hỏi

Đề mô tả một công ty lưu ảnh kích thước lớn trong Amazon S3, và cần một cách thay đổi kích thước ảnh ngay khi ứng dụng truy xuất, sao cho mỗi ứng dụng nhận được biến thể phù hợp với nhu cầu của mình.

Có ba cụm từ trong đề quyết định đáp án, và phải đọc cả ba cùng lúc:

  • "stored in an Amazon S3 bucket" — nguồn dữ liệu là S3, không phải một CDN hay một pipeline media.
  • "on-the-fly ... during retrieval" — việc biến đổi xảy ra trên đường trả dữ liệu về, tức là chen vào chính thao tác GET object, chứ không phải một job chạy trước rồi ghi kết quả ra đâu đó.
  • "without storing multiple versions of the same image" — đây là ràng buộc gạt bỏ mọi giải pháp kiểu "xử lý trước rồi lưu bản kết quả". Chỉ được giữ một bản gốc.

Ghép lại: đề đang hỏi dịch vụ nào cho phép cắm mã xử lý riêng vào giữa S3 và ứng dụng gọi GET, biến đổi nội dung object trong lúc trả về và không sinh ra bản sao lưu trữ.

✅ Vì sao đáp án đúng là đúng

Đáp án đúng theo tệp là B — Amazon S3 Object Lambda.

S3 Object Lambda được thiết kế đúng cho tình huống này: nó cho phép gắn mã tuỳ biến (một Lambda function) vào luồng lấy dữ liệu ra khỏi S3, và mã đó chạy trước khi dữ liệu được trả về cho ứng dụng gọi. Ứng dụng vẫn thực hiện một request lấy object bình thường; điểm khác là request đi qua một access point của Object Lambda, và hàm Lambda gắn kèm sẽ nhận object gốc, xử lý (ở đây là resize ảnh), rồi trả kết quả đã biến đổi về cho phía gọi.

Điều đó thoả mãn cả ba ràng buộc trong đề:

  • Nó gắn trực tiếp với S3 — đúng nguồn dữ liệu mà đề nêu.
  • Biến đổi diễn ra theo thời gian thực, trong lúc truy xuất, chứ không phải theo lô.
  • Trong bucket vẫn chỉ có một bản gốc; các biến thể được sinh ra khi cần rồi trả đi, nên công ty không phải lưu nhiều phiên bản của cùng một ảnh. Vì mỗi ứng dụng có thể đi qua cấu hình xử lý riêng, mỗi bên nhận được đúng dạng ảnh mình cần từ cùng một object gốc.

❌ Vì sao các phương án còn lại sai

A — AWS Step Functions. Đây là dịch vụ điều phối luồng công việc: nó ghép các bước và các dịch vụ AWS lại thành một state machine, xử lý rẽ nhánh, thử lại, chờ đợi. Nó có thể gọi một hàm xử lý ảnh trong một quy trình, nhưng bản thân nó không nằm trong đường trả dữ liệu của S3 và không can thiệp được vào nội dung object lúc ứng dụng đọc ra. Dùng Step Functions ở đây thì kết quả xử lý phải được ghi lại đâu đó — tức là vi phạm luôn ràng buộc "không lưu nhiều phiên bản".

C — AWS Lambda@Edge. Đây là phương án gần đúng nhất, và cũng là bẫy chính của câu này: nó cũng là "chạy Lambda để biến đổi nội dung", cũng "thời gian thực". Chỗ nó hỏng là điểm gắn vào: Lambda@Edge chạy tại các edge location để phản ứng với sự kiện của CloudFront, tức là nó thuộc về luồng phân phối qua CloudFront chứ không phải luồng truy xuất object của S3. Đề chỉ nói ứng dụng truy cập ảnh trong S3 bucket, không hề nhắc tới CloudFront hay việc phân phối tới người dùng cuối. Theo lời giải gốc, Lambda@Edge không phải là dịch vụ được thiết kế riêng cho việc biến đổi dữ liệu nằm trong S3 lúc lấy ra, khác với Object Lambda vốn tích hợp thẳng với S3 cho đúng mục đích đó.

D — Amazon Elastic Transcoder. Đây là dịch vụ transcode media, chuyên chuyển đổi tệp media từ định dạng gốc sang các định dạng khác để phát trên nhiều loại thiết bị. Dù nó có thể đổi kích thước, mô hình hoạt động của nó là xử lý theo lô: nhận việc, chuyển đổi, xuất ra tệp kết quả. Như vậy vừa không phải "on-the-fly during retrieval", vừa sinh ra thêm tệp — trái với yêu cầu chỉ giữ một bản gốc.

📌 Điểm cần nhớ

  • Thấy cụm "transform data while it is being retrieved from S3" hoặc "without storing multiple copies/versions" → nghĩ ngay tới S3 Object Lambda. Đó là dịch vụ duy nhất trong nhóm này chen được mã tuỳ biến vào giữa S3 và bên gọi GET.
  • Phân biệt S3 Object Lambda với Lambda@Edge bằng điểm gắn: Object Lambda gắn vào luồng đọc object của S3; Lambda@Edge gắn vào sự kiện của CloudFront tại edge. Đề không nhắc CloudFront thì Lambda@Edge thường là mồi nhử.
  • Phân biệt theo thời điểm xử lý: Object Lambda là lúc đọc (một bản gốc, biến thể sinh khi cần); Elastic Transcoder là xử lý trước, theo lô (sinh ra tệp kết quả cần lưu).
  • Step Functions là orchestration, không phải data plane. Nó điều phối "bước nào chạy trước, bước nào chạy sau", chứ không đứng trong đường truyền dữ liệu để sửa nội dung đang được trả về.
Câu 73 Domain 3: Data Operations and Support

A logistics company utilizes Amazon S3 to manage shipment tracking information. Each tracking update is stored as individual JSON files. The company requires a solution to efficiently process only the new or updated tracking records each hour and ensure they're reflected in their analytics platform.

Which AWS service should the data engineer implement to identify and process only the new or modified tracking records in a cost-effective manner?

  1. A

    Implement Amazon S3 Event Notifications to invoke a processing job in AWS Batch for newly modified files.

  2. B

    Use AWS Glue crawlers to detect schema changes in the S3 bucket and run ETL jobs for new or updated files.

  3. C

    Configure AWS DataSync to monitor and synchronize only the changed files to another S3 bucket for dedicated processing.

  4. D

    Configure AWS Lambda with S3 triggers to parse new and updated JSON files and process the changes hourly.

Xem giải thích

🧩 Phân tích nội dung câu hỏi

Một công ty logistics lưu thông tin theo dõi vận đơn trên Amazon S3, mỗi lần cập nhật là một file JSON riêng lẻ. Yêu cầu: mỗi giờ chỉ xử lý những bản ghi mới hoặc vừa thay đổi, rồi đẩy kết quả sang nền tảng phân tích. Câu hỏi hỏi thẳng: dùng dịch vụ AWS nào để nhận diện và xử lý riêng phần thay đổi một cách tiết kiệm chi phí.

Cụm từ quyết định nằm ở hai chỗ:

  • "identify and process only the new or modified records" — cần một cơ chế phát hiện thay đổi ở mức từng object trên S3, chứ không phải quét lại toàn bộ bucket.
  • "in a cost-effective manner" kết hợp với "each hour" và "individual JSON files" — tức là khối lượng file nhỏ nhưng nhiều, và việc xử lý gom theo lô sẽ rẻ hơn xử lý rời rạc từng file.

Hai ràng buộc này tách bạch rất rõ: phương án nào không phát hiện được thay đổi ở mức object thì loại ngay; phương án nào phát hiện được nhưng cách chạy tốn kém khi số file lớn thì kém hơn.

✅ Vì sao đáp án đúng là đúng

Đáp án A — S3 Event Notifications gọi job xử lý trong AWS Batch.

Amazon S3 Event Notifications sinh sự kiện ngay khi có object mới được ghi vào hoặc object cũ bị ghi đè. Đây chính là cơ chế native của S3 để trả lời câu hỏi "file nào vừa đổi" — không cần so sánh danh sách, không cần quét lại bucket, không cần giữ trạng thái ở nơi khác.

Sự kiện đó được dùng để kích hoạt một AWS Batch job làm phần xử lý thật. AWS Batch tự lo việc xếp hàng job, cấp phát tài nguyên tính toán và chạy job — hợp với dạng công việc chạy theo lô, định kỳ hằng giờ, mỗi lô có thể gồm nhiều file. So với việc bung một đơn vị xử lý riêng cho từng file nhỏ, cách gom lô này tiết kiệm hơn về chi phí và đơn giản hơn về vận hành, đúng hai tiêu chí mà đề đặt ra.

❌ Vì sao các phương án còn lại sai

B — AWS Glue crawlers phát hiện thay đổi schema rồi chạy ETL job. Sai ở đúng chỗ nó phát hiện cái gì. Glue crawler sinh ra để dò schema và ghi metadata vào Data Catalog, không phải để theo dõi từng file thay đổi. Đề cần biết "record nào mới", crawler lại trả lời "cấu trúc dữ liệu trông thế nào". Với dữ liệu cập nhật thường xuyên gồm nhiều file nhỏ, chạy crawler mỗi giờ vừa kém hiệu quả vừa tốn kém hơn mà vẫn không cho ra danh sách thay đổi cần xử lý.

C — AWS DataSync đồng bộ file đã thay đổi sang bucket khác. Đây là phương án dễ nhầm nhất vì DataSync thật sự có khả năng chỉ chuyển phần khác biệt. Nhưng nó là công cụ truyền dữ liệu giữa các hệ thống lưu trữ, không phải công cụ kích hoạt quy trình xử lý. Chép file sang bucket thứ hai mới xong nửa việc — vẫn phải có thứ khác đứng ra xử lý, và ta lại quay về câu hỏi ban đầu. Thêm một bước sao chép và một bản lưu trữ trùng lặp cũng đi ngược yêu cầu tiết kiệm chi phí.

D — AWS Lambda với S3 trigger, parse file JSON mới và thay đổi. Đây là phương án gần đúng nhất: nó dùng đúng cơ chế phát hiện thay đổi (S3 trigger), nên vế "identify" hoàn toàn ổn. Chỗ hỏng nằm ở vế "cost-effective" khi đặt cạnh bối cảnh đề bài: dữ liệu là rất nhiều file JSON nhỏ riêng lẻ, nên mô hình một invocation cho mỗi file sẽ nở ra thành lượng lớn lần gọi rời rạc, kéo theo chi phí cao hơn và việc quản lý function phức tạp hơn so với gom thành job lô. Đề còn nói rõ nhịp xử lý là theo giờ — nhịp gom lô, không phải nhịp phản ứng tức thời từng file, nên ưu thế "độ trễ thấp" của Lambda không được tính điểm ở đây.

📌 Điểm cần nhớ

  • S3 Event Notifications là câu trả lời mặc định cho "làm sao biết object nào vừa mới hoặc vừa đổi" — nó nằm sẵn trong S3, không cần quét lại bucket hay tự giữ trạng thái.
  • Tách bạch hai vế của câu hỏi: phát hiện thay đổi và xử lý thay đổi. S3 Event Notifications lo vế đầu; vế sau mới là chỗ chọn giữa Lambda và AWS Batch.
  • Lambda hợp với xử lý tức thời, sự kiện rời rạc; AWS Batch hợp với khối lượng gom theo lô, chạy định kỳ. Đề nhấn "hourly" + "many small files" + "cost-effective" là đang nghiêng về Batch.
  • Glue crawler = schema và metadata, không phải cơ chế theo dõi thay đổi dữ liệu. DataSync = di chuyển/đồng bộ dữ liệu, không phải cơ chế kích hoạt xử lý. Nhớ đúng vai trò của hai dịch vụ này sẽ loại được chúng rất nhanh ở nhiều câu khác.
Câu 74 Chọn nhiều đáp án Domain 2: Data Store Management

A retail organization is developing a business intelligence platform. They are utilizing Amazon S3 to store their sales data and Amazon Redshift for warehousing. To efficiently perform queries on their S3-stored data using Amazon Redshift Spectrum,

Which two of the following practices will yield the FASTEST query performance? (Select TWO.)

  1. A

    Choose file formats that allow for multi-threaded data processing.

  2. B

    Store the data using a columnar format like Parquet or ORC.

  3. C

    Partition the data in S3 based on frequently queried attributes such as date or product category.

  4. D

    Divide the data into numerous small files, each smaller than 128 KB.

  5. E

    Compress the data files using bzip2 to ensure they are between 1 GB and 5 GB after compression.

Xem giải thích

🧩 Phân tích nội dung câu hỏi

Đề mô tả một tổ chức bán lẻ: dữ liệu bán hàng nằm trên Amazon S3, kho dữ liệu là Amazon Redshift, và họ truy vấn thẳng dữ liệu trong S3 bằng Redshift Spectrum. Câu hỏi yêu cầu chọn HAI cách cho tốc độ truy vấn NHANH NHẤT.

Cụm từ quyết định nằm ở chỗ: "perform queries on their S3-stored data using Amazon Redshift Spectrum" và "FASTEST query performance". Với Spectrum, tốc độ truy vấn tỉ lệ thuận với lượng dữ liệu phải quét trên S3 — Spectrum đọc trực tiếp từ S3 chứ không nằm sẵn trong bộ nhớ của cluster. Vậy nên mọi phương án nào giảm được số byte phải đọc (đọc ít cột hơn, đọc ít file hơn) sẽ thắng, còn phương án chỉ nói chung chung về "xử lý song song" hay về nén thì không trực tiếp giải quyết vấn đề đó.

✅ Vì sao đáp án đúng là đúng

B — Lưu dữ liệu ở định dạng cột như Parquet hoặc ORC. Định dạng cột cho phép Spectrum chỉ đọc đúng những cột mà câu truy vấn cần, thay vì đọc trọn cả dòng. Một bảng bán hàng có vài chục cột mà truy vấn chỉ cần ngay, san_pham, doanh_thu thì lượng dữ liệu quét giảm rất mạnh. Ngoài ra Parquet/ORC lưu dữ liệu theo khối cùng kiểu nên nén tốt hơn và bản thân cấu trúc của chúng cho phép engine xử lý song song — đây chính là ý mà phương án A nói vòng vo mà không nêu tên được.

C — Phân vùng (partition) dữ liệu trên S3 theo thuộc tính hay truy vấn như ngày hoặc nhóm sản phẩm. Khi dữ liệu được phân vùng theo predicate thường dùng, Spectrum bỏ qua hẳn những partition không liên quan (partition pruning). Truy vấn doanh số một tháng chỉ chạm vào đúng các prefix của tháng đó, thay vì quét toàn bộ lịch sử. Đây là cách giảm dữ liệu quét theo chiều dòng, bổ sung cho B vốn giảm theo chiều cột — hai kỹ thuật khác nhau, dùng chung được, nên đúng là cặp mạnh nhất.

❌ Vì sao các phương án còn lại sai

A — Chọn định dạng file cho phép xử lý đa luồng. Đây là phương án gần đúng và dễ bẫy nhất, vì "đa luồng" nghe rất giống "nhanh". Chỗ nó hỏng: bản thân định dạng file không tạo ra khả năng đa luồng — việc chạy song song do engine truy vấn (ở đây là Spectrum) quyết định. Phát biểu này còn mơ hồ, không nêu được định dạng cụ thể nào, trong khi B đã nói thẳng Parquet/ORC — những định dạng vừa cho phép đọc song song vừa cắt được lượng dữ liệu quét. So với B, A là một cách nói yếu hơn của cùng ý tưởng.

D — Chia dữ liệu thành rất nhiều file nhỏ, mỗi file dưới 128 KB. Đây là điều ngược hẳn với khuyến nghị. Mỗi file đều kèm chi phí cố định (liệt kê, mở, đọc metadata); hàng chục nghìn file tí hon khiến phần chi phí quản lý lấn át phần đọc dữ liệu thật. Spectrum hoạt động hiệu quả với file có kích thước tương đối lớn, đồng đều. "Nhiều file" chỉ giúp khi mỗi file vẫn đủ lớn để một worker làm việc có ích.

E — Nén bằng bzip2 sao cho file nằm trong khoảng 1–5 GB sau khi nén. Phương án này gần đúng ở nửa đầu (nén giúp giảm byte đọc từ S3) nhưng hỏng ở lựa chọn thuật toán: bzip2 không splittable trong bối cảnh này, nghĩa là một file nén lớn phải được một tiến trình giải nén tuần tự, không chia nhỏ cho nhiều worker được. File càng lớn (1–5 GB) thì thiệt hại càng nặng — chính kích thước "hoành tráng" đó biến thành nút thắt cổ chai. Trong so sánh mà giải thích gốc đưa ra, gzip là lựa chọn thực dụng hơn bzip2 cho Spectrum. Ngoài ra, nếu đã dùng Parquet/ORC thì việc nén đã nằm sẵn bên trong định dạng, không cần bọc thêm một lớp nén bên ngoài.

📌 Điểm cần nhớ

  • Với Redshift Spectrum (và các engine đọc trực tiếp S3 nói chung), tối ưu tốc độ = giảm lượng dữ liệu phải quét. Cắt theo cột bằng Parquet/ORC, cắt theo dòng bằng partition — hai đòn bẩy độc lập, đề hỏi "chọn hai" thì thường là cặp này.
  • Partition phải đặt theo predicate hay dùng trong WHERE (ngày, khu vực, nhóm sản phẩm) thì mới có tác dụng bỏ qua partition; phân vùng theo cột không ai lọc thì chỉ tạo thêm file mà không nhanh hơn.
  • Cảnh giác với hai cực về kích thước file: quá nhiều file nhỏ làm chi phí trên mỗi file lấn át, còn file nén quá lớn ở định dạng không splittable thì không chia song song được. Cả hai đều là bẫy quen thuộc.
  • Phương án nói chung chung ("định dạng cho phép đa luồng") thường thua phương án nêu đích danh cơ chế và tên công nghệ ("Parquet hoặc ORC") — khi hai lựa chọn cùng hướng, hãy chọn cái cụ thể và kiểm chứng được.
Câu 75 Domain 2: Data Store Management

A financial services firm is experiencing rising costs associated with monthly data migrations from their on-premises Oracle database to AWS. They need a more economical method to transfer their extensive transaction records to an Amazon RDS for Oracle instance with minimal disruption to their ongoing operations.

What AWS service should the firm utilize to achieve a cost-efficient and low-downtime migration?

  1. A

    Configure an AWS Snowball job to handle the end-of-month data transfers.

  2. B

    Use AWS DataSync to schedule and automate the data transfer process.

  3. C

    Establish AWS Direct Connect for a dedicated network connection to AWS.

  4. D

    Implement AWS Database Migration Service (AWS DMS) to manage ongoing data migrations.

Xem giải thích

🧩 Phân tích nội dung câu hỏi

Đề mô tả một công ty tài chính đang chuyển dữ liệu hằng tháng từ Oracle database on-premises lên Amazon RDS for Oracle, và chi phí của việc đó đang tăng dần. Họ cần cách rẻ hơn để chuyển khối lượng lớn bản ghi giao dịch, đồng thời hạn chế tối đa gián đoạn cho hoạt động đang chạy.

Ba cụm từ quyết định đáp án:

  • "from their on-premises Oracle database … to an Amazon RDS for Oracle instance" — nguồn và đích đều là database, không phải file hay thư mục. Việc cần làm là migration ở tầng database (schema, bảng, transaction), chứ không phải copy khối byte.
  • "minimal disruption to their ongoing operations" — database nguồn vẫn đang chạy trong lúc chuyển, nên cần cơ chế replication liên tục, bắt được cả thay đổi phát sinh giữa chừng, chứ không phải một lần chụp rồi khoá.
  • "more economical" / "cost-efficient" — chỉ trả tiền cho đúng lúc chạy migration, không phải cam kết một hạ tầng cố định.

Khi đề nói "database → database" và "low downtime" cùng lúc, câu trả lời gần như luôn là dịch vụ migration chuyên cho database.

✅ Vì sao đáp án đúng là đúng

D — AWS Database Migration Service (AWS DMS) là dịch vụ sinh ra đúng cho bài toán này: chuyển database sang AWS một cách đơn giản và an toàn, hỗ trợ nhiều nền tảng database khác nhau, trong đó có Oracle làm nguồn và Amazon RDS for Oracle làm đích.

Điểm khớp quan trọng nhất là DMS hỗ trợ replication liên tục: database nguồn vẫn phục vụ nghiệp vụ bình thường trong khi dữ liệu được chuyển sang đích, nên downtime rút xuống mức tối thiểu — đúng yêu cầu "minimal disruption" của đề.

Về chi phí, DMS chỉ phát sinh chi phí trong khoảng thời gian migration thực sự chạy, hợp với đợt chuyển dữ liệu cuối tháng: chạy xong thì thôi, không phải nuôi một hạ tầng thường trực suốt tháng chỉ để dùng vài ngày.

❌ Vì sao các phương án còn lại sai

A — AWS Snowball cho các đợt chuyển cuối tháng. Snowball là giải pháp vận chuyển dữ liệu bằng thiết bị vật lý, dùng khi cần đưa khối lượng rất lớn vào/ra AWS. Nó không phù hợp với migration cần thay đổi tăng dần (incremental) một cách liên tục: mỗi tháng lại phải yêu cầu thiết bị, chép dữ liệu, gửi đi, chờ nhập — vòng lặp đó thêm rất nhiều phức tạp và, tệ hơn, tạo ra chính khoảng downtime mà công ty đang muốn tránh.

B — AWS DataSync. Đây là phương án gần đúng nhất và dễ chọn nhầm, vì DataSync đúng là công cụ chuyển dữ liệu on-premises lên AWS có lịch chạy tự động — nghe rất khớp với "monthly data migrations". Chỗ nó hỏng là đối tượng làm việc: DataSync chuyển dữ liệu giữa hệ thống lưu trữ và các dịch vụ lưu trữ của AWS, chứ không chuyên cho database migration. Nó không xử lý các việc đặc thù của database như chuyển đổi schema hay các tác vụ ở tầng database. Chuyển file dữ liệu không đồng nghĩa với việc có một RDS for Oracle chạy được ở đầu bên kia.

C — AWS Direct Connect. Direct Connect cung cấp đường mạng riêng từ on-premises tới AWS, và đúng là nó giúp giảm chi phí mạng khi truyền lượng dữ liệu lớn — nên nó chạm được vế "cost" của đề. Nhưng nó chỉ là đường truyền, không phải dịch vụ migration: bản thân nó không đọc database nguồn, không ghi vào RDS, không theo dõi thay đổi. Chọn C thì vẫn phải thêm một dịch vụ khác để thực sự làm việc chuyển dữ liệu, tức là chưa trả lời được câu hỏi.

📌 Điểm cần nhớ

  • Đề nói database → database kèm minimal downtime thì nghĩ ngay tới AWS DMS: nó là dịch vụ migration ở tầng database, có replication liên tục nên nguồn vẫn chạy trong lúc chuyển.
  • Phân biệt rõ ba nhóm dịch vụ dễ lẫn: DMS = migration database; DataSync = chuyển dữ liệu giữa storage on-premises và các dịch vụ lưu trữ AWS; Snowball = vận chuyển vật lý cho khối dữ liệu rất lớn.
  • Direct Connect là hạ tầng mạng, không phải công cụ migration. Khi một phương án chỉ mô tả đường truyền mà không mô tả việc di chuyển dữ liệu, nó gần như chắc chắn sai trong câu hỏi kiểu này.
  • Yêu cầu "low downtime" loại thẳng mọi phương án chỉ chụp-rồi-chép một lần; hãy tìm phương án bắt được cả thay đổi phát sinh trong lúc migration đang chạy.
Câu 76 Domain 1: Data Ingestion and Transformation

A company is integrating a business intelligence (BI) tool with their data warehouse hosted on Microsoft SQL Server. The BI team requires regular data extracts to be transformed and stored in Amazon S3 for further analysis. The BI team needs a solution to manage this ETL process efficiently and at a low cost.

Which AWS service or feature is the most cost-effective for orchestrating an ETL pipeline that extracts data from Microsoft SQL Server, transforms it, and loads it into Amazon S3?

  1. A

    AWS Data Pipeline

  2. B

    AWS Batch

  3. C

    AWS Glue workflows

  4. D

    AWS Glue DataBrew

Xem giải thích

🧩 Phân tích nội dung câu hỏi

Đề mô tả một công ty có data warehouse chạy trên Microsoft SQL Server, đội BI cần trích xuất dữ liệu định kỳ, biến đổi rồi lưu vào Amazon S3 để phân tích tiếp.

Câu hỏi chốt lại rất rõ: "Which AWS service or feature is the most cost-effective for orchestrating an ETL pipeline that extracts data from Microsoft SQL Server, transforms it, and loads it into Amazon S3?"

Hai cụm từ quyết định đáp án:

  • "orchestrating an ETL pipeline" — đề không hỏi cái gì chạy phép biến đổi, mà hỏi cái gì điều phối cả chuỗi extract → transform → load thành một luồng có thứ tự, có phụ thuộc, chạy lặp lại được.
  • "most cost-effective" — nghiêng hẳn về dịch vụ serverless, chỉ trả tiền cho thời gian job thực sự chạy, không phải nuôi hạ tầng nằm chờ.

Ghép hai ràng buộc lại: cần một feature điều phối nằm sẵn trong một dịch vụ ETL serverless. Đó chính là thứ phân biệt các phương án bên dưới — chúng đều "làm được ETL" theo nghĩa nào đó, nhưng chỉ một cái đúng vai trò orchestration.

✅ Vì sao đáp án đúng là đúng

Đáp án đúng theo tệp là C — AWS Glue workflows.

AWS Glue là dịch vụ tích hợp dữ liệu serverless dùng để khám phá, chuẩn bị và kết hợp dữ liệu cho analytics và machine learning. Glue workflows là thành phần cho phép tạo và điều phối các ETL job: một workflow gom nhiều crawler và job lại thành một đơn vị chạy có thứ tự, có phụ thuộc giữa các bước, và theo dõi được toàn bộ luồng như một thực thể duy nhất.

Áp vào đề bài: Glue kết nối tới Microsoft SQL Server để extract, chạy phép transform bằng built-in transform hoặc code tự viết, rồi load kết quả vào Amazon S3 — đúng ba giai đoạn đề nêu, và workflow là lớp gắn chúng lại thành pipeline.

Về chi phí: vì Glue là serverless, không phải cấp phát và duy trì cluster, bạn chỉ trả cho tài nguyên tính toán tiêu thụ trong lúc job chạy. Với nhu cầu "regular data extracts" — chạy theo lịch rồi nghỉ — mô hình trả theo mức dùng này là lựa chọn tiết kiệm nhất trong bốn phương án.

❌ Vì sao các phương án còn lại sai

A — AWS Data Pipeline. Đây là phương án gần đúng nhất, vì Data Pipeline đúng là dịch vụ điều phối di chuyển và xử lý dữ liệu theo lịch giữa các dịch vụ compute/storage của AWS và cả nguồn on-premises. Nhưng nó hỏng ở hai chỗ so với yêu cầu của đề: nó không tích hợp chặt với năng lực ETL hiện đại của AWS Glue, và với các phép biến đổi phức tạp hay nhiều định dạng dữ liệu khác nhau thì nó không tiết kiệm bằng Glue workflows. Ràng buộc "most cost-effective" chính là chỗ loại nó.

B — AWS Batch. Dịch vụ này để chạy hàng loạt batch computing job trên AWS. Về lý thuyết bạn có thể nhét job ETL vào Batch để chạy, nhưng vai trò của nó là thực thi khối lượng công việc batch, không phải điều phối riêng một luồng ETL — đúng thứ mà đề nhấn mạnh. Ngoài ra, so với Glue workflows thì nó cũng không phải lựa chọn tiết kiệm hơn cho tác vụ ETL này.

D — AWS Glue DataBrew. Bẫy ở đây là hai chữ "Glue" trùng với đáp án đúng. DataBrew là công cụ chuẩn bị dữ liệu trực quan, giúp data analyst và data scientist làm sạch và chuẩn hoá dữ liệu mà không cần viết code. Nó tập trung vào khâu data preparation trong ETL, chứ không phải khâu orchestration của cả workflow — mà orchestration mới là điều đề hỏi. Chọn D là chọn đúng họ dịch vụ nhưng sai thành phần.

📌 Điểm cần nhớ

  • Đọc kỹ động từ trong câu hỏi: "orchestrate" (điều phối luồng) khác hẳn "run" (thực thi) và "prepare/clean" (chuẩn bị dữ liệu). Cùng một họ dịch vụ vẫn có thành phần sai vai trò — Glue workflows để điều phối, Glue DataBrew để chuẩn bị dữ liệu không cần code.
  • Khi đề gắn thêm "most cost-effective" cho tác vụ chạy theo lịch rồi nghỉ, hãy ưu tiên phương án serverless — chỉ trả cho tài nguyên tiêu thụ lúc job chạy, không nuôi hạ tầng nhàn rỗi.
  • "Có thể làm được" không đồng nghĩa với "được thiết kế cho việc đó". AWS Batch chạy được job ETL, AWS Data Pipeline điều phối được ETL — nhưng phương án đúng là cái khớp cả mục đích thiết kế lẫn ràng buộc chi phí trong đề.
  • Với luồng extract từ nguồn ngoài (như Microsoft SQL Server) → transform → load vào Amazon S3, AWS Glue phủ trọn cả ba giai đoạn, còn workflow là lớp gắn các job và crawler thành một pipeline có thứ tự và theo dõi được.
Câu 77 Domain 2: Data Store Management

A news website tracks user interactions and search queries to gain insights into reader preferences and content engagement. The website needs to process and analyze this data in real-time to quickly adapt their content strategy. The solution must support complex search capabilities and real-time analytics.

Which AWS service should the website use to store and analyze the user interaction data for real-time search and analytics?

  1. A

    Store the interaction data in Amazon DynamoDB and use Amazon Elasticsearch Service for complex search and real-time analytics.

  2. B

    Use Amazon RDS to capture user interaction data and Amazon QuickSight for real-time analytics and search capabilities.

  3. C

    Implement Amazon Kinesis Data Streams to collect data and Amazon Redshift for real-time search and analytics.

  4. D

    Capture user data in Amazon S3 and use Amazon Athena for real-time analytics and search functionalities.

Xem giải thích

🧩 Phân tích nội dung câu hỏi

Đề mô tả một trang tin tức theo dõi user interactions và search queries của độc giả, cần xử lý và phân tích dữ liệu đó theo thời gian thực để điều chỉnh chiến lược nội dung. Câu hỏi cuối cùng: nên dùng dịch vụ AWS nào để lưu trữ và phân tích dữ liệu này phục vụ real-time search and analytics.

Cụm từ quyết định là "support complex search capabilities and real-time analytics" — hai yêu cầu phải thoả đồng thời. Đây chính là chỗ phân biệt bốn phương án: cả bốn đều có một kho lưu trữ hợp lý ghép với một công cụ phân tích, nhưng chỉ một phương án có công cụ vừa làm search engine (tìm kiếm toàn văn, xếp hạng độ liên quan, truy vấn phức tạp trên văn bản) vừa trả kết quả gần như tức thì sau khi dữ liệu được ghi vào. Khi đề nhấn chữ search bên cạnh chữ analytics, nó đang loại bỏ mọi công cụ chỉ biết truy vấn/BI mà không phải công cụ tìm kiếm.

✅ Vì sao đáp án đúng là đúng

A — Amazon DynamoDB + Amazon Elasticsearch Service là đáp án đúng theo tệp.

  • Amazon Elasticsearch Service (nay là Amazon OpenSearch Service) là dịch vụ được quản lý hoàn toàn để triển khai, vận hành và mở rộng Elasticsearch — một search and analytics engine mã nguồn mở. Nó được thiết kế đúng cho tình huống cần tìm kiếm phức tạp kết hợp phân tích thời gian thực, ví dụ phân tích chuỗi tương tác và truy vấn tìm kiếm của độc giả. Dữ liệu ghi vào được lập chỉ mục và trở nên truy vấn được gần như ngay lập tức, nên dashboard nội dung phản ánh hành vi đang diễn ra chứ không phải hành vi của hôm qua.
  • DynamoDB đóng vai kho lưu dữ liệu thô: NoSQL, mở rộng tốt, ghi nhanh với lượng sự kiện lớn và không đều — đúng dạng tải của một trang tin. Dữ liệu trong DynamoDB sau đó được đưa sang Elasticsearch để phục vụ phần tìm kiếm và phân tích.

Nói gọn: mỗi dịch vụ làm đúng việc của nó — DynamoDB lo lưu trữ ở quy mô lớn, Elasticsearch Service lo search + real-time analytics. Đó là lý do cặp này khớp trọn vẹn cả hai yêu cầu trong đề.

❌ Vì sao các phương án còn lại sai

B — Amazon RDS + Amazon QuickSight. RDS là cơ sở dữ liệu quan hệ, hợp với dữ liệu có cấu trúc và các giao dịch thông thường, nhưng không được tối ưu cho tìm kiếm và phân tích thời gian thực ở quy mô dữ liệu tương tác của một trang tin. QuickSight là công cụ business intelligence — nó vẽ dashboard và biểu đồ, chứ không phải một search engine; nó không cung cấp năng lực tìm kiếm phức tạp mà đề đòi hỏi. Phương án này hỏng ở cả hai vế.

C — Amazon Kinesis Data Streams + Amazon Redshift. Đây là phương án gần đúng nhất và dễ chọn nhầm: Kinesis Data Streams thật sự là lựa chọn tốt để thu thập dữ liệu theo thời gian thực. Chỗ hỏng nằm ở vế sau. Redshift là data warehouse, mạnh ở phân tích quy mô lớn theo lô (batch analytics) trên dữ liệu có cấu trúc, chứ không hướng tới tìm kiếm và phân tích tức thời. Chọn C nghĩa là giải quyết được khâu thu thập nhưng bỏ trống đúng cái yêu cầu mà đề nhấn mạnh — complex search.

D — Amazon S3 + Amazon Athena. S3 lưu được khối lượng dữ liệu rất lớn với chi phí thấp, và Athena truy vấn trực tiếp trên đó bằng SQL — một cặp rất tốt cho ad-hoc querying và phân tích dữ liệu nói chung. Nhưng Athena thiên về truy vấn tuỳ hứng trên dữ liệu đã nằm sẵn, không cung cấp năng lực tìm kiếm tinh vi và phân tích thời gian thực như Elasticsearch. Phương án này hỏng ở chữ "real-time" lẫn chữ "search".

📌 Điểm cần nhớ

  • Thấy "complex search" hoặc "full-text search" đi kèm "real-time analytics" trong đề AWS → nghĩ ngay tới Amazon Elasticsearch Service / OpenSearch Service. Đây gần như là chữ ký nhận dạng của dịch vụ này.
  • Phân biệt rạch ròi vai trò: Redshift = data warehouse (phân tích lớn, thiên về batch), Athena = truy vấn ad-hoc trên S3, QuickSight = BI/dashboard. Không cái nào trong ba cái đó là search engine, dù cả ba đều "phân tích được dữ liệu".
  • Đề dạng này thường ghép kho lưu trữ + công cụ phân tích. Hãy chấm điểm từng vế riêng: một phương án có vế đầu rất hợp lý (như Kinesis Data Streams ở C) vẫn sai nếu vế sau lệch yêu cầu.
  • DynamoDB là lựa chọn quen thuộc cho việc ghi sự kiện tương tác ở quy mô lớn với độ trễ thấp; nó thường xuất hiện ở vai "kho lưu dữ liệu thô" rồi được đẩy sang một công cụ chuyên biệt để truy vấn phức tạp.
Câu 78 Domain 4: Data Security and Governance

A data scientist is setting up a new machine learning project in Amazon SageMaker and plans to use AWS Glue for data preprocessing tasks. However, when attempting to launch a data preprocessing job from SageMaker, the scientist encounters a permission error.

What action should the data scientist take to resolve this issue and successfully run AWS Glue jobs from Amazon SageMaker?

  1. A

    Ensure the data scientist's IAM role has the appropriate Glue permissions and a trust relationship with SageMaker.

  2. B

    Assign the AWSGlueServiceNotebookRole managed policy to the data scientist's IAM user.

  3. C

    Update the trust policy in the data scientist's IAM role to include the AWS Glue service principal.

  4. D

    Attach the AmazonSageMakerFullAccess policy to the data scientist's IAM role.

Xem giải thích

🧩 Phân tích nội dung câu hỏi

Tình huống: một data scientist làm việc trong Amazon SageMaker và muốn khởi chạy job tiền xử lý dữ liệu bằng AWS Glue. Khi bấm chạy thì gặp lỗi permission. Đề hỏi: cần làm gì để chạy được Glue job từ SageMaker?

Cụm từ quyết định đáp án là "launch a data preprocessing job from SageMaker" — tức là chiều gọi đi từ SageMaker sang Glue, chứ không phải Glue gọi ngược lại. Một chi tiết nữa cũng đáng chú ý: đề mô tả lỗi là permission error, không nói rõ thiếu quyền gì, nên lời giải phải phủ được cả hai mặt của một IAM role:

  • Permissions policy — role được phép làm gì (ở đây là các action của Glue).
  • Trust policy (trust relationship) — service nào được phép assume role đó (ở đây là SageMaker).

Bốn phương án cố tình chỉ đưa một nửa cấu hình, hoặc đưa đúng nửa nhưng sai chiều. Nhận ra "role cần đủ cả hai nửa, và trust phải thuộc về service đang chạy" là chìa khoá.

✅ Vì sao đáp án đúng là đúng

A. Ensure the data scientist's IAM role has the appropriate Glue permissions and a trust relationship with SageMaker.

Đây là phương án duy nhất mô tả đầy đủ cả hai mặt và đúng chiều:

  • Quyền Glue trong permissions policy: SageMaker sẽ gọi API của Glue để tạo và chạy job, nên role phải được cấp các action tương ứng của Glue. Thiếu phần này thì dù assume được role vẫn nhận access denied ngay khi gọi Glue.
  • Trust relationship với SageMaker: SageMaker là service thực thi notebook/job, nó phải assume được role này để hành động thay mặt người dùng. Trust policy chính là nơi khai báo điều đó. Thiếu phần này thì việc gán bao nhiêu quyền Glue cũng vô nghĩa, vì SageMaker không lấy được role.

Nói ngắn gọn: quyền cho biết được làm gì, trust cho biết ai được cầm role. Lỗi permission trong kịch bản tích hợp giữa hai service thường nằm ở việc chỉ làm một trong hai.

❌ Vì sao các phương án còn lại sai

B. Assign the AWSGlueServiceNotebookRole managed policy to the data scientist's IAM user.

Managed policy này gắn với ngữ cảnh notebook của chính AWS Glue, cấp cho Glue quyền truy cập các tài nguyên phục vụ thao tác notebook. Nhưng ở đây môi trường chạy là SageMaker, không phải Glue notebook. Ngoài ra phương án gán policy vào IAM user thay vì vào role mà SageMaker assume — mà SageMaker chạy job bằng role thực thi, không dùng quyền cá nhân của user. Sai cả về policy chọn lẫn về đối tượng gán.

C. Update the trust policy in the data scientist's IAM role to include the AWS Glue service principal.

Đây là phương án gần đúng nhất, vì nó có đụng tới trust policy — đúng chỗ. Nhưng nó đảo ngược chiều gọi: đưa service principal của Glue vào trust nghĩa là cho phép Glue assume role đó. Trong đề, service cần assume role là SageMaker, vì SageMaker mới là bên khởi chạy. Hơn nữa, phương án này chỉ sửa trust mà không nói gì tới quyền Glue trong permissions policy, nên kể cả nếu chiều có đúng thì vẫn thiếu một nửa. Hai lỗi cộng lại: sai principal, và không đủ.

D. Attach the AmazonSageMakerFullAccess policy to the data scientist's IAM role.

Policy này mở rộng quyền trong phạm vi SageMaker, mà vấn đề của đề nằm ở việc gọi sang Glue. Thêm quyền SageMaker không cấp thêm action nào của Glue, cũng không đụng gì tới trust relationship. Đây là kiểu đáp án "cứ gán policy to nhất cho chắc" — vừa không giải quyết đúng nguyên nhân, vừa đi ngược nguyên tắc least privilege.

📌 Điểm cần nhớ

  • Một IAM role có hai mặt: permissions policy (được làm gì) và trust policy (ai được assume). Lỗi permission trong tích hợp giữa hai service rất hay là do chỉ cấu hình một mặt.
  • Xác định chiều gọi trước khi chọn service principal cho trust policy: service nào đang chạy code mới là service cần được trust. Ở đây SageMaker gọi Glue, nên principal là SageMaker.
  • Managed policy phải khớp ngữ cảnh chạy. Một policy tên có chữ "Glue" không tự động phù hợp khi môi trường thực thi là SageMaker — đọc kỹ policy đó phục vụ luồng nào.
  • Gán quyền vào role thực thi, không gán vào IAM user, khi tác vụ do một AWS service chạy thay mặt người dùng.
  • Gán một policy FullAccess rộng hơn không phải cách sửa access denied nếu quyền thiếu thuộc về service khác; nó chỉ mở rộng đúng phạm vi mà policy đó bao phủ.
Câu 79 Domain 2: Data Store Management

A data engineering team needs to manage and query a continuously evolving dataset of customer transactions stored in Amazon S3. They use Amazon Athena for querying and require an automated solution to handle schema changes in the dataset.

What AWS service should the team use to efficiently manage the schema and ensure seamless integration with Athena for updated data queries?

  1. A

    Configure Amazon Redshift Spectrum to manage schema changes.

  2. B

    Use AWS Glue Data Catalog for schema management and metadata storage.

  3. C

    Apply Amazon RDS for automated database management and schema updates.

  4. D

    Implement AWS Data Pipeline for automated data transfer and schema updates.

Xem giải thích

🧩 Phân tích nội dung câu hỏi

Đề mô tả một tập dữ liệu giao dịch khách hàng liên tục thay đổi, nằm trên Amazon S3, và đội ngũ đang truy vấn bằng Amazon Athena. Câu hỏi yêu cầu chọn dịch vụ để quản lý schema một cách tự động và tích hợp liền mạch với Athena.

Ba cụm từ trong đề quyết định đáp án:

  • "stored in Amazon S3" — dữ liệu nằm ở object storage, không phải trong một database engine. Mọi phương án dựa trên database quản lý (RDS) lập tức lệch bối cảnh.
  • "use Amazon Athena for querying" — Athena không tự giữ schema của riêng nó; nó đọc metadata từ một catalog bên ngoài. Vậy câu hỏi thực chất là: catalog đó là gì?
  • "automated solution to handle schema changes" — cần thứ tự phát hiện được thay đổi cấu trúc dữ liệu và cập nhật metadata, chứ không phải thứ chỉ di chuyển dữ liệu.

Ghép ba ràng buộc: cần một metadata repository dùng chung với Athena, cập nhật schema tự động.

✅ Vì sao đáp án đúng là đúng

B — AWS Glue Data Catalog for schema management and metadata storage.

Glue Data Catalog là kho metadata tập trung, được quản lý hoàn toàn và tương thích trực tiếp với Athena — Athena dùng chính catalog này làm nơi tra cứu định nghĩa bảng, cột, kiểu dữ liệu và partition cho dữ liệu trên S3. Đây là điểm mấu chốt: giữa Athena và S3 luôn phải có một lớp metadata, và trong hệ sinh thái AWS thì lớp đó chính là Glue Data Catalog.

Về phần "tự động xử lý schema thay đổi": khi dữ liệu trên S3 biến động, Glue Crawler quét lại dữ liệu và cập nhật schema trong Data Catalog. Schema mới lập tức có sẵn cho Athena, nên truy vấn đọc được dữ liệu mới nhất mà không cần ai sửa định nghĩa bảng bằng tay.

Kết quả là Data Catalog đóng vai trò single source of truth cho metadata — đúng thứ mà một tập dữ liệu "continuously evolving" cần.

❌ Vì sao các phương án còn lại sai

A — Amazon Redshift Spectrum để quản lý schema thay đổi. Đây là phương án gần đúng nhất, vì Redshift Spectrum đúng là chạy được SQL trực tiếp trên dữ liệu ở S3, nghe rất giống bối cảnh đề bài. Nhưng nó hỏng ở hai chỗ: thứ nhất, Spectrum là một tính năng nằm bên trong Amazon Redshift, không phải dịch vụ quản lý schema độc lập — muốn dùng thì phải có cluster Redshift, trong khi đề chỉ nói tới Athena. Thứ hai, bản thân Spectrum không phải công cụ phát hiện và cập nhật schema tự động; nó là engine truy vấn, và metadata cho bảng ngoài của nó cũng lấy từ một catalog chứ không tự sinh ra. Chọn A là nhầm lẫn giữa nơi chạy truy vấn và nơi giữ schema.

C — Amazon RDS. RDS là dịch vụ quản lý cơ sở dữ liệu quan hệ: nó chạy database engine, giữ dữ liệu trong storage của chính nó. Nó không quản lý schema cho dữ liệu nằm trên S3, và cũng không phải nguồn metadata mà Athena đọc. Muốn dùng RDS thì phải nạp dữ liệu vào RDS trước — trái hẳn với kiến trúc "query in place trên S3" mà đề đang mô tả. Từ khoá "automated database management" trong phương án nghe hợp tai nhưng nói về việc quản trị database, không phải quản lý schema của data lake.

D — AWS Data Pipeline. Data Pipeline là dịch vụ điều phối việc di chuyển và biến đổi dữ liệu giữa các nơi lưu trữ. Nó có thể là một mắt xích trong đường ống dữ liệu, nhưng không chuyên về quản lý schema và không tích hợp trực tiếp với Athena như một nguồn metadata. Cụm "schema updates" trong phương án là mồi nhử: chuyển dữ liệu từ A sang B không đồng nghĩa với việc Athena biết cấu trúc mới của dữ liệu đó. Phương án này giải quyết "dữ liệu đi đâu", còn đề hỏi "Athena hiểu dữ liệu thế nào".

📌 Điểm cần nhớ

  • Hễ đề nhắc Athena + dữ liệu trên S3 + schema/metadata, đáp án gần như luôn là AWS Glue Data Catalog — Athena không tự giữ schema, nó đọc từ catalog.
  • Phân biệt rõ Data Catalog (nơi giữ metadata) và Glue Crawler (thứ quét dữ liệu để cập nhật metadata vào catalog). Cặp này mới tạo thành giải pháp "tự động theo kịp schema thay đổi".
  • Redshift Spectrum là tính năng của Redshift, không phải dịch vụ metadata. Đề nào chỉ nói tới Athena mà phương án lôi Spectrum vào thì thường là bẫy "cũng query được S3".
  • Đọc kỹ động từ chính của phương án: "data transfer" (Data Pipeline) và "database management" (RDS) là việc khác hẳn với "schema/metadata management" mà đề đang yêu cầu.
Câu 80 Domain 2: Data Store Management

A data engineer is developing an AWS Step Functions workflow to manage a batch image processing task. Each image in a large dataset requires an individual enhancement algorithm to be applied. The workflow needs to handle these tasks concurrently to optimize processing time.

Which state in AWS Step Functions should the data engineer use to ensure simultaneous processing of multiple images?

  1. A

    Use the Parallel state to run image processing tasks concurrently.

  2. B

    Use the Choice state to direct each image to its specific processing task.

  3. C

    Use the Wait state to manage the sequencing of the image processing tasks.

  4. D

    Use the Map state to apply the enhancement algorithm to each image individually, yet concurrently.

Xem giải thích

🧩 Phân tích nội dung câu hỏi

Đề mô tả một workflow AWS Step Functions xử lý ảnh theo lô: có một tập dữ liệu lớn gồm nhiều ảnh, và mỗi ảnh cần áp dụng cùng một thuật toán enhancement. Yêu cầu là chạy đồng thời để rút ngắn thời gian xử lý. Câu hỏi chốt lại: nên dùng state nào của Step Functions?

Cụm từ quyết định đáp án nằm ở chỗ "Each image in a large dataset requires an individual enhancement algorithm to be applied" kết hợp với "handle these tasks concurrently". Hai vế này phải đọc chung với nhau:

  • "each image in a large dataset" → công việc lặp trên một tập phần tử (collection), số lượng phần tử không cố định và biết được lúc chạy chứ không lúc thiết kế.
  • "concurrently" → cần song song, không phải tuần tự.

Chính vế "lặp trên collection" mới là ràng buộc phân biệt, vì trong Step Functions có hai state chạy song song được — Parallel và Map — và cả hai đều thoả chữ "concurrently". Cái tách chúng ra là: song song các nhánh khác nhau đã định nghĩa sẵn, hay song song cùng một nhánh trên nhiều phần tử dữ liệu.

✅ Vì sao đáp án đúng là đúng

Đáp án đúng theo tệp là D — Use the Map state.

Map state trong Amazon States Language sinh ra để làm đúng việc này: nhận một mảng đầu vào, rồi chạy cùng một nhánh xử lý (iterator/item processor) cho từng phần tử của mảng, và các lần lặp đó chạy song song với nhau. Số lần lặp do dữ liệu quyết định lúc chạy — có 100 ảnh thì 100 lần lặp, có 10.000 ảnh thì 10.000 — mà bản định nghĩa state machine không phải đổi một dòng nào.

Áp vào tình huống của đề: kỹ sư dữ liệu chỉ cần định nghĩa một Task áp thuật toán enhancement cho một ảnh, đặt nó bên trong Map state, rồi truyền danh sách ảnh vào. Step Functions tự lo phần trải công việc ra chạy đồng thời, tự gom kết quả từng nhánh về, và cho phép giới hạn mức đồng thời khi cần. Không phải tự viết logic điều phối, không phải nhân bản thủ công một nhánh cho mỗi ảnh.

Nói gọn: cùng một logic × nhiều phần tử dữ liệu × chạy song song = Map.

❌ Vì sao các phương án còn lại sai

A. Parallel state — đây là phương án gần đúng nhất và là cái bẫy chính của câu hỏi. Parallel state thật sự chạy song song, nên nếu chỉ đọc chữ "concurrently" thì nó có vẻ hợp lệ. Chỗ nó hỏng là ở cái gì được chạy song song: Parallel dùng để chạy đồng thời nhiều nhánh (branches) khác nhau, được viết cứng trong định nghĩa state machine. Số nhánh là cố định lúc thiết kế, và mỗi nhánh thường làm một việc khác nhau (ví dụ: vừa resize ảnh, vừa trích metadata, vừa quét nội dung). Còn ở đây các công việc giống hệt nhau, chỉ khác dữ liệu đầu vào, và số lượng thì phụ thuộc kích thước dataset. Dùng Parallel nghĩa là phải khai báo sẵn một nhánh cho mỗi ảnh — bất khả thi với "a large dataset" và phải sửa workflow mỗi lần số ảnh đổi. Đúng công cụ, sai bài toán.

B. Choice state — Choice là state rẽ nhánh theo điều kiện: xét dữ liệu đầu vào rồi quyết định đi tiếp sang state nào. Nó thuần tuý là logic điều khiển luồng, không tạo ra bất kỳ mức đồng thời nào — chỉ chọn đúng một đường đi. Chữ "direct each image to its specific processing task" trong phương án cũng lệch với đề: đề nói mọi ảnh dùng cùng một thuật toán enhancement, không hề có chuyện mỗi ảnh cần một loại xử lý riêng phải phân loại.

C. Wait state — Wait chỉ để tạm dừng workflow một khoảng thời gian hoặc tới một mốc thời gian. Nó không xử lý gì và không chạy song song gì. Phương án còn tự mô tả là "manage the sequencing", tức là tuần tự hoá — đi ngược hẳn yêu cầu tối ưu thời gian xử lý của đề. Thêm Wait vào chỉ làm workflow chậm đi.

📌 Điểm cần nhớ

  • Map vs Parallel là cặp đối chiếu kinh điển của Step Functions: Map = cùng một logic, nhiều phần tử dữ liệu, số lần lặp do dữ liệu quyết định lúc chạy; Parallel = nhiều nhánh khác nhau, số nhánh cố định trong định nghĩa state machine.
  • Khi đề xuất hiện các cụm như "for each item", "each record/file/image in a dataset", "large dataset", "collection" → nghiêng mạnh về Map, kể cả khi phương án Parallel cũng nhắc tới "concurrently".
  • Choice = rẽ nhánh theo điều kiện, Wait = trì hoãn theo thời gian. Cả hai đều là state điều khiển luồng, không phải cơ chế song song hoá — thấy đề hỏi về concurrency thì loại ngay.
  • Cẩn thận với phương án chứa đúng từ khoá của đề ("concurrently") nhưng sai về cơ chế. Trong Step Functions, hãy hỏi thêm một câu: song song trên nhiều nhánh khác nhau, hay song song trên nhiều phần tử dữ liệu? — câu trả lời đó mới chọn được state.