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

Tìm thấy 585 câu.

Câu 91 Domain 2: Reliability and Business Continuity

You work for a blockchain company and you have a ledger application that is memory intensive. It is exposed in an auto scaling group behind an AWS load balancer. You would like to auto scale your application based on the number of users that you have.

As a SysOps Administrator, which of the following would you recommend to meet this requirement?

  1. A

    Push the RAM usage as a custom metric for the Load Balancer and auto scale based on that

  2. B

    Deploy a script on the Load Balancer to expose the number of users that are connected to your application as a custom CloudWatch metric

  3. C

    Use the RAM usage CloudWatch metric directly from the Load Balancer and auto scale based on that

  4. D

    Auto Scale based on the number of connections CloudWatch metric for the Load Balancer

Xem giải thích

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

Đề mô tả một ứng dụng ledger memory intensive, chạy trong Auto Scaling group đứng sau một AWS load balancer. Nhưng yêu cầu thật nằm ở câu cuối: "You would like to auto scale your application based on the number of users that you have."

Cụm từ quyết định là "the number of users" — chứ không phải "memory intensive". Chi tiết "memory intensive" ở đây đóng vai trò mồi nhử: nó kéo người đọc về phía RAM, trong khi tiêu chí scale mà đề yêu cầu tường minh là số người dùng. Trong mọi câu dạng này, thứ cần chọn là metric phản ánh đúng đại lượng mà đề nói muốn scale theo, chứ không phải đại lượng mà ứng dụng "tiêu tốn nhiều".

Ràng buộc phụ thứ hai, dùng để loại tiếp: metric phải lấy được ở tầng load balancer, và load balancer là dịch vụ được AWS quản lý — bạn không có quyền truy cập vào hệ điều hành của nó.

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

D — Auto Scale based on the number of connections CloudWatch metric for the Load Balancer.

Elastic Load Balancing tự phát hành metric sang CloudWatch cho chính load balancer và cho các target của nó, không cần cài đặt gì thêm. Trong bộ metric đó có ActiveConnectionCount — tổng số kết nối TCP đang hoạt động từ client tới load balancer và từ load balancer tới target. Đây chính là đại lượng xấp xỉ sát nhất cho "số người dùng đang kết nối vào ứng dụng".

Vì metric này có sẵn trong CloudWatch, Auto Scaling group có thể gắn thẳng một scaling policy vào nó. Lưu ý một đặc điểm của metric ELB: chúng chỉ được báo cáo khi thực sự có request đi qua load balancer; không có lưu lượng thì không có điểm dữ liệu nào được phát ra. Khi có lưu lượng, ELB đo và gửi metric theo chu kỳ đều đặn.

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

A — Push the RAM usage as a custom metric for the Load Balancer and auto scale based on that. Đây là phương án gần đúng nhất về mặt kỹ thuật, và nó đúng ở một điểm: RAM đúng là không có sẵn trong CloudWatch nên muốn dùng thì phải đẩy lên như custom metric (thường qua CloudWatch agent trên EC2 instance). Nhưng nó hỏng ở chỗ chọn sai đại lượng: đề yêu cầu scale theo số người dùng, không phải theo mức tiêu thụ bộ nhớ. RAM là hệ quả gián tiếp, có thể cao vì cache, vì rò rỉ bộ nhớ, vì JVM giữ heap — không phản ánh trung thực số người đang dùng. Ngoài ra, gắn RAM usage như một metric "của load balancer" cũng lệch về mặt khái niệm: bộ nhớ là thuộc tính của instance, không phải của load balancer.

B — Deploy a script on the Load Balancer to expose the number of users as a custom CloudWatch metric. Phương án này chọn đúng đại lượng (số người dùng) nên rất dễ bị chọn nhầm, nhưng nó hỏng ở cơ chế: bạn không thể deploy script lên load balancer. ELB là dịch vụ managed, AWS vận hành phần hạ tầng bên dưới và không cho khách hàng truy cập vào máy chủ của nó để cài agent hay chạy script. Đây là một distractor cố ý. Thêm nữa, kể cả nếu làm được thì cũng thừa — ActiveConnectionCount đã có sẵn miễn phí, dựng custom metric để đo lại thứ đã có là công sức vô ích.

C — Use the RAM usage CloudWatch metric directly from the Load Balancer and auto scale based on that. Sai hai lần. Thứ nhất, giống A, nó chọn sai đại lượng — đề hỏi số người dùng chứ không hỏi bộ nhớ. Thứ hai, nó còn sai nặng hơn A ở chỗ giả định CloudWatch có sẵn metric RAM usage lấy "trực tiếp" từ load balancer. Không có metric như vậy: CloudWatch không thu thập mức sử dụng bộ nhớ ở tầng hypervisor, và load balancer cũng không phát hành metric bộ nhớ nào. So với A, phương án C vừa sai tiêu chí vừa sai về sự tồn tại của metric.

📌 Điểm cần nhớ

  • Đọc kỹ tiêu chí scale mà đề nêu tường minh. Những chi tiết như "memory intensive", "CPU heavy" thường là mồi nhử; đại lượng cần scale theo nằm ở câu "you would like to auto scale based on…".
  • ELB tự phát hành metric sang CloudWatch, không cần cấu hình thêm. ActiveConnectionCount là metric chuẩn để suy ra số người dùng/kết nối đồng thời. Metric ELB chỉ xuất hiện khi có lưu lượng thật đi qua.
  • Load balancer là dịch vụ managed — không cài agent, không chạy script lên nó được. Bất kỳ phương án nào nói "deploy … on the Load Balancer" đều loại được ngay, kể cả khi nó chọn đúng đại lượng cần đo.
  • Metric hệ điều hành như RAM không có sẵn trong CloudWatch, phải đẩy lên bằng custom metric từ chính instance. Phương án nào nói lấy RAM "trực tiếp" từ CloudWatch là sai về mặt tồn tại của metric.
Câu 92 Domain 2: Reliability and Business Continuity

A development team working for a gaming company has deployed an application on EC2 and needs CloudWatch monitoring for the relevant metrics with a resolution of 1 minute in order to set alarms that can rapidly react to changes.

As a SysOps Administrator, which of the following would you suggest as the MOST optimal solution?

  1. A

    Use AWS Lambda to retrieve metrics often using the application /health route

  2. B

    The development team should create and send a high-resolution custom metric

  3. C

    Enable EC2 detailed monitoring

  4. D

    Use Systems Manager

Xem giải thích

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

Một nhóm phát triển chạy ứng dụng trên EC2 và cần CloudWatch theo dõi các metric liên quan với độ phân giải 1 phút (resolution of 1 minute), mục đích là đặt alarm phản ứng nhanh với thay đổi. Câu hỏi yêu cầu chọn giải pháp MOST optimal.

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

  • "resolution of 1 minute" — đây chính xác là chu kỳ mà EC2 detailed monitoring cung cấp. Mặc định EC2 chạy basic monitoring với chu kỳ 5 phút; nhu cầu ở đây chỉ nhích lên 1 phút chứ không đòi hỏi mức giây.
  • "MOST optimal" — không hỏi "cách nào làm được", mà hỏi cách nào ít công sức nhất mà vẫn đạt yêu cầu. Có nhiều phương án về lý thuyết cho ra dữ liệu dày hơn, nhưng chúng đòi viết code, đẩy metric, tự vận hành.
  • "metrics ... on EC2" — đây là metric hạ tầng do chính EC2 phát ra (CPU, network, disk), không phải metric nghiệp vụ nội bộ ứng dụng.

