Ngân hàng đề — AWS Certified CloudOps Engineer Associate
Tìm thấy 585 câu.
While checking different deployment options, a development team has realized that there is a significant increase in latency when data on a new EBS volume (created from a snapshot) is accessed for the first time. This seems to be the general behavior of all the EBS volumes used by Amazon EC2 instances for different applications.
What should the team do to reduce the latency and increase the performance of EBS volumes before moving them to production?
-
A
Use an Amazon EBS–optimized instance
-
B
Use RAID 0 to maximize utilization of instance resources
-
C
Increase read-ahead for high-throughput, read-heavy workloads on st1 and sc1
-
D
Initialize the EBS volume or pre-warm it before moving the volumes to production
Xem giải thích
🧩 Phân tích nội dung câu hỏi
Đề mô tả một hiện tượng rất cụ thể: độ trễ tăng đáng kể khi truy cập lần đầu vào dữ liệu trên một EBS volume mới được tạo từ snapshot. Đây không phải câu hỏi chung chung về "làm sao cho EBS nhanh hơn", mà là câu hỏi về một hành vi đã biết của EBS.
Hai cụm từ quyết định đáp án:
- "created from a snapshot" — volume có nguồn gốc từ snapshot, tức dữ liệu nằm trên Amazon S3 chứ chưa nằm sẵn trên volume.
- "accessed for the first time" — chỉ chậm ở lần chạm đầu tiên vào mỗi block; các lần sau thì bình thường.
Ghép hai cụm này lại, ta có đúng định nghĩa của hiện tượng lazy loading: EBS volume tạo từ snapshot được dùng ngay lập tức, nhưng block nào chưa được đọc thì chưa được kéo về từ S3. Lần đọc đầu tiên vào một block phải chờ nạp, nên phát sinh độ trễ. Câu hỏi hỏi làm gì trước khi đưa lên production — nghĩa là cần một bước chuẩn bị một lần, chứ không phải một thay đổi kiến trúc lâu dài.
✅ Vì sao đáp án đúng là đúng
D — Initialize the EBS volume or pre-warm it before moving the volumes to production.
Cách xử lý trực tiếp hiện tượng lazy loading là chủ động đọc qua toàn bộ block của volume trước khi đưa vào phục vụ. Thao tác này gọi là initialization (tên cũ là pre-warming). Sau khi mọi block đã được chạm tới một lần, dữ liệu đã có mặt trên volume và các lần đọc sau đạt đúng hiệu năng đã cấp phát — không còn "hình phạt" của lần đọc đầu.
Ngoài ra, như phần giải thích gốc nêu, có thể bật fast snapshot restore trên chính snapshot đó để mọi volume tạo ra từ nó được khởi tạo đầy đủ ngay lúc tạo và cho hiệu năng tối đa tức thì. Cả hai đều thuộc cùng một ý: giải quyết vấn đề initialization, đúng bản chất vấn đề mà đề mô tả.
❌ Vì sao các phương án còn lại sai
Điểm chung của ba phương án còn lại: chúng đều là kỹ thuật hợp lệ để tăng hiệu năng EBS, nên trông rất hợp lý. Nhưng không cái nào chạm tới nguyên nhân "chậm ở lần đọc đầu tiên trên volume tạo từ snapshot".
-
A — Use an Amazon EBS–optimized instance. EBS-optimized instance cung cấp băng thông riêng, dành riêng cho lưu lượng EBS I/O, giảm tranh chấp giữa I/O của EBS và các lưu lượng khác của instance. Nó cải thiện hiệu năng ở mức kênh truyền giữa instance và volume. Nhưng độ trễ trong đề đến từ việc block chưa được nạp về từ snapshot, không phải từ nghẽn băng thông — có kênh riêng rộng hơn thì lần đọc đầu vẫn phải chờ nạp block.
-
B — Use RAID 0 to maximize utilization of instance resources. RAID 0 gộp nhiều volume để tận dụng băng thông của những instance type có thể đẩy I/O cao hơn mức một volume đơn cấp được. Đây là cách tăng throughput tổng. Vấn đề: nếu các volume thành viên đều tạo từ snapshot thì mỗi volume trong dàn RAID vẫn mang nguyên hiện tượng lazy loading. Gộp nhiều volume chưa được initialize lại với nhau không xoá được độ trễ lần đọc đầu.
-
C — Increase read-ahead for high-throughput, read-heavy workloads on st1 and sc1. Đây là phương án gần đúng nhất và cũng là bẫy rõ nhất, vì nó nói đúng ngôn ngữ "giảm latency, tăng performance". Nhưng nó hỏng ở hai chỗ. Thứ nhất, phạm vi áp dụng: read-ahead là thiết lập ở mức block device của hệ điều hành, AWS khuyến nghị riêng cho HDD volume (st1 và sc1) với workload đọc nhiều đi qua page cache — trong khi đề nói hiện tượng xảy ra với tất cả các EBS volume của nhiều ứng dụng khác nhau, không giới hạn ở HDD. Thứ hai, cơ chế: read-ahead giúp đọc trước các block liền kề cho truy cập tuần tự, nó không giải quyết việc block chưa tồn tại trên volume và phải kéo từ snapshot về.
📌 Điểm cần nhớ
- EBS volume tạo từ snapshot dùng được ngay nhưng nạp dữ liệu theo kiểu lazy loading: mỗi block chỉ được kéo từ S3 về khi bị chạm lần đầu, nên lần đọc đầu tiên chậm hơn hẳn.
- Thấy đề có chữ "first access" + "volume created from snapshot" thì gần như chắc chắn đáp án là initialization / pre-warming, hoặc fast snapshot restore nếu có trong danh sách.
- Phân biệt ba nhóm tối ưu EBS để không chọn nhầm: EBS-optimized instance lo băng thông riêng cho I/O; RAID 0 lo throughput tổng vượt giới hạn một volume; read-ahead là chỉnh ở tầng OS, chỉ khuyến nghị cho HDD (st1, sc1) với workload đọc nhiều.
- Với câu trắc nghiệm mà mọi phương án đều đúng về mặt kỹ thuật, hãy quay lại đúng triệu chứng đề mô tả và chọn phương án tấn công nguyên nhân, không chọn phương án chỉ cải thiện chung chung.
A SysOps Administrator has configured Amazon CloudFront for improving latency experienced by the end-users located across multiple AWS Regions. Users are complaining about CloudFront returning 404 responses for a few objects.
Which of the following represents the best reason for this behavior?
-
A
404 error is generated by cache miss on CloudFront distribution
-
B
The object(s) requested were not found by CloudFront and CloudFront generated the 404 error to be returned to the requesting service
-
C
CloudFront distribution is unable to connect to the origin server to fetch the requested objects
-
D
The object(s) requested were not found on the origin server and origin server generated the 404 error, which is returned by CloudFront
Xem giải thích
🧩 Phân tích nội dung câu hỏi
Đề mô tả một SysOps Administrator đã cấu hình Amazon CloudFront để giảm độ trễ cho người dùng ở nhiều Region, và người dùng báo rằng CloudFront trả về 404 cho một vài object. Câu hỏi yêu cầu chọn lý do hợp lý nhất cho hành vi đó.
Cụm từ quyết định là "returning 404 responses for a few objects" — hãy tách bạch hai chữ trong đó:
- "returning" chứ không phải "generating". CloudFront là CDN nằm giữa viewer và origin; nó chuyển tiếp lại mã trạng thái mà origin trả về, chứ bản thân nó không tự nghĩ ra 404.
- "a few objects" — chỉ một số object hỏng, phần còn lại vẫn phục vụ bình thường. Nếu là sự cố kết nối giữa CloudFront và origin thì toàn bộ request đi tới origin đó đều hỏng, và mã trả về cũng sẽ khác 404.
Vậy bài toán quy về một câu hỏi duy nhất: ai là người sinh ra mã 404 — CloudFront hay origin? Và 404 nghĩa là tìm không thấy tài nguyên, khác hẳn với không kết nối được tới nơi giữ tài nguyên.
✅ Vì sao đáp án đúng là đúng
D — Object không tồn tại trên origin server, origin sinh ra 404 và CloudFront trả lại cho viewer.
Luồng xử lý một request qua CloudFront:
- Viewer gọi tới edge location gần nhất.
- Nếu object có trong cache (cache hit) → trả ngay.
- Nếu không có (cache miss) → CloudFront gửi request tới origin để lấy object.
- Origin không tìm thấy object đó → origin trả 404 Not Found.
- CloudFront chuyển tiếp 404 này về cho viewer, và còn cache lại mã lỗi đó trong một khoảng thời gian.
Điểm mấu chốt: CloudFront không tự sinh 404. Nó chỉ là nơi phân phối; quyết định "object này có tồn tại hay không" thuộc về origin (S3 bucket, ALB, EC2, hay web server tuỳ ý). Chuyện chỉ một vài object bị 404 khớp chính xác với kịch bản này — những object đó chưa được upload lên origin, bị xoá, hoặc sai đường dẫn/tên khoá, trong khi các object khác vẫn còn nguyên nên vẫn phục vụ tốt.
Việc CloudFront cache lại mã 4xx/5xx từ origin cũng lý giải vì sao lỗi có thể còn dai dẳng một lúc ngay cả sau khi đã sửa trên origin.
❌ Vì sao các phương án còn lại sai
A — "404 sinh ra do cache miss trên CloudFront distribution"
Đây là bẫy dễ mắc nhất vì cache miss đúng là có xảy ra trong luồng này. Nhưng cache miss không phải là lỗi — nó chỉ là trạng thái "object chưa nằm trong cache của edge location". Khi đó CloudFront đi lấy object từ origin, trả về cho viewer rồi lưu vào cache để lần sau phục vụ nhanh hơn. Cache miss chỉ khiến request đầu tiên chậm hơn một chút, chứ không hề tạo ra mã lỗi nào. Nếu cache miss mà sinh 404 thì mọi object mới đăng đều hỏng ở lần truy cập đầu tiên — điều đó rõ ràng không đúng với thực tế.
B — "CloudFront không tìm thấy object và tự sinh 404"
Phương án này rất gần đáp án đúng: nó cũng nói object không tìm thấy, cũng nói về 404. Chỗ hỏng nằm ở chủ thể sinh ra mã lỗi. CloudFront không giữ vai trò "nguồn sự thật" về việc object có tồn tại hay không — nó không có danh mục đầy đủ của origin để mà kết luận "không có object này". Khi cache không có, việc duy nhất nó làm là hỏi origin. Câu trả lời 404 đến từ origin. Đây chính là cặp phương án mà đề dùng để phân biệt người hiểu luồng request với người chỉ nhớ mã lỗi.
C — "CloudFront không kết nối được tới origin server để lấy object"
Tình huống này là có thật, nhưng nó cho ra mã trạng thái khác: khi CloudFront không kết nối được tới origin, nó trả về 502 Bad Gateway. Ngoài ra còn hai điểm không khớp với đề: (1) nếu origin không kết nối được thì mọi object chưa nằm trong cache đều hỏng, chứ không chỉ "một vài object"; (2) sự cố kết nối thuộc về tầng vận chuyển, không nói lên điều gì về việc object có tồn tại hay không.
📌 Điểm cần nhớ
- CloudFront không tự sinh 404. Mã 4xx/5xx mà viewer nhận được có nguồn gốc từ origin; CloudFront chuyển tiếp và cache lại chúng trong một khoảng thời gian.
- Phân biệt mã lỗi theo nguyên nhân: 404 = origin có trả lời nhưng không tìm thấy object; 502 Bad Gateway = CloudFront không kết nối được tới origin. Đề hỏi mã nào thì soi đúng tầng đó.
- Cache miss không phải lỗi. Nó chỉ dẫn tới một lần đi lấy object từ origin — hệ quả là độ trễ, không phải mã lỗi.
- Phạm vi ảnh hưởng là manh mối chẩn đoán. "Một vài object" hỏng → vấn đề nằm ở chính các object đó trên origin. "Tất cả object" hỏng → nghi ngờ kết nối, cấu hình origin, hoặc quyền truy cập.
A certificate was imported using AWS Certificate Manager (ACM) for configuring on an Application Load Balancer (ALB). The certificate, however, is not visible in ACM.
What can be the issue and how will you fix it?
-
A
ALB does not directly support ACM certificates. The certificate has to be installed on Amazon EC2 instance(s) backing the ALB
-
B
ACM is not directly integrated with ALB. You need to use Amazon CloudFront for using ACM certificates with ALB
-
C
The ACM certificate wasn't requested in the same AWS Region as your load balancer
-
D
To use the ACM certificates with ALB, the certificates must be imported or requested in the US East (N. Virginia) Region only
Xem giải thích
🧩 Phân tích nội dung câu hỏi
Tình huống: một chứng chỉ đã được import vào ACM để gắn lên Application Load Balancer (ALB), nhưng khi mở danh sách chứng chỉ để chọn thì không thấy nó đâu. Đề hỏi nguyên nhân và cách sửa.
Cụm từ quyết định nằm ở chỗ đề nói chứng chỉ đã được import vào ACM rồi mà vẫn "not visible". Hãy đọc kỹ: đề không nói việc gắn chứng chỉ bị lỗi, không nói ALB từ chối TLS, không nói ACM báo lỗi khi import. Nó chỉ nói chứng chỉ không hiện ra trong danh sách. Đó là một triệu chứng rất hẹp — chứng chỉ tồn tại, nhưng ở chỗ mà console/API đang nhìn thì không thấy.
Ràng buộc phân biệt là phạm vi Region. ACM là dịch vụ theo Region: chứng chỉ import hoặc request ở Region nào thì chỉ tồn tại trong Region đó. Khi bạn cấu hình HTTPS listener cho một ALB, danh sách chứng chỉ chọn được chỉ gồm chứng chỉ cùng Region với load balancer. Import nhầm Region là ra đúng triệu chứng "có mà không thấy".
Hai phương án A và B thì đi theo một hướng hoàn toàn khác: chúng phủ nhận việc ACM tích hợp với ALB. Nếu điều đó đúng thì triệu chứng phải là "không có chỗ nào để chọn chứng chỉ", chứ không phải "danh sách có mà thiếu đúng cái mình vừa import".
✅ Vì sao đáp án đúng là đúng
C — chứng chỉ ACM không nằm cùng Region với load balancer.
ACM certificate phải được request hoặc import trong đúng Region chứa Classic Load Balancer / Application Load Balancer cần dùng nó. Đây là ràng buộc kiến trúc, không phải giới hạn tạm thời: ACM lưu chứng chỉ theo từng Region, và Elastic Load Balancing chỉ tra cứu trong Region của chính nó khi liệt kê chứng chỉ khả dụng.
Cách sửa suy ra trực tiếp: import lại (hoặc request lại) chứng chỉ đó vào đúng Region của ALB, rồi gắn vào HTTPS listener.
Giải thích nguồn còn nêu thêm một nguyên nhân nữa cũng làm chứng chỉ "biến mất": chứng chỉ import dùng thuật toán RSA không thuộc nhóm được hỗ trợ. Nhưng trong bốn phương án ở đây chỉ có C nói tới nguyên nhân Region, nên C là lựa chọn duy nhất khớp.
❌ Vì sao các phương án còn lại sai
A — "ALB không hỗ trợ ACM, phải cài chứng chỉ lên các EC2 instance phía sau ALB". Sai ở tiền đề. ACM tích hợp thẳng với Elastic Load Balancing; chứng chỉ được terminate TLS ngay tại ALB. Ngoài ra chứng chỉ trong ACM (dạng ACM-issued) không export ra được để đem cài lên EC2 — hướng làm này vừa sai về khả năng tích hợp vừa sai về cách ACM vận hành.
B — "ACM không tích hợp với ALB, phải đi qua CloudFront". Cũng sai ở tiền đề, và còn thêm một tầng vô lý: CloudFront là CDN đứng trước origin, không phải cầu nối bắt buộc để ALB dùng được chứng chỉ. ACM được các dịch vụ sau hỗ trợ: Elastic Load Balancing, Amazon CloudFront, AWS Elastic Beanstalk, AWS App Runner, Amazon API Gateway, AWS Nitro Enclaves và AWS CloudFormation — ELB nằm ngay đầu danh sách.
D — "phải import/request ở US East (N. Virginia) thì mới dùng được với ALB". Đây là phương án gần đúng nhất và là cái bẫy chính của câu hỏi. Ràng buộc "chỉ N. Virginia" là có thật, nhưng nó thuộc về CloudFront, không thuộc về ALB. CloudFront là dịch vụ biên toàn cầu nên nó đọc chứng chỉ từ một Region cố định là us-east-1. ALB thì ngược lại — nó là tài nguyên theo Region, nên yêu cầu là cùng Region với chính nó, chứ không phải một Region cố định nào. Người học nhớ mang máng "ACM có liên quan tới N. Virginia" rất dễ chọn D; điểm phân biệt là dịch vụ tiêu thụ chứng chỉ là ALB hay CloudFront.
📌 Điểm cần nhớ
- ACM là dịch vụ theo Region. Chứng chỉ chỉ nhìn thấy được trong Region đã import/request. Triệu chứng "chứng chỉ không hiện trong danh sách chọn" gần như luôn là dấu hiệu sai Region.
- Quy tắc Region khác nhau theo dịch vụ tiêu thụ: ALB / Classic Load Balancer đòi chứng chỉ cùng Region với load balancer; CloudFront đòi chứng chỉ ở US East (N. Virginia). Đề bài nhắc dịch vụ nào thì áp quy tắc của dịch vụ đó.
- ACM tích hợp trực tiếp với Elastic Load Balancing. Mọi phương án bảo phải cài chứng chỉ thủ công lên EC2 phía sau, hoặc phải chèn CloudFront vào giữa mới dùng được ACM với ALB, đều sai ngay từ tiền đề.
- Với chứng chỉ import vào ACM, ngoài Region còn một nguyên nhân nữa khiến nó không hiện ra: thuật toán/kích thước khoá không nằm trong nhóm được hỗ trợ. Gặp câu hỏi cùng chủ đề, hãy kiểm tra cả hai điều kiện — Region và loại khoá.
An administrator has to generate reports on the Aurora DB Cluster and its replicas. The report needs to capture the maximum amount of lag between the primary instance and each Aurora DB instance in the DB cluster.
Which Aurora CloudWatch metric will help fetch this information?
-
A
AuroraBinlogReplicaLag -
B
AuroraReplicaLagMaximum -
C
InsertLatency -
D
AuroraReplicaLag
Xem giải thích
🧩 Phân tích nội dung câu hỏi
Đề mô tả một quản trị viên phải làm báo cáo cho Aurora DB Cluster cùng các replica của nó. Câu quyết định nằm ở dòng: "capture the maximum amount of lag between the primary instance and each Aurora DB instance in the DB cluster".
Hai cụm từ này là ràng buộc phân biệt:
- "maximum amount of lag" — không hỏi độ trễ trung bình hay độ trễ của riêng một replica, mà hỏi giá trị lớn nhất trong cả cụm. Đây chính là chỗ tách
AuroraReplicaLagMaximumkhỏiAuroraReplicaLag. - "in the DB cluster" — phạm vi là trong cùng một cluster, giữa primary instance và các Aurora replica của nó. Không phải giữa hai cluster khác nhau, cũng không phải replication qua binlog.
Chỉ cần đọc đúng hai cụm này là loại được ba phương án còn lại mà không cần nhớ chi tiết từng metric.
✅ Vì sao đáp án đúng là đúng
B — AuroraReplicaLagMaximum là metric CloudWatch ghi nhận độ trễ lớn nhất giữa primary instance và từng Aurora DB instance trong cluster. Nó khớp từng chữ với yêu cầu của đề: primary ↔ each instance, và lấy giá trị maximum.
Ý nghĩa vận hành: trong một Aurora cluster có nhiều replica, mỗi replica có thể tụt lại một mức khác nhau. Nếu bạn cần một con số duy nhất để báo cáo hoặc để đặt cảnh báo về "trường hợp tệ nhất", thì metric maximum này là thứ trả lời được — replica chậm nhất đang cách primary bao xa. Đúng loại số liệu mà một bản báo cáo về lag cần.
❌ Vì sao các phương án còn lại sai
A — AuroraBinlogReplicaLag: đây là phương án gần đúng nhất và cũng là bẫy chính. Nó đúng là đo lag, nhưng đo sai phạm vi: nó cho biết một replica DB cluster chạy Aurora MySQL-Compatible Edition đang tụt lại bao xa so với source DB cluster. Giá trị của nó lấy từ trường Seconds_Behind_Master của lệnh MySQL SHOW SLAVE STATUS, và công dụng chính là theo dõi replication giữa các Aurora DB cluster, thường là qua các AWS Region khác nhau. Đề bài lại nói rõ "in the DB cluster" — quan hệ primary ↔ replica bên trong một cluster, không phải cluster ↔ cluster. Sai ở đối tượng được so sánh.
D — AuroraReplicaLag: phương án gần đúng thứ hai, và là cái dễ chọn nhầm nhất vì tên nó ngắn gọn, nghe "chuẩn" nhất. Nó đúng phạm vi — đo độ trễ của một Aurora replica khi nhân bản các cập nhật từ primary instance — nhưng không phải giá trị maximum trên toàn cụm. Nó là lag của bản thân replica đang được quan sát. Muốn có con số "tệ nhất trong cluster" như đề yêu cầu thì phải dùng bản Maximum. Đây chính là lý do đề cố ý viết chữ "maximum" vào câu hỏi: nếu bỏ chữ đó đi thì D sẽ hợp lý.
C — InsertLatency: sai chủ đề hoàn toàn. Metric này đo thời lượng trung bình của các thao tác insert, tức là hiệu năng ghi của database, không liên quan gì tới replication. Một insert chậm và một replica tụt lại là hai vấn đề khác nhau, cần hai metric khác nhau. Đây là phương án gây nhiễu để kiểm tra xem thí sinh có phân biệt được metric hiệu năng và metric replication hay không.
📌 Điểm cần nhớ
- Trong họ metric Aurora, phần hậu tố mới là thứ quyết định:
AuroraReplicaLaglà lag của một replica,AuroraReplicaLagMaximumlà lag lớn nhất trong cả cluster. Đọc kỹ tên metric đến chữ cuối cùng trước khi chọn. - Bám vào phạm vi so sánh mà đề nêu: trong một cluster (primary ↔ replica) thì dùng họ
AuroraReplicaLag*; giữa hai cluster (thường là cross-Region, trên Aurora MySQL-Compatible Edition) thì mới làAuroraBinlogReplicaLag. - Khi đề dùng những từ định lượng như "maximum", "minimum", "average", hãy coi đó là ràng buộc bắt buộc chứ không phải chữ thừa — CloudWatch thường có sẵn nhiều biến thể metric ứng với đúng những từ đó.
- Metric đo độ trễ thao tác như
InsertLatencythuộc nhóm hiệu năng câu lệnh, không dùng để trả lời câu hỏi về replication lag. Phân loại metric theo nhóm trước, rồi mới chọn trong nhóm.
Your consumer-facing website is a high-risk target for a DDoS attack and you would like to get 24/7 support in case they happen, as well as AWS bill reimbursement for the incurred costs during the attack.
What service should you use?
-
A
AWS WAF
-
B
AWS DDoS OpsTeam
-
C
AWS Shield Advanced
-
D
AWS Shield
Xem giải thích
🧩 Phân tích nội dung câu hỏi
Đề mô tả một website hướng ra người dùng cuối, được xác định là mục tiêu rủi ro cao của tấn công DDoS. Người vận hành muốn hai thứ rất cụ thể:
- Hỗ trợ 24/7 khi sự cố xảy ra — tức là có đội ngũ AWS trực tiếp tham gia ứng cứu.
- Được AWS hoàn lại phần hoá đơn phát sinh trong lúc bị tấn công — chi phí tăng vọt do tài nguyên phải co giãn để chịu tải rác.
Cụm từ quyết định là "AWS bill reimbursement for the incurred costs during the attack". Đây là mô tả nguyên văn của tính năng DDoS cost protection for scaling — bảo vệ hoá đơn khỏi các đợt tăng usage do DDoS trên những tài nguyên được bảo vệ (EC2, Elastic Load Balancing, CloudFront, Global Accelerator, Route 53). Cụm thứ hai, "24/7 support", ứng với quyền truy cập DRT (DDoS Response Team).
Chỉ cần một trong hai ràng buộc này là đã loại được toàn bộ các phương án còn lại, vì cả hai đều là đặc quyền của bản trả phí.
✅ Vì sao đáp án đúng là đúng
Đáp án đúng là C — AWS Shield Advanced.
AWS Shield Standard được bật mặc định cho mọi khách hàng AWS. Muốn mức bảo vệ cao hơn thì phải đăng ký trả phí lên Shield Advanced, và chính gói này mới mang theo đúng hai thứ đề bài đòi:
- Hỗ trợ từ DRT (DDoS response team): phát hiện và giảm thiểu tấn công một cách thông minh, không chỉ ở network layer (layer 3) và transport layer (layer 4) mà cả ở application layer (layer 7) — đúng loại tấn công mà một consumer-facing website hay gặp nhất.
- DDoS cost protection for scaling: bảo vệ hoá đơn AWS khỏi các đợt tăng usage trên tài nguyên được Shield Advanced bảo vệ (EC2, ELB, CloudFront, Global Accelerator, Route 53) khi nguyên nhân là DDoS.
Ngoài ra Shield Advanced còn cho truy cập các metric và báo cáo thời gian thực để thấy rõ diễn biến tấn công lên tài nguyên của mình.
❌ Vì sao các phương án còn lại sai
A — AWS WAF. Đây là web application firewall: bạn định nghĩa rule để allow / block / count request theo IP address, HTTP header, HTTP body, URI string, SQL injection, cross-site scripting. WAF thực sự hữu ích để chặn lưu lượng độc hại ở layer 7 và trong thực tế hay dùng kèm Shield Advanced — nhưng nó không phải là gói dịch vụ hỗ trợ và không hoàn tiền hoá đơn khi usage tăng do DDoS. Đây là phương án gần đúng nhất về mặt "chống tấn công web", nhưng hỏng ở đúng hai ràng buộc mà đề nêu ra.
B — AWS DDoS OpsTeam. Không tồn tại. Đây là tên bịa, đưa vào làm distractor. Nó nghe hợp lý vì đề nhắc tới "24/7 support", đánh vào phản xạ chọn cái có chữ "team" — nhưng đội ngũ thật của AWS tên là DRT (DDoS Response Team), và nó là một quyền lợi bên trong Shield Advanced chứ không phải một dịch vụ riêng đứng tên trong console.
D — AWS Shield. Ở đây "AWS Shield" trần, không có chữ Advanced, được hiểu là Shield Standard — bản mặc định, miễn phí, bật sẵn cho mọi tài khoản. Nó chống được các dạng tấn công phổ biến ở tầng mạng và tầng transport, nhưng không bảo vệ hoá đơn AWS khỏi usage spike do DDoS và không kèm quyền truy cập đội ứng cứu. Đây chính là cái bẫy trung tâm của câu hỏi: chọn đúng họ dịch vụ nhưng sai tier.
📌 Điểm cần nhớ
- "Bill reimbursement / cost protection do DDoS" ⇒ Shield Advanced. Đây là từ khoá gần như một-đối-một trong đề thi; thấy nó thì không cần đọc tiếp các phương án khác.
- "24/7 support", "DDoS response team", "DRT" ⇒ Shield Advanced, vì Standard không có kênh hỗ trợ chuyên trách này.
- Phân biệt tier, không chỉ phân biệt tên dịch vụ. Shield Standard bật sẵn cho mọi tài khoản và miễn phí; Shield Advanced là bản trả phí, phải chủ động đăng ký. Đề để cả "AWS Shield" lẫn "AWS Shield Advanced" trong cùng danh sách là để kiểm tra đúng chỗ này.
- WAF và Shield giải quyết hai bài toán khác nhau. WAF là bộ lọc request theo rule do bạn viết; Shield là dịch vụ phát hiện — giảm thiểu DDoS kèm hỗ trợ và bảo vệ chi phí. Đề hỏi về hỗ trợ và hoá đơn thì câu trả lời nằm ở Shield.
- Cảnh giác với tên dịch vụ nghe hợp lý mà không tồn tại, kiểu "AWS DDoS OpsTeam". Nếu một cái tên chưa từng xuất hiện trong tài liệu AWS, gần như chắc chắn đó là distractor.
A company wants to build a highly scalable web application using Amazon ElastiCache for Redis. The SysOps Administrator at the company is tasked with configuring Redis as a Multi-AZ deployment.
Which of the following represent the key characteristics of Redis Multi-AZ? (Select two)
-
A
When the primary node is rebooted, it's cleared of data when it comes back online. In such a scenario, the primary fills its cache with data from the most recent replica
-
B
You can manually promote read replicas to primary on Redis (when cluster mode is disabled) only when Multi-AZ and automatic failover are disabled
-
C
A customer-initiated reboot of a primary node can trigger automatic failover. Hence, automatic failover should be disabled before initiating reboot
-
D
When choosing the replica to promote to primary, ElastiCache for Redis chooses the replica with the least replication lag
-
E
Redis replication is synchronous in multi-AZ configuration
Xem giải thích
🧩 Phân tích nội dung câu hỏi
Đề mô tả một công ty dựng web application có khả năng scale cao trên Amazon ElastiCache for Redis, và SysOps Administrator được giao việc cấu hình Redis ở dạng Multi-AZ deployment. Câu hỏi yêu cầu chọn hai đặc điểm cốt lõi của Redis Multi-AZ.
Cụm từ quyết định là "key characteristics of Redis Multi-AZ" — đây không phải câu hỏi tình huống kiến trúc mà là câu kiểm tra kiến thức thuộc lòng về cách Multi-AZ và automatic failover vận hành trong ElastiCache for Redis. Ba trục cần nắm để phân biệt năm phương án gần giống nhau:
- Replication là đồng bộ hay bất đồng bộ?
- Reboot do khách hàng chủ động có kích hoạt automatic failover không?
- Manual promote replica lên primary được phép khi nào, và ElastiCache chọn replica nào khi failover tự động?
Mỗi phương án chạm vào đúng một trong ba trục này, nên chỉ cần nhớ chính xác ba điểm là loại được hết.
✅ Vì sao đáp án đúng là đúng
B — Manual promote read replica lên primary (cluster mode disabled) chỉ làm được khi Multi-AZ và automatic failover đang tắt. Hai cơ chế này loại trừ nhau về mặt điều khiển: khi Multi-AZ với automatic failover đang bật, chính ElastiCache là bên nắm quyền quyết định replica nào lên primary và lúc nào. Cho phép người vận hành đồng thời tự promote bằng tay sẽ tạo ra hai nguồn quyết định cạnh tranh nhau trên cùng một replication group. Vì vậy AWS chỉ mở thao tác manual promote khi bạn đã tắt Multi-AZ và automatic failover, tức là khi bạn nhận trách nhiệm điều khiển failover về phía mình.
D — Khi chọn replica để promote, ElastiCache for Redis chọn replica có replication lag nhỏ nhất. Đây là hệ quả trực tiếp của việc replication là bất đồng bộ: các replica không đứng cùng một mốc dữ liệu, mỗi cái trễ một khoảng khác nhau so với primary. Replica có lag nhỏ nhất là replica gần với trạng thái primary nhất, nên chọn nó giúp giảm thiểu lượng dữ liệu mất đi khi failover. Lưu ý một chi tiết hay bị hiểu sai: replica được chọn không nhất thiết phải nằm khác Availability Zone với primary đã hỏng — nó có thể ở cùng AZ hoặc khác AZ, tiêu chí xét là độ trễ dữ liệu chứ không phải vị trí AZ.
❌ Vì sao các phương án còn lại sai
A — "Primary reboot xong bị xoá sạch dữ liệu, và primary sẽ nạp lại cache từ replica mới nhất." Vế đầu đúng: primary bị reboot thì đúng là mất sạch dữ liệu khi quay lại. Nhưng vế sau ngược hoàn toàn với thực tế. Chiều đồng bộ trong Redis là primary → replica, không có chiều ngược lại. Khi các read replica nhìn thấy primary đã trống, chúng sẽ xoá luôn bản sao dữ liệu của chính mình cho khớp với primary — kết quả là mất dữ liệu trên toàn bộ replication group, chứ không phải primary được "cứu" bởi replica. Đây là phương án gần đúng nguy hiểm nhất vì nửa đầu câu hoàn toàn chính xác.
C — "Reboot primary do khách hàng chủ động có thể kích hoạt automatic failover, nên phải tắt automatic failover trước khi reboot." Sai ở tiền đề. Một reboot do chính khách hàng khởi tạo trên primary node không kích hoạt automatic failover — ElastiCache phân biệt được đây là thao tác có chủ đích của người vận hành. Các loại reboot khác và các sự cố thực sự thì mới trigger automatic failover. Vì tiền đề sai nên khuyến nghị "phải tắt automatic failover trước khi reboot" cũng không có cơ sở.
E — "Redis replication là đồng bộ trong cấu hình Multi-AZ." Sai. Redis replication trong ElastiCache là asynchronous, kể cả khi bật Multi-AZ. Chính vì bất đồng bộ nên mới tồn tại khái niệm replication lag, và cũng chính vì thế mà khi primary failover sang replica, có thể mất một lượng nhỏ dữ liệu tương ứng với phần lag chưa kịp truyền đi. Nếu replication là đồng bộ thì phương án D sẽ trở nên vô nghĩa — mọi replica đều giống hệt nhau, không có cái nào "lag ít nhất" để mà chọn. E và D mâu thuẫn trực tiếp với nhau, đây là dấu hiệu để loại E.
📌 Điểm cần nhớ
- Redis replication trong ElastiCache luôn là asynchronous, Multi-AZ không biến nó thành synchronous. Hệ quả kèm theo: luôn tồn tại replication lag và luôn có khả năng mất một ít dữ liệu khi failover. Thấy phương án nào nói "synchronous" là loại ngay.
- Manual promote và automatic failover loại trừ nhau: chỉ promote read replica bằng tay được khi Multi-AZ và automatic failover đã tắt. Nguyên tắc chung là không để hai nguồn ra quyết định failover cùng tồn tại trên một replication group.
- Reboot primary do khách hàng chủ động không trigger automatic failover; các sự cố và loại reboot khác thì có. Đây là điểm khác biệt hay bị hỏi xoáy.
- Tiêu chí chọn replica khi failover là replication lag nhỏ nhất, không phải vị trí Availability Zone. Replica được promote có thể nằm cùng AZ với primary đã hỏng.
- Reboot primary làm mất dữ liệu theo chiều lan xuống replica, không có chuyện primary nạp lại cache từ replica. Nhớ chiều đồng bộ chỉ đi từ primary xuống replica.
A serverless application having unpredictable workloads uses Amazon RDS. When the workloads are high, the database memory and compute resources are getting drained resulting in a bad user experience. Upon investigation, the development team has realized that during peak traffic hours, a burst of new database connections is being requested resulting in slow database performance.
What is the most optimal plan of action to address this issue?
-
A
Use AWS Lambda Functions to maintain and manage the RDS connections as per workload
-
B
Run the DB instance as a Multi-AZ deployment to improve the database performance
-
C
Configure Amazon RDS Proxy to pool and share database connections
-
D
Use RDS 'Enhanced Monitoring' option to manage DB connection pools
Xem giải thích
🧩 Phân tích nội dung câu hỏi
Đề mô tả một ứng dụng serverless với khối lượng công việc không đoán trước được (unpredictable workloads), đang dùng Amazon RDS. Triệu chứng: vào giờ cao điểm, bộ nhớ và tài nguyên tính toán của database bị vắt kiệt, database chậm đi.
Cụm từ quyết định đáp án nằm ở câu chẩn đoán của đội phát triển: "a burst of new database connections is being requested" — một đợt bùng nổ kết nối mới. Đây không phải vấn đề truy vấn nặng, không phải vấn đề thiếu bản sao dự phòng, cũng không phải vấn đề thiếu số liệu giám sát. Vấn đề là số lượng kết nối đang mở ra quá nhanh và quá nhiều, mà mỗi kết nối tới database đều tốn bộ nhớ và CPU trên chính DB instance.
Ràng buộc thứ hai là chữ "most optimal" — nghĩa là trong các cách chữa được, phải chọn cách tốn ít công sức phát triển và ít hạ tầng phải tự quản lý nhất. Kết hợp "serverless + burst of connections + most optimal", đề đang mô tả gần như nguyên văn tình huống mà RDS Proxy sinh ra để giải quyết.
✅ Vì sao đáp án đúng là đúng
C — Configure Amazon RDS Proxy to pool and share database connections.
Kiến trúc serverless có đặc tính là số lượng instance của hàm mở rộng theo lưu lượng, mỗi instance lại tự mở kết nối riêng tới database, và vòng đời rất ngắn nên kết nối liên tục được mở ra rồi đóng lại với tần suất cao. Chính kiểu truy cập đó làm cạn bộ nhớ và tài nguyên tính toán của DB server — đúng triệu chứng đề mô tả.
RDS Proxy đứng chen giữa ứng dụng và database, giữ sẵn một pool kết nối và cho nhiều kết nối từ phía ứng dụng dùng chung một kết nối tới database. Ba tác dụng đi thẳng vào vấn đề của đề:
- Nhiều request của ứng dụng tái sử dụng chung kết nối có sẵn, thay vì bắt database mở kết nối mới.
- Proxy điều tiết số kết nối thực sự được mở tới database, nhờ đó hiệu năng database giữ được mức ổn định thay vì tụt dốc khi tải tăng đột biến.
- Những request mà database không phục vụ nổi bị loại bớt để bảo vệ hiệu năng và tính sẵn sàng chung.
Ngoài ra, RDS Proxy bật lên được cho phần lớn ứng dụng mà không phải sửa mã, và không phải tự dựng hay tự vận hành thêm hạ tầng nào — đúng nghĩa "most optimal". Proxy còn tích hợp AWS Secrets Manager và IAM để quản lý thông tin đăng nhập, đồng thời rút ngắn đáng kể thời gian failover cho RDS và Aurora.
❌ Vì sao các phương án còn lại sai
A — Use AWS Lambda Functions to maintain and manage the RDS connections as per workload. Đây là phương án gần đúng nhất về mặt ý tưởng: đúng là ta muốn quản lý kết nối. Nhưng nó bắt bạn tự viết lấy cơ chế quản lý pool bằng Lambda, tức là tự làm lại đúng thứ RDS Proxy đã làm sẵn — tốn công phát triển đáng kể mà không đảm bảo cải thiện được hiệu năng như mong đợi. Chưa kể chính Lambda là thành phần đang sinh ra burst kết nối; dùng thêm Lambda để chữa vấn đề do mô hình Lambda gây ra không giải quyết được gốc rễ. So với một dịch vụ quản trị bật bằng cấu hình, đây rõ ràng là lựa chọn kém tối ưu hơn.
B — Run the DB instance as a Multi-AZ deployment. Multi-AZ tạo một bản sao standby đồng bộ ở Availability Zone khác. Đó là cơ chế cho high availability — chịu được sự cố hạ tầng của một AZ — chứ không phải cơ chế tăng hiệu năng. Bản standby không phục vụ traffic đọc/ghi của ứng dụng trong lúc bình thường, nên nó không chia sẻ chút gánh nặng kết nối nào cho instance chính. Burst kết nối vẫn đổ hết vào một chỗ như cũ.
D — Use RDS 'Enhanced Monitoring' option to manage DB connection pools. Enhanced Monitoring cho bạn tầm nhìn sâu hơn về sức khỏe DB instance: các chỉ số ở mức hệ điều hành như CPU, memory, file system, disk I/O. Bạn dùng nó để dựng CloudWatch alarm và biết rằng database đang quá tải. Nhưng nó thuần túy là công cụ quan sát — nó không quản lý connection pool, không giảm được một kết nối nào. Vế "to manage DB connection pools" trong phương án là mô tả sai chức năng của dịch vụ.
📌 Điểm cần nhớ
- Đề nhắc tới serverless + burst of database connections + RDS/Aurora thì gần như chắc chắn đáp án là RDS Proxy. Đây là cặp từ khóa – dịch vụ nên thuộc lòng.
- Phân biệt hai trục: Multi-AZ = high availability, read replica = mở rộng đọc, RDS Proxy = quản trị kết nối. Đề hỏi hiệu năng do kết nối thì Multi-AZ luôn là bẫy.
- Dịch vụ giám sát (Enhanced Monitoring, CloudWatch) chỉ giúp phát hiện vấn đề, không bao giờ là phương án khắc phục. Phương án nào gán cho công cụ giám sát một hành động sửa chữa là sai từ mô tả.
- Khi đề dùng chữ "most optimal", hãy ưu tiên dịch vụ quản trị bật được bằng cấu hình và không đòi sửa mã, thay vì giải pháp tự viết lấy bằng Lambda.
As part of an internal IT audit, you must provide proof that AWS has the necessary ISO certifications.
How can you gain access to these documents?
-
A
Use AWS GuardDuty
-
B
Use AWS Artifact
-
C
Fill out an ISO Penetration Testing form
-
D
Contact the AWS Support
Xem giải thích
🧩 Phân tích nội dung câu hỏi
Đề đặt bối cảnh internal IT audit và yêu cầu bạn "provide proof that AWS has the necessary ISO certifications" — tức là phải lấy được tài liệu chứng nhận của chính AWS (bên nhà cung cấp hạ tầng), chứ không phải bằng chứng về cấu hình hay tình trạng bảo mật trong tài khoản của bạn.
Cụm từ quyết định là "proof that AWS has ... ISO certifications" và "gain access to these documents". Hai chi tiết này khoá chặt phạm vi câu trả lời:
- Chủ thể được chứng nhận là AWS, không phải workload của khách hàng. Đây là phần "security OF the cloud" trong mô hình shared responsibility — do AWS tự chứng minh với bên kiểm toán độc lập.
- Thứ cần lấy là documents — báo cáo, chứng chỉ tải về được để nộp cho auditor — chứ không phải cảnh báo, log, hay kết quả quét.
Bất kỳ phương án nào tạo ra dữ liệu về môi trường của bạn thay vì cung cấp tài liệu tuân thủ của AWS đều lệch đề ngay từ đầu.
✅ Vì sao đáp án đúng là đúng
B. Use AWS Artifact.
AWS Artifact là cổng tự phục vụ, truy cập theo yêu cầu và không mất phí, dùng làm nơi tập trung các tài liệu liên quan tới tuân thủ mà tổ chức của bạn cần. Qua AWS Artifact Reports, bạn tải về được các tài liệu bảo mật và tuân thủ của AWS như ISO certifications, báo cáo PCI (Payment Card Industry) và báo cáo SOC (System and Organization Control) — đúng thứ mà cuộc kiểm toán nội bộ đang đòi.
Ngoài phần báo cáo, Artifact còn có AWS Artifact Agreements để ký một số thoả thuận trực tuyến phục vụ các quy định riêng — ví dụ BAA (Business Associate Addendum) cho khách hàng phải tuân thủ HIPAA.
Điểm đáng nhớ về bản chất: Artifact không phải là một service vận hành như các dịch vụ tính toán hay lưu trữ; nó là một portal self-service để lấy tài liệu ngay lập tức, không phải mở ticket rồi chờ ai đó gửi lại.
❌ Vì sao các phương án còn lại sai
A. Use AWS GuardDuty — GuardDuty là dịch vụ threat detection: nó theo dõi hoạt động độc hại và hành vi trái phép để bảo vệ tài khoản AWS của bạn, phân tích lượng sự kiện rất lớn từ AWS CloudTrail (hoạt động của người dùng và API trong tài khoản), Amazon VPC Flow Logs (dữ liệu lưu lượng mạng) và DNS Logs (mẫu truy vấn tên miền). Đây là phương án dễ gây nhầm vì nó cũng nằm trong nhóm "bảo mật", nhưng nó sinh ra findings về môi trường của bạn, hoàn toàn không phát hành hay lưu trữ chứng chỉ ISO của AWS. Nhầm lẫn ở đây là nhầm giữa phát hiện mối đe doạ trong tài khoản khách hàng và bằng chứng tuân thủ của nhà cung cấp.
C. Fill out an ISO Penetration Testing form — đây là phương án bịa, được thêm vào làm distractor. Nó nghe hợp lý vì trộn hai khái niệm có thật (ISO, và việc xin phép/khai báo liên quan tới penetration testing) thành một quy trình không tồn tại. Quan trọng hơn về mặt logic: penetration testing là hoạt động kiểm thử, không phải kênh phát hành tài liệu chứng nhận. Không có chuyện điền form pen-test để nhận về chứng chỉ ISO của AWS.
D. Contact the AWS Support — đây là phương án gần đúng nhất và cũng là bẫy dễ mắc, vì trong đời thực "cần giấy tờ thì hỏi nhà cung cấp" là phản xạ tự nhiên. Nhưng nó hỏng ở chỗ: bạn không cần liên hệ AWS Support để tải các tài liệu bảo mật và tuân thủ như ISO certifications. Chúng đã có sẵn theo cơ chế on-demand self-service trong Artifact. Đi qua Support là thêm một bước trung gian không cần thiết, chậm hơn, và không phải kênh được thiết kế cho việc này.
📌 Điểm cần nhớ
- Từ khoá đề nhận diện AWS Artifact: compliance reports, ISO / SOC / PCI, audit, tài liệu tuân thủ của bản thân AWS. Thấy cụm "proof that AWS is compliant" thì gần như chắc chắn là Artifact.
- Phân biệt theo chủ thể được đánh giá: Artifact chứng minh cho AWS (security of the cloud); còn GuardDuty và các dịch vụ giám sát khác nói về môi trường của bạn (security in the cloud).
- Artifact là portal self-service, on-demand, không mất phí — nên mọi phương án kiểu "mở ticket", "liên hệ Support", "gửi yêu cầu chờ duyệt" để lấy báo cáo tuân thủ đều sai theo thiết kế.
- Artifact có hai phần: Reports (tải báo cáo tuân thủ) và Agreements (ký thoả thuận như BAA cho HIPAA). Đề nhắc tới BAA/HIPAA thì vẫn là Artifact, chỉ khác mục.
- Cảnh giác với distractor được bịa bằng cách ghép hai thuật ngữ có thật (ở đây là "ISO" + "Penetration Testing form"): tên nghe quen nhưng không tương ứng với quy trình nào có thật.
A heavily used web application needs an in-memory caching solution/service that is simple to use and has the ability to scale out or scale in by adding or removing nodes as the demand on the system increases or decreases.
Which AWS caching solution is the right fit for this requirement?
-
A
Amazon ElastiCache for Redis
-
B
Amazon ElastiCache for Memcached
-
C
Amazon DynamoDB Accelerator (DAX)
-
D
Amazon CloudFront
Xem giải thích
🧩 Phân tích nội dung câu hỏi
Đề bài mô tả một web application đang chịu tải nặng, cần một in-memory caching solution với hai ràng buộc được nêu rất rõ:
- "simple to use" — mô hình cache đơn giản nhất có thể;
- "scale out or scale in by adding or removing nodes as the demand on the system increases or decreases" — thêm/bớt node theo nhu cầu, tức là scale ngang cả hai chiều.
Cụm từ quyết định đáp án là "simple" đi kèm "scale out or scale in by adding or removing nodes". Đây gần như là câu chữ lấy thẳng từ tài liệu AWS hướng dẫn chọn giữa hai engine của ElastiCache: chọn Memcached khi bạn cần mô hình đơn giản nhất, cần node lớn nhiều core/thread, cần khả năng thêm bớt node theo nhu cầu, và chỉ cần cache object. Đề không hề nhắc tới replication, persistence, sorted set, pub/sub hay các cấu trúc dữ liệu phức tạp — sự vắng mặt đó cũng là một tín hiệu, vì đó chính là những thứ khiến người ta chọn Redis.
✅ Vì sao đáp án đúng là đúng
B — Amazon ElastiCache for Memcached.
ElastiCache là dịch vụ managed giúp triển khai và vận hành in-memory data store/cache, cho phép ứng dụng lấy dữ liệu từ bộ nhớ thay vì luôn phải chạm tới database trên đĩa vốn chậm hơn. Với engine Memcached, ElastiCache tương thích protocol Memcached, nên mọi công cụ và thư viện client đang dùng với Memcached đều chạy được ngay, không phải viết lại.
Memcached khớp đúng cả hai ràng buộc của đề: nó là mô hình cache đơn giản nhất — chỉ là một kho key–value để cache object, không mang theo bộ tính năng đồ sộ; và nó được thiết kế để scale out/in bằng cách thêm hoặc bớt node trong cluster khi tải tăng giảm. ElastiCache còn tự phát hiện và thay thế node hỏng, đồng thời đẩy metric sang CloudWatch để theo dõi hiệu năng.
❌ Vì sao các phương án còn lại sai
A — Amazon ElastiCache for Redis. Đây là phương án gần đúng nhất, và cũng là bẫy chính: Redis cũng là in-memory cache do ElastiCache quản lý, cũng nhanh, cũng scale được. Chỗ nó hỏng nằm ở chữ "simple". Redis mạnh hơn Memcached rất nhiều — nhiều kiểu dữ liệu, replication, các tính năng nâng cao — và chính vì thế mà phức tạp hơn khi vận hành. Khi đề chỉ yêu cầu cache object đơn giản và thêm/bớt node, Redis là chọn thừa tính năng; AWS hướng người dùng sang Memcached đúng trong tình huống này.
C — Amazon DynamoDB Accelerator (DAX). DAX đúng là in-memory cache, managed, và cải thiện độ trễ từ mili giây xuống micro giây. Nhưng nó là cache chuyên biệt cho DynamoDB — nó nằm trước bảng DynamoDB và tự lo cache invalidation, nạp dữ liệu, quản lý cluster cho chính DynamoDB. Đề bài chỉ nói "web application" chứ không hề nói dữ liệu nằm trong DynamoDB, nên DAX không phải giải pháp cache dùng chung được. Đây là phương án sai vì phạm vi áp dụng, không phải vì kém.
D — Amazon CloudFront. CloudFront là CDN toàn cầu, tăng tốc phân phối website, API, video và các web asset tới người dùng cuối. Nó cũng "cache", nhưng cache ở tầng web application / edge, phục vụ nội dung cho client, chứ không phải in-memory cache để ứng dụng đọc/ghi object và giảm tải cho database. Yêu cầu ở đây là caching xuống tới tầng database — đúng phần việc của ElastiCache. Ngoài ra CloudFront cũng không có khái niệm "thêm/bớt node" mà người vận hành điều khiển như đề mô tả.
📌 Điểm cần nhớ
- Đề nhắc "simplest model" + "add/remove nodes to scale out and in" + "cache objects" → chọn ElastiCache for Memcached. Đây là bộ từ khoá lấy gần như nguyên văn từ hướng dẫn chọn engine của AWS.
- Ngược lại, nếu đề đòi các cấu trúc dữ liệu phong phú, replication hay tính năng nâng cao thì mới chuyển sang ElastiCache for Redis — đổi lại là mô hình phức tạp hơn.
- DAX chỉ tăng tốc DynamoDB. Thấy DAX trong phương án mà đề không nhắc DynamoDB thì gần như chắc chắn là distractor.
- Phân biệt tầng cache: CloudFront cache nội dung ở edge cho người dùng cuối; ElastiCache cache trong bộ nhớ cho chính ứng dụng, kể cả ở tầng database. Đọc kỹ xem đề đang muốn giảm tải cho ai.
A financial services company has to maintain a log of all transactions for audit and compliance purposes. The company is planning stringent security measures for all of its CloudTrail log files.
As a SysOps Administrator, which of the following would you suggest as the LEAST effort options to secure the CloudTrail logs? (Select two)
-
A
Integrate with Amazon CloudWatch alarms to generate an alarm whenever changes are made to CloudTrail log files
-
B
To prevent access rights violation, use AWS root user account to manage CloudTrail logs
-
C
Use Amazon S3 MFA Delete on the S3 bucket that holds CloudTrail logs and digest files
-
D
Enable CloudTrail log file integrity validation
-
E
Enable Versioning on Amazon S3 buckets that store CloudTrail logs and digest files
Xem giải thích
🧩 Phân tích nội dung câu hỏi
Một công ty tài chính phải lưu lại nhật ký mọi giao dịch để phục vụ audit và compliance, và đang muốn siết bảo mật cho các file log của CloudTrail. Đề yêu cầu chọn hai phương án.
Cụm từ quyết định nằm ở hai chỗ:
- "LEAST effort" — không hỏi "cách nào bảo vệ được log", mà hỏi cách nào bảo vệ log với ít công sức nhất. Nhiều phương án trong danh sách về lý thuyết đều làm được việc gì đó, nên đây chính là ràng buộc dùng để loại.
- "secure the CloudTrail logs" trong ngữ cảnh audit — mục tiêu thật sự là tính toàn vẹn (integrity): chứng minh log không bị sửa, không bị xoá lén. Không phải là "khôi phục lại được log", cũng không phải "được báo động sau khi chuyện đã xảy ra".
Ghép hai điều kiện: cần các cơ chế có sẵn, bật lên là dùng, và bảo vệ trực tiếp tính toàn vẹn của log file cùng digest file.
✅ Vì sao đáp án đúng là đúng
D — Enable CloudTrail log file integrity validation. Khi bật, CloudTrail tạo hash cho từng log file nó gửi đi, và định kỳ tạo thêm một digest file tham chiếu tới các log file của khoảng thời gian trước đó kèm hash của từng file. Mỗi digest file được CloudTrail ký bằng private key của một cặp khoá; sau đó bạn dùng public key tương ứng để xác thực. CloudTrail dùng cặp khoá riêng cho từng AWS Region. Nhờ vậy bạn khẳng định được ba việc rất quan trọng trong điều tra: log file không bị thay đổi, log file không bị xoá, và trong một khoảng thời gian nhất định có hay không có log nào được gửi vào tài khoản. Đây là tính năng dựng sẵn của CloudTrail — chỉ cần bật, đúng tinh thần "least effort".
C — Use Amazon S3 MFA Delete on the S3 bucket that holds CloudTrail logs and digest files. Digest file được gửi vào cùng bucket S3 với log file của trail (kể cả khi log từ nhiều Region hoặc nhiều account cùng đổ về một bucket). Bật MFA Delete khiến mọi thao tác xoá vĩnh viễn một object version hoặc thay đổi trạng thái versioning của bucket đều đòi thêm một lớp xác thực nữa. Giá trị của nó nằm ở chỗ: kể cả khi kẻ tấn công đã chiếm được mật khẩu của một IAM user có quyền xoá vĩnh viễn object trong S3, họ vẫn không xoá được log. Đây là cấu hình ở mức bucket, bật một lần cho cả log lẫn digest file.
Hai đáp án bổ trợ nhau đúng theo hai hướng: D giúp phát hiện thay đổi, C giúp ngăn việc xoá.
❌ Vì sao các phương án còn lại sai
E — Enable Versioning on Amazon S3 buckets that store CloudTrail logs and digest files. Đây là phương án gần đúng nhất và cũng là bẫy chính. Versioning giữ nhiều biến thể của cùng một object trong bucket, cho phép khôi phục lại mọi phiên bản, hữu ích khi người dùng lỡ tay hoặc ứng dụng lỗi. Nhưng nó không tự nó bảo vệ tính toàn vẹn theo nghĩa audit: nó cho phép ghi đè/thay đổi log mà không phát sinh bất kỳ cảnh báo, thông báo hay dấu hiệu nào. Có bản cũ nằm đó không đồng nghĩa với việc bạn biết đã có ai đó động vào. Lưu ý thêm: versioning là điều kiện nền để bật MFA Delete, nhưng bản thân nó không phải biện pháp bảo mật mà đề đang hỏi.
A — Integrate with Amazon CloudWatch alarms to generate an alarm whenever changes are made to CloudTrail log files. Về kỹ thuật thì làm được — CloudTrail và CloudWatch tích hợp chặt với nhau. Vấn đề là nó hỏng ở tiêu chí "LEAST effort": bạn phải dựng và duy trì cả một chuỗi thành phần, viết logic phát hiện, cấu hình alarm và nơi nhận thông báo, so với việc chỉ bật một tính năng có sẵn ở C và D. Đây là phương án đúng-về-nguyên-lý nhưng sai-về-tiêu-chí-chọn.
B — To prevent access rights violation, use AWS root user account to manage CloudTrail logs. Sai thẳng theo best practice của AWS: root user không được dùng cho các tác vụ vận hành hằng ngày. Root có toàn quyền không giới hạn trong account, nên dùng nó thường xuyên là làm tăng rủi ro chứ không giảm — ngược hẳn với mục tiêu siết bảo mật mà đề đặt ra.
📌 Điểm cần nhớ
- Bảo vệ tính toàn vẹn của CloudTrail log thì hai công cụ mặc định là log file integrity validation (hash + digest file được CloudTrail ký) và S3 MFA Delete trên bucket chứa log và digest file.
- Versioning ≠ integrity. Versioning cho phép khôi phục, nhưng cho phép sửa/ghi đè trong im lặng; muốn phát hiện thay đổi thì cần integrity validation, muốn chặn xoá vĩnh viễn thì cần MFA Delete.
- Gặp cụm "LEAST effort" / "least operational overhead": ưu tiên tính năng bật-là-chạy của chính dịch vụ, loại các phương án phải tự lắp ghép nhiều dịch vụ (kiểu CloudWatch alarm tự dựng) dù chúng vẫn khả thi.
- Bất kỳ phương án nào đề xuất dùng root user cho việc vận hành đều loại được ngay, không cần đọc tiếp.
- Digest file nằm cùng bucket với log file, kể cả khi gom log từ nhiều Region hoặc nhiều account — nên biện pháp bảo vệ ở mức bucket phủ được cả hai loại file.