Ghép ba manh mối lại: cần dữ liệu 1 phút, cho metric có sẵn của EC2, với nỗ lực tối thiểu → chỉ cần bật một tuỳ chọn có sẵn.

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

C — Enable EC2 detailed monitoring

Metric là khái niệm nền của CloudWatch: một tập điểm dữ liệu theo thứ tự thời gian, có thể hình dung như một biến được theo dõi và các điểm dữ liệu là giá trị của biến đó qua thời gian.

Mặc định, EC2 instance được bật basic monitoring. Có thể tuỳ chọn bật thêm detailed monitoring; sau khi bật, console EC2 hiển thị đồ thị giám sát với chu kỳ 1 phút cho instance đó. Đúng bằng con số đề bài yêu cầu, và bật bằng một thao tác cấu hình — không cần viết code, không cần tiến trình đẩy dữ liệu, không cần bảo trì gì thêm. Alarm dựng trên metric này sẽ đánh giá theo chu kỳ 1 phút nên phản ứng nhanh như nhóm phát triển mong muốn.

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

B — Tạo và gửi high-resolution custom metric — đây là phương án gần đúng nhất và cũng là bẫy chính. Custom metric hoàn toàn có thật: bạn tự publish metric của mình lên CloudWatch qua AWS CLI hoặc API, rồi xem đồ thị trong Management Console. Metric do các dịch vụ AWS phát ra mặc định là standard resolution; khi tự publish thì bạn được chọn standard hay high resolution, và high-resolution metric được CloudWatch lưu ở mức 1 giây, đọc lại được với period 1 giây, 5, 10, 30 giây hoặc bội số của 60 giây. Vấn đề: nó thừa và tốn công. Đề chỉ cần 1 phút, trong khi cách này bắt nhóm phát triển tự thu thập rồi tự đẩy metric lên CloudWatch qua API/CLI — thêm code, thêm chỗ hỏng. Làm được nhưng không phải MOST optimal.

A — Dùng AWS Lambda gọi route /health của ứng dụng thường xuyên — đây là distractor. Bạn không lấy được performance metric qua route /health, dù bằng Lambda hay bất cứ cách nào khác. Route health check chỉ trả về tình trạng sống/chết của ứng dụng, không phải nguồn metric hiệu năng để CloudWatch dựng chuỗi thời gian. Ngoài ra còn phải tự dựng lịch chạy Lambda và tự đẩy kết quả vào CloudWatch — vừa không giải quyết đúng vấn đề, vừa phức tạp.

D — Dùng Systems Manager — Systems Manager cho phép nhóm các tài nguyên như EC2 instance, S3 bucket hay RDS instance theo ứng dụng, xem dữ liệu vận hành để giám sát và xử lý sự cố, và thao tác trên nhóm tài nguyên đó. Nhưng đây là công cụ quản trị/vận hành, không phải công cụ thu thập metric cho CloudWatch. Bạn không dùng Systems Manager để tạo ra metric giám sát trên CloudWatch, nên nó không đáp ứng yêu cầu độ phân giải 1 phút của đề.

📌 Điểm cần nhớ

  • EC2 monitoring có hai mức: basic (mặc định, chu kỳ thưa hơn) và detailed (chu kỳ 1 phút). Đề nhắc con số "1 phút" cho metric EC2 → gần như luôn là detailed monitoring.
  • Phân biệt 1 phút và 1 giây: 1 phút = detailed monitoring, bật là xong. Mức giây mới cần high-resolution custom metric do bạn tự publish. Chọn nhầm hướng là dấu hiệu chưa đọc kỹ con số trong đề.
  • "MOST optimal" là tiêu chí loại trừ: khi nhiều phương án đều "làm được", ưu tiên cái dùng tính năng có sẵn bật bằng cấu hình, thay vì cái phải tự viết code thu thập và đẩy dữ liệu qua API/CLI.
  • Systems Manager không sinh metric CloudWatch — nó phục vụ nhóm tài nguyên, xem dữ liệu vận hành và thao tác hàng loạt. Thấy nó xuất hiện trong câu hỏi về metric/resolution thì gần như chắc là phương án nhiễu.
Câu 93 Chọn nhiều đáp án Domain 1: Monitoring, Logging, and Remediation

Your e-commerce website has a few really popular items that constitute 10% of your portfolio items in your RDS database but represent 90% of your traffic. Your database is starting to struggle with the read demand and your CTO tasked you with designing a solution to improve the read scalability on the database side.

What do you recommend? (Select two)

  1. A

    Setup an ElastiCache cluster

  2. B

    Setup an API gateway with cache enabled in front of your database

  3. C

    Setup Read Replicas

  4. D

    Setup a Multi-AZ RDS database

  5. E

    Setup a DAX cluster

Xem giải thích

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

Đề mô tả một website thương mại điện tử dùng RDS, trong đó 10% số mặt hàng hút tới 90% lưu lượng, và database đang đuối vì read demand. Nhiệm vụ được giao rất hẹp: "improve the read scalability on the database side" — cải thiện khả năng mở rộng đọc ở phía database.

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

  • "RDS database" — đây là cơ sở dữ liệu quan hệ, không phải DynamoDB. Cụm này loại thẳng mọi giải pháp chỉ gắn được với DynamoDB.
  • "read scalability... on the database side" — bài toán là đọc, không phải sẵn sàng cao (availability), và lớp giải quyết phải nằm ở tầng dữ liệu chứ không phải tầng API/web.

Thêm một chi tiết đáng chú ý: phân bố truy cập rất lệch (10% dữ liệu, 90% traffic). Đây chính là hình mẫu lý tưởng của một cache — tập dữ liệu nóng nhỏ, được đọc đi đọc lại liên tục, nên tỷ lệ cache hit sẽ rất cao.

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

Theo tệp, đáp án là A và C.

A — Setup an ElastiCache cluster. ElastiCache là in-memory data store (Redis hoặc Memcached) đặt trước RDS. Vì 90% truy vấn chỉ chạm vào 10% dữ liệu, phần lớn request đọc sẽ được phục vụ ngay từ bộ nhớ với độ trễ rất thấp và không bao giờ chạm tới RDS. Đây là cách giảm tải đọc trực tiếp và hiệu quả nhất với đúng kiểu phân bố traffic mà đề mô tả. ElastiCache dùng được cho cả relational database lẫn NoSQL database ở phía sau, nên nó hợp lệ với RDS.

C — Setup Read Replicas. RDS Read Replicas tạo thêm các DB instance sao chép bất đồng bộ từ instance gốc, và ứng dụng có thể trỏ truy vấn đọc sang các replica này. Đây chính là cơ chế AWS thiết kế riêng để scale out vượt giới hạn đọc của một DB instance đơn lẻ, hỗ trợ cho MySQL, MariaDB, PostgreSQL, Oracle và SQL Server. Nó xử lý được cả phần đọc không nằm trong tập dữ liệu nóng, tức là bổ sung cho ElastiCache chứ không trùng lặp.

Hai phương án này kết hợp tự nhiên: cache lo phần nóng, replica lo phần còn lại và phần cache miss.

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

B — API Gateway với cache bật, đặt trước database. Sai ở chỗ vị trí kiến trúc. API Gateway là dịch vụ ở tầng API, đứng trước web server trên EC2 hoặc trước hàm Lambda — nó không "đứng trước database" theo nghĩa nhận truy vấn database. Đây là distractor: cache của API Gateway là cache response HTTP, không phải cache kết quả truy vấn, và đề đã nói rõ giải pháp phải ở database side.

D — Setup a Multi-AZ RDS database. Đây là phương án gần đúng nhất và cũng là bẫy phổ biến nhất. Multi-AZ đúng là tạo thêm một instance ở Availability Zone khác, nhưng đó là standby instance phục vụ mục tiêu availability và durability: dữ liệu được sao chép đồng bộ, và bản standby được dùng để failover khi instance chính hỏng. Nó không nhận truy vấn đọc từ ứng dụng, nên không giúp gì cho read performance. Ghi nhớ cặp đối lập: Multi-AZ = high availability, Read Replica = read scalability.

E — Setup a DAX cluster. DAX (DynamoDB Accelerator) là caching layer in-memory, nhưng nó chỉ tương thích với DynamoDB — API và giao thức của nó gắn chặt với DynamoDB. Đề bài nói rõ database là RDS, tức là relational, nên DAX không cắm vào được. Phương án này hấp dẫn vì đúng "ý tưởng cache" nhưng sai "loại database".

📌 Điểm cần nhớ

  • Multi-AZ ≠ Read Replica. Multi-AZ giải quyết tính sẵn sàng (standby, replication đồng bộ, failover); Read Replica giải quyết khả năng mở rộng đọc (replication bất đồng bộ, nhận truy vấn đọc). Đề hỏi "read" thì chọn Read Replica.
  • Chọn cache theo loại database phía sau: ElastiCache cho relational database như RDS (và cả các trường hợp khác), DAX chỉ cho DynamoDB. Thấy "RDS" mà phương án là DAX thì loại ngay.
  • Traffic lệch mạnh (một phần nhỏ dữ liệu chiếm phần lớn request) là tín hiệu kinh điển của caching — tỷ lệ cache hit cao nên hiệu quả giảm tải rất lớn.
  • Đọc kỹ ràng buộc về tầng kiến trúc. "On the database side" loại bỏ những giải pháp cache ở tầng API/web như API Gateway caching, dù bản thân chúng vẫn là công cụ hợp lệ trong các bài toán khác.
  • Câu hỏi dạng "Select two" thường ghép một giải pháp cache với một giải pháp scale-out của chính engine database — hai hướng bổ sung nhau, không loại trừ nhau.
Câu 94 Domain 5: Networking and Content Delivery

Your data center generates tens of terabytes of data daily and has a cumulative historic data volume of 5PB. The data center is running short of storage as well as bandwidth infrastructure to store or transfer this data. Later you would like to analyze this data using Redshift or Athena, however, first you must clean it using a proprietary process running on EC2.

What's the optimal way of moving this data to the cloud?

  1. A

    Use Volume Gateway

  2. B

    Use AWS Data Migration

  3. C

    Use Snowball Edge

  4. D

    Use S3 transfer acceleration

Xem giải thích

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

Đề mô tả một data center có 5PB dữ liệu lịch sử và mỗi ngày sinh thêm hàng chục terabyte. Câu hỏi là: cách tối ưu để đưa khối dữ liệu này lên cloud là gì?

Cụm từ quyết định nằm ở câu thứ hai: "running short of storage as well as bandwidth infrastructure to store or transfer this data". Đây là ràng buộc phân biệt toàn bộ bốn phương án — data center không đủ băng thông đường truyền. Mọi phương án dựa trên việc đẩy dữ liệu qua Internet đều bị loại ngay từ ràng buộc này, bất kể chúng tối ưu đường truyền giỏi đến đâu.

Phần còn lại của đề ("analyze this data using Redshift or Athena", "clean it using a proprietary process running on EC2") là bối cảnh sau khi dữ liệu đã lên cloud, không phải điều đang được hỏi. Đây là bẫy đọc thường gặp: thấy Redshift/Athena rồi đi tìm phương án liên quan tới phân tích dữ liệu, trong khi câu hỏi chỉ hỏi mỗi việc moving this data to the cloud.

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

C — Use Snowball Edge là đáp án đúng theo tệp.

AWS Snowball thuộc AWS Snow Family, là thiết bị vật lý dùng cho việc di chuyển dữ liệu và tính toán tại biên. Điểm mấu chốt: dữ liệu được ghi vào thiết bị tại chỗ, rồi thiết bị được chuyển vật lý tới AWS — hoàn toàn không đụng tới đường truyền Internet của data center. Đó chính xác là thứ ràng buộc "thiếu băng thông" đòi hỏi.

Snowball Edge có hai biến thể:

  • Storage Optimized: block storage và object storage tương thích Amazon S3, 40 vCPU, thiên về lưu trữ tại chỗ và chuyển dữ liệu quy mô lớn.
  • Compute Optimized: 52 vCPU, block và object storage, tuỳ chọn thêm GPU — dành cho machine learning hay phân tích video trong môi trường mất kết nối.

Với khối lượng cỡ hàng chục TB tới nhiều PB, Storage Optimized là lựa chọn hợp lý; và với 5PB thì dùng nhiều thiết bị Snowball Edge để chuyển toàn bộ. Ngoài ra, Snowball Edge còn có sẵn vCPU, nên tiền xử lý cũng làm được ngay trên thiết bị trước khi dữ liệu về tới AWS.

Lưu ý cho phòng thi: thiết bị Snowball nguyên bản đã ngừng phục vụ, Snowball Edge Storage Optimized giờ là thiết bị chính cho việc chuyển dữ liệu. Đề thi vẫn có thể nhắc tên "Snowball" — chỉ cần nhớ bản gốc có 80TB dung lượng.

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

A — Use Volume Gateway. Đây là phương án gần đúng nhất, vì Storage Gateway đúng là dịch vụ lai giữa on-premises và cloud. Volume Gateway trình bày các volume block dạng iSCSI cho ứng dụng tại chỗ, giữ cache cục bộ (hoặc full volume tại chỗ) trong khi lưu bản sao đầy đủ lên AWS, và hỗ trợ EBS Snapshot cho backup, disaster recovery, migration. Chỗ nó hỏng: việc đồng bộ bản sao lên AWS vẫn đi qua đường truyền mạng. Với 5PB và hàng chục TB phát sinh mỗi ngày trên một hạ tầng đã thiếu băng thông, Volume Gateway không giải quyết được nút thắt — nó chỉ đổi giao diện lưu trữ chứ không đổi cách dữ liệu đi lên cloud.

B — Use AWS Data Migration. Ở đây nói tới AWS Database Migration Service — dịch vụ chuyển database sang AWS nhanh và an toàn, giữ database nguồn hoạt động bình thường trong lúc chuyển nên hạn chế downtime cho ứng dụng phụ thuộc. Hai vấn đề: bài toán ở đây là khối dữ liệu thô đợi làm sạch bằng quy trình riêng trên EC2 rồi mới phân tích, không phải một database cần chuyển; và quan trọng hơn, DMS vẫn truyền dữ liệu qua mạng, nên vướng đúng ràng buộc thiếu băng thông.

D — Use S3 transfer acceleration. S3 Transfer Acceleration tăng tốc truyền nội dung lên/xuống Amazon S3 đáng kể với các object lớn đi đường dài, bằng cách tận dụng mạng edge location phân bố toàn cầu của Amazon CloudFront: dữ liệu tới edge location gần nhất rồi đi tiếp tới Amazon S3 qua đường mạng đã tối ưu. Nhưng nó tối ưu chặng đường, không tạo thêm băng thông ở đầu data center. Chặng nghẽn nằm ngay tại chỗ khách hàng, nên tăng tốc đường dài không cứu được — phương án bị loại vì đúng ràng buộc đó.

📌 Điểm cần nhớ

  • Thấy cụm "insufficient / limited bandwidth" kèm khối lượng cỡ TB tới PB → nghĩ ngay tới AWS Snow Family (Snowball Edge): chuyển dữ liệu bằng thiết bị vật lý, không phụ thuộc đường truyền.
  • Ba phương án còn lại — Volume Gateway, AWS DMS, S3 Transfer Acceleration — dù khác nhau về mục đích, đều chung một điểm chết: dữ liệu vẫn phải chảy qua mạng. Khi ràng buộc là băng thông, cả nhóm bị loại cùng lúc.
  • S3 Transfer Acceleration tối ưu độ trễ đường dài qua edge location của CloudFront, không phải dung lượng đường truyền tại chỗ. Đừng nhầm hai thứ này.
  • AWS DMS là công cụ chuyên cho database, không phải cho khối dữ liệu thô chờ xử lý. Đọc kỹ bản chất dữ liệu trong đề trước khi chọn.
  • Các chi tiết như Redshift, Athena, EC2 trong đề chỉ là bối cảnh sau di chuyển; câu hỏi thật chỉ hỏi cách đưa dữ liệu lên cloud. Xác định đúng động từ chính của câu hỏi trước khi so sánh phương án.
Câu 95 Chọn nhiều đáp án Domain 3: Deployment, Provisioning, and Automation

You want a small website on EC2 instances under an ASG that has a target size varying between 2 and 10 instances. Your ASG has a policy to scale out when your target CPU Utilization is above 75%. It has been over 3 hours that the CPU Utilization of your ASG is 90% and still, no scaling out actions have taken place.

What are the most likely reasons for this? (Select two)

  1. A

    Your ASG Launch process has been suspended

  2. B

    AWS does not have the capacity for more of the requested EC2 instance types

  3. C

    Your ASG is at maximum capacity already

  4. D

    The warmup period of the EC2 instances has not elapsed yet

  5. E

    Your ASG AZRebalance process has been suspended

Xem giải thích

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

Đề mô tả một website nhỏ chạy trên EC2 instances trong một Auto Scaling group (ASG) có kích thước dao động giữa 2 và 10 instances, với scaling policy scale out khi CPU Utilization vượt 75%. Thực tế CPU đã ở mức 90% suốt hơn 3 tiếng mà không có hành động scale out nào diễn ra. Câu hỏi yêu cầu chọn hai nguyên nhân khả dĩ nhất.

Có hai cụm từ quyết định đáp án:

  • "varying between 2 and 10 instances" — đây là giới hạn min/max của ASG. Nếu group đã chạm trần, alarm có kêu cũng không có chỗ để thêm instance.
  • "It has been over 3 hours ... and still, no scaling out actions have taken place" — chữ no scaling out actions rất quan trọng: ASG thậm chí không hề cố gắng launch instance. Đây không phải trường hợp "đã thử nhưng launch thất bại", cũng không phải "đang chờ instance mới ổn định". Khoảng thời gian 3 giờ cũng đủ dài để loại mọi giải thích dựa trên độ trễ tạm thời (cooldown, warmup).

Vậy nguyên nhân phải là thứ khiến ASG về mặt cấu hình không được phép hoặc không thể tăng capacity, chứ không phải thứ chỉ làm chậm quá trình.

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

A — Launch process của ASG đã bị suspend. EC2 Auto Scaling có hai process chính là Launch và Terminate: Launch thêm instance vào group (tăng capacity), Terminate gỡ instance ra (giảm capacity). Khi Launch process bị suspend, ASG không scale out cho bất kỳ alarm nào, kể cả các scheduled action. CloudWatch alarm vẫn chuyển sang trạng thái ALARM, policy vẫn được kích hoạt, nhưng bước launch instance thực tế bị chặn — khớp chính xác với hiện tượng "không có scaling out action nào" kéo dài.

C — ASG đã ở maximum capacity. Kích thước ASG được cấu hình bằng bộ ba minimum, maximum và desired capacity. Scaling policy chỉ điều chỉnh desired capacity, và giá trị này không bao giờ vượt quá maximum. Với đề bài, max là 10; nếu group đang chạy đủ 10 instances thì dù CPU 90% hay 100%, ASG cũng không thể thêm instance nào nữa. Đây là nguyên nhân kinh điển của "alarm kêu mà không có gì xảy ra".

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

B — AWS không còn capacity cho loại EC2 instance được yêu cầu. Đây là phương án gần đúng nhất và dễ chọn nhầm. Vấn đề: nếu thiếu capacity thì ASG vẫn cố launch instance rồi mới thất bại, và bạn sẽ thấy lỗi rõ ràng dạng "Your requested instance type is not supported in your requested Availability Zone... Launching EC2 instance failed" trong activity history. Nghĩa là đã có scaling out action, chỉ là nó hỏng — trái với mô tả "no scaling out actions have taken place". Đề bài cũng nói đây là website nhỏ với tối đa 10 instances, quy mô này rất khó rơi vào tình trạng cạn capacity suốt 3 giờ.

D — Warmup period của EC2 instances chưa hết. Warmup period là số giây mà một instance mới launch cần để "ấm lên"; trong thời gian đó instance không được tính vào aggregated metrics của ASG. Lập luận này tự phản bác chính nó: muốn có instance đang trong warmup thì trước hết phải có instance được launch, tức là scale out đã xảy ra. Hơn nữa, vì instance đang warmup không đóng góp vào metric tổng hợp, CPU trung bình vẫn cao và ASG vẫn tiếp tục launch thêm. Warmup làm chậm chứ không đóng băng hoàn toàn việc scale out trong 3 giờ.

E — AZRebalance process đã bị suspend. AZRebalance chỉ lo việc phân bố lại instances giữa các Availability Zone sau một số sự kiện nhất định. Suspend nó khiến ASG không chủ động tái cân bằng, nhưng khi có scale-out hoặc scale-in thực sự thì quá trình scaling vẫn cố gắng cân bằng giữa các AZ. Nó hoàn toàn không ngăn được việc thêm instance, nên không giải thích được hiện tượng trong đề.

📌 Điểm cần nhớ

  • Scaling policy chỉ điều chỉnh desired capacity trong khoảng min–max. Chạm maximum là scale out dừng lại, không có lỗi nào được báo — luôn kiểm tra max capacity đầu tiên khi ASG "không phản ứng".
  • Phân biệt "không có scaling action" với "scaling action thất bại". Suspend Launch process hoặc chạm max → activity history trống. Hết capacity, sai launch template, thiếu quyền IAM → có activity nhưng kèm thông báo lỗi. Đề bài dùng cách diễn đạt này để phân loại phương án.
  • Suspend process nào thì mất đúng khả năng đó: Launch chặn scale out, Terminate chặn scale in, còn các process phụ như AZRebalance chỉ ảnh hưởng việc tái cân bằng chứ không chặn thay đổi capacity.
  • Warmup và cooldown là độ trễ tính bằng giây/phút, không phải nguyên nhân của sự cố kéo dài hàng giờ. Instance trong warmup còn bị loại khỏi aggregated metrics nên càng thúc đẩy scale out thêm.
Câu 96 Domain 1: Monitoring, Logging, and Remediation

As part of monitoring your global e-learning website, you have decided to implement a CloudWatch dashboard. The most important metric to monitor is the number of users that are connected over time, in each region.

Which option should you opt for?

  1. A

    Create one CloudWatch dashboard and add a special widget of type multi-region graph

  2. B

    Create one CloudWatch dashboard of the metric, and tick the option "global metric". Use the CloudWatch Dashboard region dropdown to change the graph on demand

  3. C

    Create one CloudWatch dashboard and add a graph per region using the region selector in the top right corner of the AWS Console

  4. D

    Create one CloudWatch dashboard per region

Xem giải thích

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

Đề mô tả một website e-learning toàn cầu, và nói rõ chỉ số quan trọng nhất cần theo dõi là số người dùng đang kết nối theo thời gian, "in each region" — tức là số liệu này tồn tại riêng ở nhiều Region khác nhau.

Cụm từ quyết định đáp án là "in each region" kết hợp với "a CloudWatch dashboard" (số ít). Người ra đề muốn kiểm tra đúng một kiến thức: bạn có biết một CloudWatch dashboard hiển thị được metric đến từ nhiều Region trên cùng một trang hay không. Bốn phương án chính là bốn cách trả lời cho câu hỏi ngầm đó: một cách đúng, một cách sai vì tách dashboard không cần thiết, và hai cách sai vì bịa ra tính năng không tồn tại.

Cần chú ý bản chất của metric trong CloudWatch: metric là dữ liệu theo từng Region, không có kho metric "toàn cầu" gộp sẵn. Vì vậy muốn nhìn cả thế giới trên một màn hình thì phải đưa nhiều nguồn dữ liệu vào cùng một dashboard, chứ không có công tắc nào biến metric của một Region thành metric toàn cầu.

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

Đáp án đúng theo tệp là C — Create one CloudWatch dashboard and add a graph per region using the region selector in the top right corner of the AWS Console.

CloudWatch dashboard là trang tuỳ biến trong CloudWatch console, dùng để xem tài nguyên trong một khung nhìn duy nhất, kể cả tài nguyên nằm rải ở nhiều Region khác nhau. Cách làm đúng quy trình là: khi thêm từng widget vào dashboard, bạn dùng region selector ở góc trên bên phải của AWS Console để chuyển sang Region cần lấy metric, chọn metric ở đó rồi thêm vào dashboard. Lặp lại thao tác này cho từng Region, kết quả là một dashboard duy nhất chứa nhiều graph, mỗi graph gắn với một Region.

Điểm mấu chốt: mỗi widget trong dashboard ghi nhớ Region nguồn của nó, nên sau khi lưu, dashboard hiển thị đủ số liệu của mọi Region cùng lúc mà không phải chuyển qua chuyển lại. Đây đúng là thứ đề bài cần — theo dõi số người dùng kết nối ở từng Region theo thời gian, trên một màn hình.

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

A — thêm một widget đặc biệt kiểu "multi-region graph": sai vì không tồn tại loại widget nào tên như vậy trong CloudWatch. Đây là phương án gài bẫy, dựa vào việc người học biết rằng dashboard có xem được nhiều Region rồi suy ra chắc phải có một widget chuyên dụng. Cơ chế thật nằm ở chỗ khác: từng widget bình thường tự mang Region của nó, không cần loại widget riêng.

B — tick tuỳ chọn "global metric" rồi dùng region dropdown của dashboard để đổi graph theo yêu cầu: sai ở hai lớp. Thứ nhất, không có tuỳ chọn "global metric" khi tạo graph — đây cũng là distractor. Thứ hai, kể cả bỏ qua chi tiết bịa đó, mô tả "đổi graph on demand" cũng đi ngược yêu cầu của đề: đề cần thấy số liệu từng Region trên dashboard, còn phương án này chỉ cho xem một Region tại một thời điểm, muốn xem Region khác lại phải bấm đổi. Đây là phương án gần đúng nhất về mặt ý tưởng (vẫn là một dashboard), nhưng hỏng ở cả tên tính năng lẫn cách trình bày dữ liệu.

D — tạo một CloudWatch dashboard cho mỗi Region: đây là phương án "chạy được nhưng không tối ưu", và bị loại vì mỗi dashboard vốn đã hỗ trợ tài nguyên từ nhiều Region, nên chia nhỏ ra là tự tay vứt bỏ khả năng có sẵn. Hậu quả thực tế: người vận hành phải mở nhiều dashboard mới nắm được bức tranh toàn cầu, khó so sánh Region này với Region kia, và tăng chi phí bảo trì khi cần sửa. Đề còn nói rõ mục tiêu là theo dõi một website toàn cầu, tức là muốn cái nhìn hợp nhất.

📌 Điểm cần nhớ

  • Một CloudWatch dashboard xem được metric từ nhiều Region (và nhiều account nếu được cấu hình). Thấy phương án nào bảo "mỗi Region một dashboard" thì gần như chắc chắn đó là bẫy.
  • Cách hợp nhất nhiều Region là đổi Region bằng region selector của Console khi thêm từng widget; widget giữ Region nguồn của nó sau khi lưu.
  • Metric của CloudWatch là dữ liệu theo Region, không có khái niệm "global metric" bật bằng một ô tick, cũng không có widget "multi-region graph". Tên tính năng nghe quá tiện lợi và quá đúng ý đề thường là distractor.
  • Đọc kỹ số ít/số nhiều trong đề ("one dashboard", "in each region"): nó thường là ràng buộc phân biệt giữa phương án hợp nhất và phương án chia nhỏ.
Câu 97 Domain 4: Security and Compliance

How can you enforce encryption on all the files uploaded into your example S3 bucket?

  1. A

    Use the following S3 bucket policy:

    {
        "Statement":[
            {
                "Action": "s3:*",
                "Effect":"Deny",
                "Principal": "*",
                "Resource":"arn:aws:s3:::bucketname/*",
                "Condition":{
                    "Bool":
                    { "aws:SecureTransport": false }
                }
            }
        ]
    }
    
  2. B

    Use an encrypted CloudFront distribution in front of your S3 bucket

  3. C

    Using the "Default Encryption" setting in AWS S3

  4. D

    Use the following S3 bucket policy:

    {
        "Statement":[
            {
                "Action": "s3:*",
                "Effect":"Deny",
                "Principal": "*",
                "Resource":"arn:aws:s3:::bucketname/*",
                "Condition":{
                    "Bool":
                    { "aws:SecureTransport": true }
                }
            }
        ]
    }
    
Xem giải thích

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

Đề hỏi: làm thế nào để bắt buộc mã hoá cho tất cả các file được tải lên một S3 bucket.

Cụm từ quyết định là "enforce encryption on all the files uploaded" — tức là mã hoá dữ liệu nằm trong bucket (encryption at rest), và phải áp dụng cho mọi object mới, không phụ thuộc vào việc client có nhớ khai báo header mã hoá hay không.

Đây chính là chỗ bẫy: hai phương án A và D đều là bucket policy có Condition trên aws:SecureTransport. Khoá điều kiện đó nói về giao thức truyền tải (HTTP hay HTTPS), tức là mã hoá on the wire / in transit, hoàn toàn khác với mã hoá at rest mà đề đang hỏi. Nhận ra aws:SecureTransport = in-transit là đã loại được một nửa số phương án.

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

C — Using the "Default Encryption" setting in AWS S3.

Amazon S3 default encryption đặt hành vi mã hoá mặc định ở cấp bucket: mọi object mới được lưu vào bucket đó đều được mã hoá khi ghi xuống đĩa, bằng server-side encryption với khoá do S3 quản lý (SSE-S3) hoặc với CMK trong AWS KMS (SSE-KMS).

Điểm mấu chốt khiến nó "enforce" được: việc mã hoá do chính S3 thực hiện ở phía server, không cần client gửi kèm header mã hoá nào. S3 mã hoá object trước khi lưu và tự giải mã khi người dùng tải về, nên với ứng dụng thì quá trình này trong suốt. Đó đúng là "mã hoá cho tất cả file upload", đúng lớp (at rest) và đúng phạm vi (mọi object mới trong bucket).

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

A — Bucket policy Deny khi "aws:SecureTransport": false.

Đây là phương án gần đúng nhất và là distractor mạnh nhất, vì bản thân policy này viết đúng ngữ pháp và có ích trong thực tế: nó từ chối mọi request đến bucket đi bằng HTTP, tức là ép client phải dùng HTTPS. Nhưng nó hỏng ở chỗ sai lớp bảo vệ: nó chỉ đảm bảo dữ liệu được mã hoá trên đường truyền. Một file đi qua HTTPS vẫn có thể được ghi xuống S3 ở dạng không mã hoá at rest. Nó không hề bắt buộc SSE-S3 hay SSE-KMS, nên không trả lời được câu hỏi của đề.

D — Bucket policy Deny khi "aws:SecureTransport": true.

Cùng loại sai lầm với A, nhưng còn tệ hơn vì logic bị đảo ngược: điều kiện true nghĩa là từ chối chính những request đi bằng HTTPS, và vô tình cho phép HTTP đi qua. Nếu áp dụng thật, đây là policy phản tác dụng về mặt bảo mật. Dù vậy, lý do loại nó vẫn giữ nguyên: aws:SecureTransport không dính dáng gì tới mã hoá at rest.

B — Use an encrypted CloudFront distribution in front of your S3 bucket.

CloudFront là CDN đứng trước bucket, lo phần phân phối nội dung ra ngoài cho người đọc. Việc cấu hình mã hoá cho CloudFront (in-transit tới viewer, hoặc mã hoá ở phía field-level) không áp đặt bất kỳ hành vi mã hoá nào lên object nằm trong S3. Ngoài ra, luồng ở đây là upload vào bucket, còn CloudFront chủ yếu nằm trên đường đọc ra. Đây là distractor thuần tuý.

📌 Điểm cần nhớ

  • Phân biệt hai lớp mã hoá trước khi chọn: at rest (dữ liệu nằm trong S3) và in transit (dữ liệu trên đường truyền). Đề hỏi lớp nào thì chọn công cụ của lớp đó.
  • Thấy aws:SecureTransport trong bucket policy thì hiểu ngay: đó là điều kiện về HTTPS, thuộc in-transit — không bao giờ là lời giải cho yêu cầu mã hoá at rest.
  • Default encryption ở cấp bucket là cách để mọi object mới được mã hoá mà không phụ thuộc vào client; đó chính là ý nghĩa của chữ "enforce" trong đề.
  • Khi đọc một bucket policy trong đề, hãy kiểm tra cả giá trị của điều kiện, không chỉ tên khoá: false và true trong cùng một Condition cho ra hai hành vi ngược nhau, và đề hay dựng cặp phương án chỉ khác nhau đúng chỗ đó.
  • CloudFront giải quyết bài toán phân phối nội dung ra ngoài, không phải bài toán ràng buộc cách S3 lưu object.
Câu 98 Domain 4: Security and Compliance

The security team at your travel company has detected a series of malicious attacks on port 846. As such, it needs to ensure that all your security groups are compliant with having this port closed, at all times. In the event such a port is being opened, you need to receive a notification as soon as possible.

Which service can help you with achieving such task?

  1. A

    AWS WAF

  2. B

    AWS Config

  3. C

    AWS GuardDuty

  4. D

    AWS Shield

Xem giải thích

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

Đề mô tả một tình huống rất cụ thể: đội bảo mật phát hiện tấn công nhắm vào port 846, và họ cần bảo đảm rằng mọi security group đều đóng port này, ở mọi thời điểm. Nếu có ai đó mở port ra, phải nhận được thông báo càng sớm càng tốt.

Cụm từ quyết định đáp án là "ensure that all your security groups are compliant" kèm theo "at all times". Hai chi tiết này ghim câu hỏi vào đúng một loại bài toán:

  • Đối tượng cần theo dõi là cấu hình của resource (security group rule), chứ không phải lưu lượng mạng, không phải request HTTP, không phải hành vi đáng ngờ của kẻ tấn công.
  • Yêu cầu là liên tục đánh giá tuân thủ (compliance) so với một quy tắc do bạn đặt ra, rồi phát cảnh báo khi lệch chuẩn.

Nói cách khác, đề không hỏi "làm sao chặn được cuộc tấn công", mà hỏi "làm sao biết được cấu hình của mình đã bị lệch khỏi chuẩn". Đây là bài toán configuration compliance, và trong danh sách bốn phương án chỉ có đúng một dịch vụ làm việc đó.

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

Đáp án là B — AWS Config.

AWS Config là dịch vụ chuyên để assess, audit và evaluate cấu hình của các AWS resource. Nó ghi lại cấu hình của resource theo thời gian, lưu lịch sử thay đổi và mối quan hệ giữa các resource, nhờ đó trả lời được câu hỏi kiểu "resource này trông như thế nào tại thời điểm X". Quan trọng hơn với đề bài: Config cho phép định nghĩa rule đánh giá tuân thủ, và mỗi resource sẽ được chấm là COMPLIANT hay NON_COMPLIANT so với rule đó. Một rule kiểm tra "security group không được mở port 846" chính là kiểu rule này.

Phần cảnh báo được ghép vào bằng cách dùng một EventBridge rule với custom event pattern và input transformer để bắt kết quả đánh giá NON_COMPLIANT từ AWS Config, rồi đẩy sang một Amazon SNS topic để gửi thông báo. Chuỗi này đáp ứng đúng cả hai vế của đề: giám sát liên tục cấu hình security group, và báo ngay khi phát hiện vi phạm.

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

A — AWS WAF. WAF là web application firewall, hoạt động ở tầng ứng dụng: bạn viết rule để allow, block hoặc count các web request dựa trên IP, HTTP header, HTTP body, URI string, hoặc các mẫu tấn công như SQL injection và cross-site scripting. Nó xử lý nội dung request đi vào ứng dụng web, hoàn toàn không nhìn thấy cấu hình security group. WAF không thể phát hiện và cũng không thể gửi thông báo khi port 846 bị mở.

C — AWS GuardDuty. Đây là phương án gần đúng nhất và cũng dễ bẫy nhất, vì đề mở đầu bằng "malicious attacks" — nghe rất giống việc của một threat detection service. GuardDuty đúng là giám sát hoạt động độc hại và hành vi trái phép trong tài khoản AWS, phân tích sự kiện từ CloudTrail (hoạt động của user và API), VPC Flow Logs (dữ liệu lưu lượng mạng) và DNS logs (mẫu truy vấn tên miền). Nhưng chỗ nó hỏng so với đề bài: GuardDuty phát hiện hành vi, không đánh giá trạng thái cấu hình so với một chuẩn tuân thủ do bạn tự định nghĩa. Đề không hỏi "có ai đang tấn công không", mà hỏi "security group của tôi có còn đóng port 846 không". GuardDuty không dùng để phát hiện và thông báo về khoảng hở bảo mật kiểu port 846 bị mở.

D — AWS Shield. Shield là dịch vụ chống DDoS được quản lý, bảo vệ ứng dụng chạy trên AWS bằng detection luôn bật và các biện pháp giảm thiểu inline tự động, nhằm giảm downtime và độ trễ khi bị tấn công từ chối dịch vụ. Nó xử lý lưu lượng tấn công, không kiểm tra và không báo cáo về cấu hình security group. Cũng như hai phương án trên, Shield không dùng được để phát hiện và thông báo khi port 846 bị mở.

📌 Điểm cần nhớ

  • Thấy từ khoá "compliant" / "compliance" / "at all times" gắn với cấu hình resource (security group, S3 bucket, EBS volume…) thì nghĩ ngay tới AWS Config. Đó là dịch vụ duy nhất trong nhóm này chấm resource theo chuẩn COMPLIANT / NON_COMPLIANT.
  • Phân biệt theo đối tượng bị giám sát, không theo không khí của đề: Config nhìn cấu hình, GuardDuty nhìn hành vi và log, WAF nhìn web request, Shield nhìn lưu lượng DDoS. Đề nhắc "attack" không có nghĩa đáp án phải là dịch vụ phòng thủ tấn công.
  • Mẫu kiến trúc cảnh báo cần thuộc: AWS Config rule → EventBridge (bắt sự kiện NON_COMPLIANT) → SNS topic. Config tự nó đánh giá, còn phần "thông báo ngay" là do EventBridge và SNS ghép vào.
  • AWS Config còn giữ lịch sử cấu hình theo thời gian, nên ngoài việc cảnh báo, nó trả lời được câu hỏi kiểu "resource này có cấu hình gì tại thời điểm nào" — một dấu hiệu nhận biết khác của Config trong đề thi.
Câu 99 Domain 5: Networking and Content Delivery

Which of the following services allows for an in-place switch from unencrypted to encrypted without impacting existing operations?

  1. A

    S3

  2. B

    EFS

  3. C

    EBS

  4. D

    RDS

Xem giải thích

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

Đề hỏi: dịch vụ nào cho phép chuyển từ trạng thái chưa mã hoá sang có mã hoá ngay tại chỗ, mà không làm gián đoạn hoạt động đang chạy.

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

  • "in-place switch" — bật mã hoá ngay trên chính tài nguyên đang dùng, không tạo tài nguyên mới rồi chép dữ liệu sang.
  • "from unencrypted to encrypted" — điểm xuất phát là tài nguyên đã tồn tại và đang ở trạng thái không mã hoá.
  • "without impacting existing operations" — ứng dụng đang đọc/ghi vẫn chạy bình thường, không có bước dừng, không có cửa sổ bảo trì.

Cả bốn phương án đều là dịch vụ lưu trữ có hỗ trợ mã hoá at-rest bằng KMS, nên nếu chỉ hỏi "dịch vụ nào mã hoá được" thì cả bốn đều đúng. Ràng buộc phân biệt nằm ở chỗ mã hoá được bật ở cấp tài nguyên lúc tạo (không đổi được về sau) hay bật ở cấp cấu hình, áp cho dữ liệu ghi mới.

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

A — S3. S3 có tuỳ chọn default encryption đặt ở mức bucket. Bật lên là xong: từ thời điểm đó, mọi object mới ghi vào bucket sẽ được server-side encryption xử lý (SSE-S3 hoặc SSE-KMS). S3 mã hoá object trước khi ghi xuống đĩa và giải mã khi trả về, hoàn toàn trong suốt với ứng dụng.

Điểm mấu chốt khớp đúng với đề: bucket không phải tạo lại, tên bucket không đổi, ARN không đổi, ứng dụng không phải sửa endpoint hay chuỗi kết nối, và không có gián đoạn. Đây chính là "in-place switch without impacting existing operations".

Đánh đổi cần biết: các object đã có sẵn trong bucket trước khi bật default encryption thì trạng thái mã hoá của chúng không thay đổi. Bật cờ này không đi mã hoá ngược dữ liệu cũ. Nhưng đề chỉ hỏi về khả năng chuyển đổi tại chỗ không ảnh hưởng vận hành, chứ không đòi mã hoá toàn bộ dữ liệu lịch sử — nên S3 vẫn là phương án duy nhất thoả.

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

B — EFS. Mã hoá at-rest của EFS chỉ chọn được lúc tạo file system. File system đã tạo rồi thì không sửa từ unencrypted sang encrypted, và cũng không sửa ngược lại. Muốn có bản mã hoá thì phải tạo file system mới rồi chép dữ liệu sang — tức là không phải in-place, và bước chép dữ liệu + đổi mount target chắc chắn động đến vận hành.

C — EBS. Đây là phương án gần đúng nhất và cũng dễ mắc bẫy nhất, vì EBS có tuỳ chọn "encryption by default" nghe rất giống default encryption của S3. Khác biệt: cờ đó chỉ áp cho volume và snapshot được tạo mới, còn volume đang gắn vào instance thì không có cách nào bật mã hoá trực tiếp. Quy trình thực tế là tạo snapshot → tạo bản sao snapshot có mã hoá → tạo volume mới từ đó → gắn lại vào instance. Volume mới là một tài nguyên khác, có volume ID khác, và bước tráo volume kéo theo gián đoạn — trượt cả "in-place" lẫn "without impacting existing operations".

D — RDS. Mã hoá của DB instance chỉ bật được lúc tạo instance, không bật được sau đó. Cách vòng duy nhất là: chụp snapshot của instance → tạo bản sao snapshot có mã hoá → restore ra một DB instance mới. Instance mới có endpoint khác, ứng dụng phải trỏ lại chuỗi kết nối, và quá trình restore mất thời gian. Đây là migration chứ không phải chuyển đổi tại chỗ.

📌 Điểm cần nhớ

  • Phân nhóm cho nhanh: S3 bật mã hoá ở cấp cấu hình bucket, áp cho dữ liệu ghi mới; còn EBS, EFS, RDS mã hoá là thuộc tính cố định tại thời điểm tạo tài nguyên.
  • Với EBS và RDS, con đường thêm mã hoá cho dữ liệu đã có luôn đi qua snapshot → copy snapshot có mã hoá → tạo tài nguyên mới. Nhìn thấy chuỗi bước đó là biết ngay không phải in-place.
  • EFS còn ngặt hơn EBS/RDS ở chỗ không có cả lối vòng bằng snapshot mã hoá — muốn đổi thì tạo file system mới và chép dữ liệu.
  • Đọc kỹ vế "in-place" và "without impacting existing operations". Nếu đề chỉ hỏi "làm sao có được bản mã hoá của dữ liệu này" thì EBS và RDS đều làm được; chính hai ràng buộc đó mới loại chúng.
  • Nhớ luôn giới hạn của S3 default encryption: nó không mã hoá ngược object cũ. Câu nào yêu cầu toàn bộ dữ liệu hiện có phải được mã hoá thì bật cờ này là chưa đủ.
Câu 100 Domain 3: Deployment, Provisioning, and Automation

You have an ASG in which the Terminate process is suspended. Your ASG goes into a rebalance, what will happen?

  1. A

    The rebalance will start and the EC2 instances will launch, the ASG will grow up to 10% of its size. The instances will not get terminated

  2. B

    The rebalance will start and the EC2 instances will fail to get launched

  3. C

    The rebalance will not start, as the terminate process is suspended

  4. D

    The rebalance will start and the EC2 instances will launch, the ASG will grow up to 10% of its size. After a bit, the instances will get terminated as the ASG is at overcapacity

Xem giải thích

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

Đề mô tả một Auto Scaling group (ASG) đang bị suspend process Terminate, rồi hỏi chuyện gì xảy ra khi ASG thực hiện rebalance (tức tiến trình AZRebalance).

Cụm từ quyết định đáp án là "the Terminate process is suspended" đặt cạnh hành vi rebalance. Muốn trả lời đúng phải nắm hai điều tách bạch:

  • AZRebalance và Terminate là hai process riêng biệt trong danh sách các process của ASG. Suspend cái này không suspend cái kia — AZRebalance vẫn chạy bình thường.
  • Cách AZRebalance làm việc: nó launch trước, terminate sau. ASG khởi tạo instance ở Availability Zone đang thiếu trước, rồi mới chấm dứt instance ở AZ đang thừa. Chính vì thứ tự này mà trong lúc rebalance, ASG được phép vượt tạm thời maximum size khoảng 10%.

Ghép hai điều đó lại: bước "launch" vẫn diễn ra được, còn bước "terminate" bị chặn vì process Terminate đang bị suspend. Kết quả là ASG phình lên và ở nguyên đó.

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

Đáp án đúng theo tệp là A — rebalance vẫn khởi động, EC2 instance vẫn được launch, ASG phình lên tới khoảng 10% kích thước, và các instance sẽ không bị terminate.

Đây đúng là hành vi được mô tả trong tài liệu về suspend/resume process: khi Terminate bị suspend, ASG không scale in cho các alarm hay scheduled action. Và khi Terminate bị suspend trong lúc AZRebalance vẫn active thì AZRebalance không hoạt động trọn vẹn — nó launch được instance mới nhưng không chấm dứt được instance cũ. Hệ quả trực tiếp: ASG có thể lớn hơn maximum size của nó tới khoảng 10 phần trăm, vì mức vượt đó vốn được cho phép tạm thời trong hoạt động rebalancing.

Điểm mấu chốt là phần vượt hạn mức này bình thường chỉ tạm thời — nó tồn tại đúng khoảng thời gian giữa lúc launch xong và lúc terminate. Suspend Terminate đã cắt mất vế sau, nên trạng thái "tạm thời" trở thành trạng thái đứng yên.

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

B — rebalance khởi động nhưng EC2 instance không launch được. Nhầm lẫn giữa Launch và Terminate. Process bị suspend ở đây là Terminate, còn Launch vẫn đang active nên ASG hoàn toàn tạo được instance mới. Nếu đề nói Launch bị suspend thì mới có chuyện instance không lên được — nhưng khi đó ASG cũng không thể phình ra 10%.

C — rebalance không khởi động vì Terminate đang bị suspend. Đây là phương án gần đúng nhất về mặt trực giác và cũng là bẫy chính. Nó giả định các process của ASG phụ thuộc nhau, kiểu suspend một cái là dây chuyền dừng theo. Thực tế AZRebalance là process độc lập, chỉ bị dừng khi chính nó bị suspend. Ở đây nó vẫn chạy — chỉ là chạy không trọn vẹn, dừng lại ở nửa đầu (launch) và không đi tiếp được nửa sau (terminate). "Chạy nửa vời" khác hẳn "không chạy", và chính sự khác biệt đó tạo ra phần dung lượng dư thừa nằm lại.

D — rebalance khởi động, instance launch, ASG phình 10%, rồi một lúc sau instance bị terminate vì ASG quá tải. Phương án này mô tả đúng hành vi bình thường của AZRebalance khi không có process nào bị suspend — và đó chính là lý do nó sai trong ngữ cảnh đề bài. Đề đã nói rõ Terminate bị suspend, tức là đúng cái bước "một lúc sau instance bị terminate" đã bị vô hiệu hoá. Ai đọc lướt qua ràng buộc suspend sẽ chọn D vì nó nghe quen thuộc và hợp lý.

📌 Điểm cần nhớ

  • Các process của ASG (Launch, Terminate, AZRebalance, HealthCheck, ScheduledActions, AlarmNotification, ReplaceUnhealthy, AddToLoadBalancer) suspend độc lập nhau. Câu hỏi kiểu này luôn kiểm tra xem bạn có suy diễn nhầm rằng suspend cái này thì cái kia dừng theo hay không.
  • AZRebalance launch trước, terminate sau — nhờ vậy ASG được phép vượt maximum size một khoảng nhỏ (khoảng 10%) trong thời gian ngắn. Nhớ thứ tự này là giải được cả họ câu hỏi về rebalance.
  • Suspend Terminate khiến ASG không scale in — không cho alarm, không cho scheduled action, và cũng chặn luôn vế thu dọn của AZRebalance. Kết quả là ASG kẹt ở trạng thái thừa dung lượng cho tới khi resume process.
  • Khi đọc đề dạng "process X bị suspend, chuyện gì xảy ra với hoạt động Y", hãy tách hoạt động Y thành từng bước rồi hỏi bước nào thuộc process bị suspend. Bước không thuộc process đó vẫn chạy như thường.