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

Tìm thấy 585 câu.

Câu 421 AWS Database

A team of Data Analysts launched an Amazon RedShift Spectrum cluster. When the team attempts to use the query editor to query data, they received an “[Amazon](500310) Invalid operation: AwsClientException: Failed connect to datacatalog.us-west-2.amazonaws.com:443” error.

How can this issue be resolved?

  1. A

    Ensure that the Amazon Redshift cluster has access to the necessary AWS service endpoints.

  2. B

    There is insufficient capacity in the cluster, use Elastic resize to adjust capacity.

  3. C

    The cluster nodes are running in multiple Availability Zones, launch nodes in a single AZ only.

  4. D

    The cluster login credentials are incorrect; specify the correct credentials and try again.

Xem giải thích

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

Đề mô tả một nhóm Data Analyst dựng cụm Amazon Redshift Spectrum và khi chạy truy vấn trong query editor thì nhận lỗi:

[Amazon](500310) Invalid operation: AwsClientException: Failed connect to datacatalog.us-west-2.amazonaws.com:443

Cụm từ quyết định đáp án nằm gọn trong chính thông báo lỗi: "Failed connect to datacatalog...:443". Ba chi tiết trong đó phải đọc cùng nhau:

  • Failed connect — đây là lỗi thiết lập kết nối mạng, không phải lỗi cú pháp SQL, không phải lỗi từ chối quyền, cũng không phải lỗi hết tài nguyên.
  • datacatalog...amazonaws.com — endpoint của AWS Glue Data Catalog. Redshift Spectrum không tự giữ metadata của dữ liệu ngoài; nó tra bảng ngoài (external table) trong Glue Data Catalog rồi mới đọc dữ liệu trên Amazon S3. Cụm phải gọi ra được endpoint này thì truy vấn mới bắt đầu được.
  • :443 — cổng HTTPS của một API endpoint AWS, khẳng định đây là lời gọi đi ra ngoài tới service endpoint chứ không phải chuyện nội bộ cụm.

Ghép lại: cụm Redshift không mở được đường tới endpoint của một dịch vụ AWS mà nó phụ thuộc vào. Đó là ràng buộc phân biệt bốn phương án — chỉ một phương án nói về khả năng tiếp cận endpoint.

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

A. Ensure that the Amazon Redshift cluster has access to the necessary AWS service endpoints.

Redshift Spectrum cần gọi tới Glue Data Catalog để phân giải external schema và external table trước khi quét dữ liệu. Nếu đường đi tới endpoint đó bị bịt, truy vấn hỏng ngay ở bước kết nối — đúng như thông báo lỗi.

Tình huống hay gặp nhất là khi cụm bật Enhanced VPC Routing: toàn bộ lưu lượng vào ra của cụm bị ép đi qua VPC thay vì theo đường mặc định của dịch vụ. Khi đó VPC phải tự cung cấp lối ra tới các service endpoint — bằng VPC endpoint (interface endpoint cho AWS Glue, gateway endpoint cho S3) hoặc bằng đường đi ra Internet hợp lệ — cùng với security group và route table cho phép lưu lượng đó. Thiếu phần này, cụm nằm trong subnet riêng tư và không có cách nào chạm tới datacatalog...amazonaws.com, sinh ra đúng lỗi Failed connect.

Vì vậy hướng xử lý là rà lại đường mạng của cụm tới các AWS service endpoint mà Spectrum phụ thuộc, chứ không phải đụng vào kích thước cụm hay thông tin đăng nhập.

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

B. There is insufficient capacity in the cluster, use Elastic resize to adjust capacity. Elastic resize dùng để thay đổi số node hoặc loại node khi cụm thiếu năng lực tính toán/lưu trữ. Nhưng thiếu capacity biểu hiện thành truy vấn chậm, xếp hàng chờ trong queue, hoặc lỗi liên quan đến disk/WLM — chứ không phải một lỗi kết nối tới một hostname cụ thể ở cổng 443. Thêm node vào một cụm không có đường ra tới Glue endpoint thì mọi node mới cũng gặp đúng lỗi đó.

C. The cluster nodes are running in multiple Availability Zones, launch nodes in a single AZ only. Đây là phương án nghe có vẻ "kiến trúc mạng" nên dễ gây phân vân, nhưng nó lạc chủ đề. Vị trí AZ của các node không quyết định việc cụm có gọi được tới endpoint của Glue Data Catalog hay không — cái quyết định là routing, VPC endpoint và security group. Nếu vấn đề nằm ở AZ thì lỗi sẽ liên quan tới trạng thái node hoặc khả dụng của cụm, không phải một lần bắt tay HTTPS thất bại tới datacatalog.

D. The cluster login credentials are incorrect; specify the correct credentials and try again. Đây là phương án gần đúng nhất về mặt "cũng là lỗi cấu hình", nhưng nó hỏng ở chỗ loại lỗi không khớp. Sai credentials thì người dùng không vào nổi query editor ngay từ đầu, và thông báo sẽ nói về authentication/authorization. Ở đây phiên làm việc đã mở được, câu truy vấn đã chạy, và lỗi chỉ nổ ra ở bước cụm đi kết nối ra ngoài — Failed connect là dấu hiệu tầng mạng, không phải tầng danh tính. Cần phân biệt rõ: quyền IAM để đọc Glue Data Catalog là điều kiện khác, và khi thiếu quyền thì lỗi trả về cũng là access denied chứ không phải lỗi kết nối.

📌 Điểm cần nhớ

  • Đọc kỹ chữ trong thông báo lỗi trước khi chọn. Failed connect to <host>:443 gần như luôn trỏ về vấn đề đường mạng tới service endpoint, không phải capacity, không phải credentials.
  • Redshift Spectrum phụ thuộc vào AWS Glue Data Catalog và Amazon S3. Truy vấn external table cần cả metadata (Glue) lẫn dữ liệu (S3), nên cụm phải tiếp cận được cả hai endpoint.
  • Enhanced VPC Routing ép mọi lưu lượng của cụm đi qua VPC. Bật cờ này thì phải chuẩn bị sẵn VPC endpoint, route table và security group tương ứng, nếu không các lời gọi ra service endpoint sẽ đứt.
  • Phân biệt lỗi kết nối với lỗi phân quyền. Không kết nối được là chuyện của routing/endpoint; kết nối được nhưng bị từ chối là chuyện của IAM. Hai loại này có thông báo khác nhau và cách chữa hoàn toàn khác nhau.
Câu 422 AWS Storage

A company has created a new Amazon FSx for Windows File Server file system with limited storage capacity to manage costs effectively. They have also set up an Amazon Simple Notification Service (Amazon SNS) topic in the same AWS account for system notifications. The SysOps administrator wants to receive an email notification when the file system's available space drops below 100 GB. What steps should the SysOps administrator take to meet this requirement?

  1. A

    Create an Amazon EventBridge rule to monitor the file system's available space. Configure the rule to trigger an Amazon SNS notification when the FreeStorageSpace metric is below 100 GB. Subscribe the SysOps administrator's email address to the SNS topic.

  2. B

    Enable CloudWatch Logs for the file system. Create a CloudWatch Logs metric filter to capture changes in available space. Configure an Amazon SNS subscription to send email notifications to the SysOps administrator when the filter condition is met.

  3. C

    Implement a Lambda function that periodically checks the file system's available space. Configure the function to send an email notification to the SysOps administrator when the available space falls below 100 GB.

  4. D

    Configure an Amazon CloudWatch alarm to monitor the file system's FreeStorageSpace metric. Set the alarm threshold to trigger when the available space is below 100 G.

Xem giải thích

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

Đề mô tả một Amazon FSx for Windows File Server được cố ý cấp dung lượng nhỏ để tiết kiệm chi phí, và một SNS topic đã có sẵn trong cùng AWS account. Yêu cầu: SysOps administrator phải nhận được email khi dung lượng trống của file system tụt xuống dưới 100 GB.

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

  • "receive an email notification" — đích đến không phải là "phát hiện được sự kiện", mà là thư đến hòm mail của một con người. Muốn vậy phải có đủ chuỗi: nguồn số liệu → điều kiện ngưỡng → SNS topic → email subscription trên topic đó. Thiếu mắt xích cuối là chưa đạt yêu cầu đề nêu.
  • "available space drops below 100 GB" — đây là một chỉ số dung lượng có ngưỡng, và với FSx for Windows File Server, chỉ số mô tả đúng thứ này là metric FreeStorageSpace. Phương án nào không nhắc tới FreeStorageSpace là đang đo bằng nguồn dữ liệu sai.

Kết hợp hai ràng buộc: cần phương án vừa dùng đúng FreeStorageSpace, vừa nêu rõ có subscribe email vào SNS topic.

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

Đáp án đúng theo tệp là A: tạo một Amazon EventBridge rule theo dõi dung lượng trống của file system, cấu hình rule kích hoạt thông báo qua Amazon SNS khi metric FreeStorageSpace xuống dưới 100 GB, rồi subscribe địa chỉ email của SysOps administrator vào SNS topic.

Phương án này là phương án duy nhất mô tả trọn vẹn cả ba mắt xích mà đề đòi hỏi:

  1. Đúng nguồn số liệu — nêu đích danh FreeStorageSpace, chỉ số phản ánh lượng dung lượng còn trống của file system, đúng thứ đề gọi là "available space".
  2. Đúng ngưỡng — điều kiện kích hoạt gắn thẳng vào mốc "dưới 100 GB" mà đề nêu.
  3. Đúng đường tới email — thông báo được đẩy vào SNS topic sẵn có, và địa chỉ email được subscribe vào topic đó. SNS chỉ gửi thư tới những endpoint đã đăng ký, nên bước subscribe này chính là thứ biến "có cảnh báo" thành "có email trong hộp thư".

Ngoài ra đây là cách dùng dịch vụ có sẵn, không phải viết mã: người vận hành chỉ cấu hình rule và subscription, không phải bảo trì thêm bất cứ đoạn logic nào của riêng mình.

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

B — Bật CloudWatch Logs cho file system, tạo metric filter để bắt thay đổi dung lượng trống, rồi gắn SNS subscription. Sai ngay ở nguồn dữ liệu. Metric filter là công cụ quét chuỗi văn bản trong log để rút ra số liệu; nó dành cho những thứ chỉ tồn tại dưới dạng dòng log. Còn dung lượng trống của FSx đã là một metric có sẵn (FreeStorageSpace) — đi vòng qua log để tự dựng lại một chỉ số vốn đã được cung cấp là vừa thừa, vừa phụ thuộc vào việc log có thực sự chứa con số đó theo định dạng ổn định hay không. Giải thích gốc chốt đúng ý này: phương án chỉ xoay quanh logging chứ không giải quyết trực tiếp yêu cầu cảnh báo khi dung lượng trống thấp.

C — Viết một Lambda function chạy định kỳ, tự kiểm tra dung lượng trống và tự gửi email. Đây là phương án về mặt kỹ thuật có thể chạy được, nên dễ gây phân vân — nhưng nó hỏng ở chỗ đánh đổi. Nó đòi viết và bảo trì mã tùy biến (lấy số liệu, so ngưỡng, xử lý lỗi, phân quyền, lịch chạy) để làm lại đúng việc mà cơ chế theo dõi ngưỡng dựng sẵn đã làm. Thêm nữa, cách kiểm tra định kỳ đưa vào độ trễ phụ thuộc chu kỳ chạy, thay vì dựa trên đánh giá metric theo cách chuẩn. Trong đề thi, khi một phương án dùng dịch vụ sẵn có đáp ứng đủ yêu cầu, phương án tự viết code luôn là phương án kém hơn.

D — Cấu hình một CloudWatch alarm theo dõi metric FreeStorageSpace, đặt ngưỡng kích hoạt khi dung lượng dưới 100 G. Đây là phương án gần đúng nhất và là bẫy chính của câu hỏi — nó chọn đúng metric FreeStorageSpace, đúng ngưỡng, đúng ý tưởng. Chỗ hỏng nằm ở mắt xích cuối bị bỏ trống: phương án dừng lại ở việc alarm chuyển sang trạng thái cảnh báo, mà không hề nói tới SNS topic, cũng không nói tới việc subscribe email của administrator. Một alarm chỉ đổi trạng thái mà không được gắn action gửi tới nơi nào thì chẳng ai nhận được thư cả — trong khi đề yêu cầu rõ ràng là "receive an email notification". Giải thích gốc nêu đúng lý do này: alarm có thể gửi thông báo, nhưng phương án này thiếu phần tích hợp với Amazon SNS và thiếu email subscription của SysOps administrator. Đây là kiểu phương án "làm đúng 80% rồi dừng", và trong đề trắc nghiệm thì 80% vẫn là sai.

📌 Điểm cần nhớ

  • Với FSx for Windows File Server, dung lượng còn trống được theo dõi bằng metric FreeStorageSpace. Thấy đề nói "available space", "free space", "sắp hết dung lượng" thì tìm phương án gọi đúng tên metric này.
  • Khi đề yêu cầu "nhận email", hãy kiểm tra phương án có đủ cả chuỗi: nguồn metric → điều kiện ngưỡng → SNS topic → subscription email. Phương án thiếu bước subscribe là phương án chưa hoàn chỉnh, dù mọi thứ phía trước đều đúng.
  • Metric filter thuộc về CloudWatch Logs, dùng khi dữ liệu chỉ tồn tại trong log văn bản. Chỉ số nào đã được phát ra sẵn dưới dạng metric thì đừng đi đường vòng qua log để dựng lại.
  • Khi có hai phương án cùng đạt yêu cầu, phương án cấu hình dịch vụ sẵn có luôn thắng phương án tự viết Lambda: ít mã phải bảo trì hơn, ít chỗ hỏng hơn — đây là tiêu chí ngầm định gần như cố định trong các câu hỏi vận hành.
Câu 423 AWS Security, Identity, & Compliance

A SysOps administrator is notified about unusual network activity on an Amazon EC2 instance by Amazon GuardDuty. The GuardDuty report indicates a suspicious external IP address as a traffic destination. The administrator must block traffic to the external IP address identified by GuardDuty.

What is the most suitable course of action to meet this requirement?

  1. A

    Use VPC flow logs in combination with Amazon Athena to block traffic to the external IP address.

  2. B

    Create a new security group to block traffic to the external IP address. Associate the new security group with the EC2 instance.

  3. C

    Create a new security group to block traffic to the external IP address. Link this new security group to the Amazon VPC.

  4. D

    Create a network ACL and include an outbound rule to deny traffic to the external IP address.

Xem giải thích

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

GuardDuty phát hiện một EC2 instance đang gửi traffic tới một địa chỉ IP bên ngoài đáng ngờ, và yêu cầu đặt ra là chặn traffic đi tới địa chỉ IP đó.

Cụm từ quyết định đáp án là "block traffic to the external IP address" — tức là phải từ chối (deny) traffic đi ra (outbound) tới một IP cụ thể. Hai chữ này gộp lại đã loại gần hết danh sách:

  • "block/deny": cần một cơ chế có khả năng viết luật từ chối. Trong VPC, security group chỉ có luật allow — không có khái niệm deny rule. Cái duy nhất trong danh sách phương án có luật deny là network ACL.
  • "traffic to": hướng đi ra khỏi instance, nên luật phải nằm ở chiều outbound.

Thêm một ràng buộc ngầm: đề chỉ nói "chặn", không nói "phân tích" hay "điều tra". Phương án nào chỉ cho ta nhìn thấy traffic mà không can thiệp được đều lạc đề.

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

D — Tạo network ACL với một outbound rule deny traffic tới IP bên ngoài đó.

Network ACL là lớp kiểm soát traffic hoạt động ở mức subnet, và điểm mấu chốt: nó hỗ trợ cả luật allow lẫn luật deny, tách riêng theo chiều inbound và outbound. Đúng thứ mà yêu cầu của đề cần — một luật outbound deny trỏ tới địa chỉ IP mà GuardDuty đã chỉ ra.

Network ACL còn là stateless: mỗi chiều được đánh giá độc lập, phản hồi quay về không tự động được cho qua. Với bài toán chặn một địa chỉ độc hại thì tính chất này lại có lợi — luật deny thực sự cắt đứt luồng, không có ngoại lệ ngầm nào cho traffic phản hồi.

Vì luật áp ở mức subnet, nó chặn cho toàn bộ instance nằm trong subnet đó, không chỉ riêng instance mà GuardDuty báo — điều hợp lý khi đối tượng bị chặn là một IP đích độc hại chứ không phải một máy cụ thể.

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

A — Dùng VPC flow logs kết hợp Amazon Athena để chặn traffic. Đây là bộ đôi quan sát và phân tích, không phải bộ đôi thực thi. VPC flow logs ghi lại metadata của các luồng traffic trong VPC, Athena cho phép chạy truy vấn SQL trên đống log đó để tìm ra mẫu bất thường. Cả hai đều nằm ở phía sau sự việc — chúng cho biết traffic đã đi đâu, nhưng không có bất kỳ cơ chế nào để ngăn gói tin tiếp theo. Phương án này trả lời cho câu hỏi "làm sao điều tra", không phải "làm sao chặn".

B — Tạo security group mới để chặn, rồi gắn vào EC2 instance. Đây là phương án gần đúng nhất và cũng là cái bẫy chính. Chỗ gắn thì đúng — security group thực sự gắn vào network interface của instance. Nhưng nó hỏng ở bản chất của luật: security group chỉ có luật allow, không tồn tại khái niệm deny rule. Mọi thứ không được allow thì mặc định bị chặn, nhưng ta không thể viết một luật nói "cấm riêng IP này". Thêm nữa, security group là stateful, tức phản hồi cho một kết nối đã được cho phép sẽ tự động đi qua. Muốn chặn đúng một IP bằng security group thì phải liệt kê allow toàn bộ phần còn lại của Internet trừ IP đó — bất khả thi trên thực tế.

C — Tạo security group mới để chặn, rồi gắn ("link") vào Amazon VPC. Sai hai lần. Thứ nhất, nó mang nguyên nhược điểm của B: security group không viết được luật deny. Thứ hai, nó còn sai cả về nơi áp dụng — security group gắn vào network interface / instance, không phải gắn vào VPC như một lớp bao trùm. Không có thao tác "gắn security group vào VPC" theo nghĩa nó tự động lọc traffic cho mọi thứ bên trong. Lớp nào áp ở phạm vi rộng hơn instance thì đó là network ACL, và nó áp ở mức subnet.

📌 Điểm cần nhớ

  • Cần "deny" một IP cụ thể → network ACL, không phải security group. Đây gần như là phản xạ có thể dùng cho mọi câu dạng "block/deny a specific IP".
  • Security group: stateful, chỉ allow, gắn ở mức instance/ENI. Network ACL: stateless, có cả allow lẫn deny, áp ở mức subnet. Hai dòng này giải quyết được phần lớn câu hỏi so sánh hai lớp bảo vệ này.
  • Phân biệt công cụ quan sát với công cụ thực thi. GuardDuty, VPC flow logs, Athena đều thuộc nhóm phát hiện và phân tích; chúng chỉ ra vấn đề chứ không sửa vấn đề. Khi đề hỏi "chặn/ngăn", hãy loại ngay nhóm này.
  • Đọc kỹ chiều của traffic. "Traffic to the external IP" là outbound; đặt nhầm luật vào chiều inbound thì luật vẫn tồn tại mà traffic độc hại vẫn đi ra bình thường.
Câu 424 AWS Management & Governance

A group of Developer have been given access to a separate AWS account to work on a new project. The Developers require full administrative access to create IAM policies and roles in the account, but corporate policies require that they are blocked from using a few specific AWS services.

What is the BEST way to grant the Developers privileges in the new account while still ensuring compliance with corporate policies?

  1. A

    Create an IAM group for the Developers and apply a policy restricting access to the specific services.

  2. B

    Create a job-specific policy in IAM and apply it to all users within the new account.

  3. C

    Create a service control policy in AWS Organizations and apply it to the new account.

  4. D

    Create a customer managed policy in IAM and apply it to all users within the new account.

Xem giải thích

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

Một nhóm Developer được cấp riêng một AWS account để làm dự án mới. Họ cần full administrative access để tự tạo IAM policy và IAM role trong account đó, nhưng chính sách công ty bắt buộc chặn họ khỏi một vài AWS service cụ thể. Đề hỏi cách BEST để vừa cho quyền, vừa đảm bảo tuân thủ.

Cụm từ quyết định đáp án là "full administrative access to create IAM policies and roles". Đây chính là ràng buộc phân biệt bốn phương án gần giống nhau. Ba trong bốn phương án đều là biến thể của "viết một IAM policy rồi gắn vào user/group" — chúng chỉ khác nhau ở chỗ gắn vào đâu và policy thuộc loại nào. Nhưng một người có toàn quyền quản trị IAM thì có quyền sửa hoặc gỡ chính cái policy đang giới hạn mình. Bất kỳ hàng rào nào dựng bên trong IAM của account đó đều nằm trong tầm tay người bị chặn, nên nó không phải là hàng rào.

Vế thứ hai của đề — "a separate AWS account" — là gợi ý cho lời giải: phải chặn ở tầng cao hơn account.

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

C — Create a service control policy in AWS Organizations and apply it to the new account.

Service control policy (SCP) là một loại organization policy trong AWS Organizations, dùng để quản lý permission ở phạm vi toàn tổ chức. SCP đặt trần quyền tối đa (maximum available permissions) cho các account nằm dưới nó. Một API action bị SCP từ chối thì không principal nào trong account đó gọi được, kể cả user có quyền administrator, kể cả role mà chính Developer vừa tạo ra.

Điểm mấu chốt: SCP được quản lý ở management account của Organizations, không nằm trong account của Developer. Developer có toàn quyền IAM trong account con nhưng không có quyền sửa SCP áp lên account đó. Đó là lý do duy nhất khiến phương án này bảo đảm được tuân thủ trong khi ba phương án kia không: quyền kiểm soát nằm ngoài tầm với của người bị kiểm soát.

Kết quả: Developer vẫn tự do tạo IAM policy và role như đề yêu cầu, nhưng mọi quyền họ tự cấp cho mình đều bị giao cắt với trần do SCP đặt ra — các service bị cấm vẫn không dùng được.

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

A — IAM group cho Developer, gắn policy hạn chế service. Đây là phương án trông hợp lý nhất và cũng là bẫy chính. Về mặt kỹ thuật, một policy có Deny gắn vào group đúng là chặn được service. Nhưng chỗ hỏng nằm ở chỗ khác: Developer có full admin nên họ có thể gỡ chính mình khỏi group, sửa policy của group, hoặc đơn giản là tạo một IAM role mới không có ràng buộc đó rồi assume vào. Hàng rào và người bị chặn ở cùng một tầng quyền.

B — Job-specific policy trong IAM, áp cho mọi user trong account. Hỏng đúng theo cách của A, chỉ khác cách diễn đạt. "Áp cho mọi user" nghe có vẻ phủ kín hơn, nhưng phạm vi rộng không giải quyết được vấn đề gốc — vấn đề là ai có quyền sửa nó, chứ không phải nó phủ được bao nhiêu người. Ngoài ra vẫn còn lỗ hổng role: policy gắn vào user không ràng buộc được role mà Developer tự tạo.

D — Customer managed policy trong IAM, áp cho mọi user trong account. Khác B đúng một chi tiết: nêu rõ loại policy là customer managed (do khách hàng tự viết và quản lý) thay vì AWS managed. Đây là chi tiết đánh lạc hướng — loại policy chỉ nói về việc ai sở hữu định nghĩa policy, không nói gì về việc ai có quyền sửa nó trong account này. Vẫn là một identity-based policy sống trong IAM của account mà Developer làm chủ, nên vẫn bị sửa hoặc gỡ được.

Ba phương án A, B, D thật ra là cùng một câu trả lời viết ba kiểu. Khi thấy nhiều phương án trùng bản chất như vậy, phương án còn lại thường là đáp án.

📌 Điểm cần nhớ

  • Quyền kiểm soát phải nằm ngoài tầm với của người bị kiểm soát. Dùng IAM policy để giới hạn một người có full IAM admin là tự mâu thuẫn — họ sửa được cái đang giới hạn họ.
  • SCP của AWS Organizations đặt trần quyền cho cả account, áp lên mọi principal trong account kể cả root user của account đó và mọi role tạo về sau. SCP không tự cấp quyền; quyền thật vẫn phải đến từ IAM policy, SCP chỉ cắt bớt.
  • Đề bài có cụm "full administrative access" cộng với yêu cầu chặn service ⇒ gần như chắc chắn hướng về SCP, không phải IAM.
  • Phân biệt loại policy (inline / AWS managed / customer managed) chỉ nói về cách policy được sở hữu và tái sử dụng — nó không thay đổi phạm vi hiệu lực hay khả năng bị chỉnh sửa. Đừng để chi tiết này kéo bạn khỏi câu hỏi thật: policy này nằm ở tầng nào, và ai sửa được nó.
Câu 425 AWS Compute

An application runs on several Amazon EC2 instances behind an Application Load Balancer (ALB). The instances run in an Auto Scaling group that is configured to determine the health status of EC2 instances using both EC2 status checks and ALB health checks. An application fault has been detected and it is necessary to analyze unhealthy instances before they are terminated.

What should a SysOps Administrator do to accomplish this?

  1. A

    Create an AWS Lambda function that takes a snapshot of the instances before they are terminated.

  2. B

    Implement Amazon CloudWatch Events to capture lifecycle events and trigger an AWS Lambda function for remediation.

  3. C

    Use an Amazon EC2 Auto Scaling lifecycle hook to pause instance termination after the instance has been removed from service.

  4. D

    Configure the Auto Scaling group to only use ALB health checks so instances are taken out of service but are not terminated.

Xem giải thích

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

Đề mô tả một ứng dụng chạy trên nhiều EC2 instance nằm sau Application Load Balancer (ALB), trong một Auto Scaling group dùng cả EC2 status check lẫn ALB health check để đánh giá sức khoẻ instance. Khi instance bị đánh dấu unhealthy, Auto Scaling group sẽ thay thế nó — tức là terminate.

Cụm từ quyết định đáp án là: "analyze unhealthy instances before they are terminated". Yêu cầu không phải là ngăn việc thay thế, cũng không phải là tự động khắc phục sự cố, mà là chen một khoảng dừng vào đúng giữa hai thời điểm: sau khi instance bị rút khỏi service, và trước khi nó thực sự bị terminate. Trong khoảng dừng đó, SysOps Administrator cần còn quyền truy cập vào instance để lấy log và điều tra.

Cụm phụ nhưng cũng quan trọng: "using both EC2 status checks and ALB health checks" — nó được nêu ra để loại thẳng một phương án.

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

Đáp án đúng: C — Use an Amazon EC2 Auto Scaling lifecycle hook to pause instance termination after the instance has been removed from service.

Lifecycle hook cho phép bạn tạm dừng instance ngay tại các thời điểm chuyển trạng thái của Auto Scaling group — lúc launch hoặc lúc terminate. Với hook ở giai đoạn terminating, luồng sự việc là:

  1. Instance bị đánh giá unhealthy → Auto Scaling group bắt đầu quy trình thay thế.
  2. Instance được deregister khỏi load balancer, không còn nhận traffic người dùng.
  3. Lifecycle hook giữ instance lại ở trạng thái chờ (wait state), chưa terminate.
  4. Trong lúc chờ, quản trị viên kết nối vào instance, tải log hoặc dữ liệu cần thiết ra.
  5. Xong việc thì gọi complete-lifecycle-action (hoặc CompleteLifecycleAction) để instance đi tiếp và bị terminate; nếu không gọi, hết thời gian chờ instance cũng tự đi tiếp.

Đây đúng là cơ chế được thiết kế cho tình huống trong đề: instance đã ngừng phục vụ nên không ảnh hưởng người dùng, nhưng vẫn còn sống để điều tra.

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

A — Lambda function chụp snapshot instance trước khi terminate. Vấn đề nằm ở trigger: hàm Lambda phải được kích hoạt bởi cái gì đó, và thời điểm cần kích hoạt là lúc instance bị rút khỏi service sau khi trượt health check. Không có lifecycle hook thì không có điểm móc nào rõ ràng ở đúng giai đoạn đó. Ngoài ra snapshot chỉ cho bạn ảnh chụp volume, không cho bạn instance còn chạy để đăng nhập vào và quan sát — kém xa việc giữ nguyên instance sống.

B — CloudWatch Events bắt lifecycle event rồi gọi Lambda để remediation. Đây là phương án gần đúng nhất và dễ chọn nhầm. Nó hỏng ở hai chỗ. Thứ nhất, event chỉ phát ra khi instance đã bị terminate — quá muộn, instance không còn để phân tích. Thứ hai, đề yêu cầu phân tích chứ không phải remediation tự động; một hàm Lambda khắc phục sự cố không giải quyết nhu cầu con người vào xem log. Bản thân "capture lifecycle events" cũng chỉ là quan sát sự kiện, chứ không chặn được tiến trình terminate lại — muốn chặn thì phải dùng chính lifecycle hook như phương án C.

D — Cấu hình Auto Scaling group chỉ dùng ALB health check để instance bị rút khỏi service nhưng không bị terminate. Sai ngay ở giả định kỹ thuật: bạn không thể cấu hình Auto Scaling group chỉ dùng ELB/ALB health check. Health check của ELB luôn là phần bổ sung cho EC2 status check chứ không thay thế được nó. Kể cả nếu làm được, việc bỏ health check cũng không phải cách đúng — nó làm suy yếu vĩnh viễn cơ chế tự phục hồi của cả nhóm chỉ để phục vụ một lần điều tra, thay vì tạm dừng đúng một instance đúng một lần.

📌 Điểm cần nhớ

  • Thấy đề yêu cầu làm việc gì đó với instance trước khi nó bị terminate (lấy log, chạy script dọn dẹp, tách instance ra để mổ xẻ) → nghĩ ngay tới Auto Scaling lifecycle hook. Đó là cơ chế duy nhất tạm dừng được vòng đời instance.
  • Lifecycle hook có ở cả hai đầu: lúc launch (để cài đặt/khởi tạo trước khi instance vào service) và lúc terminate (để dọn dẹp/điều tra trước khi biến mất). Instance nằm ở wait state cho tới khi bạn gọi complete-lifecycle-action hoặc hết thời gian chờ.
  • Phân biệt quan sát sự kiện với chặn sự kiện: CloudWatch/EventBridge cho bạn biết điều gì đã xảy ra và phản ứng sau đó; lifecycle hook cho bạn dừng quy trình lại giữa chừng. Đề nào cần thao tác trên một tài nguyên sắp bị xoá thì phải là vế thứ hai.
  • Health check của ELB/ALB trong Auto Scaling group luôn cộng thêm vào EC2 status check, không thay thế được — mọi phương án dựa trên "chỉ dùng ELB health check" đều loại được ngay.
Câu 426 AWS Networking & Content Delivery

A corporation has launched an application on Amazon EC2 instances within a single VPC. These EC2 instances are in a private subnet within the VPC. The EC2 instances require access to Amazon S3 buckets located in the same AWS Region. A SysOps administrator must ensure that the EC2 instances can access the S3 buckets without any configuration changes to the EC2 instances or the application. The EC2 instances should not be able to access the internet.

Which strategy will fulfill these requirements?

  1. A

    Create an S3 gateway endpoint that uses the default gateway endpoint policy. Associate the private subnet with the gateway endpoint.

  2. B

    Configure a NAT gateway in a public subnet. Create a rule in the route table pointing 0.0.0.0/0 to the ID of the NAT gateway.

  3. C

    Establish a Direct Connect connection, set up the private subnet to route S3 requests over this connection.

  4. D

    Create a VPN tunnel from the private subnet to the S3 buckets and add the necessary routing rules.

Xem giải thích

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

Đề mô tả các EC2 instance nằm trong private subnet của một VPC, cần đọc/ghi các S3 bucket cùng Region. Ba ràng buộc trong đề quyết định đáp án:

  1. "without any configuration changes to the EC2 instances or the application" — mọi thứ phải giải quyết ở tầng mạng của VPC, không được sửa endpoint, không được cài thêm agent, không sửa mã ứng dụng.
  2. "The EC2 instances should not be able to access the internet" — đây là cụm từ then chốt, loại thẳng mọi giải pháp mở đường ra Internet.
  3. "S3 buckets located in the same AWS Region" — S3 gateway endpoint chỉ phục vụ bucket trong cùng Region, nên chi tiết này xác nhận gateway endpoint là lựa chọn hợp lệ chứ không phải một cái bẫy.

Kết hợp lại: cần một đường đi riêng tư, trong nội bộ mạng AWS, cấu hình hoàn toàn ở phía VPC.

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

A — Tạo S3 gateway endpoint với default endpoint policy, gắn vào route table của private subnet.

Gateway endpoint cho S3 hoạt động bằng cách thêm một route vào route table của subnet: prefix list của S3 trong Region đó được trỏ tới ID của endpoint. Từ đó, lưu lượng đi tới S3 rời VPC qua hạ tầng mạng nội bộ của AWS chứ không đi qua public internet, không cần NAT gateway, không cần internet gateway, không cần public IP.

Điều này thoả cả ba ràng buộc:

  • Không sửa gì trên EC2/ứng dụng: ứng dụng vẫn gọi đúng endpoint S3 quen thuộc, việc định tuyến lại diễn ra hoàn toàn ở tầng route table.
  • Không mở Internet: gateway endpoint chỉ định tuyến tới S3, không tạo đường ra ngoài cho bất kỳ đích nào khác.
  • Default endpoint policy cho phép mọi thao tác đi qua endpoint, nên không phát sinh chuyện bị chặn quyền ngoài ý muốn — quyền vẫn do IAM role và bucket policy quyết định như trước.

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

B — NAT gateway ở public subnet, route 0.0.0.0/0 trỏ vào NAT gateway. Đây là phương án gần đúng nhất và cũng là bẫy chính. Nó thật sự cho EC2 gọi được S3, nhưng theo đường public endpoint của S3 và vi phạm trực diện yêu cầu "should not be able to access the internet": route 0.0.0.0/0 mở đường đi ra mọi địa chỉ Internet, không riêng gì S3. NAT gateway chỉ chặn kết nối đi vào do bên ngoài khởi tạo, còn kết nối đi ra thì hoàn toàn tự do. Ngoài ra nó còn phát sinh chi phí xử lý dữ liệu mà gateway endpoint không có.

C — Direct Connect, định tuyến request S3 qua kết nối này. Direct Connect là đường truyền chuyên dụng nối hạ tầng on-premises với AWS. Ở đây cả EC2 lẫn S3 đều đã nằm trong AWS, không có phía on-premises nào để nối — công cụ này giải quyết một bài toán khác hẳn. Nó cũng không phải cơ chế để giới hạn truy cập riêng cho S3 từ trong một VPC.

D — Dựng VPN tunnel từ private subnet tới các S3 bucket. Sai ngay ở mô hình dịch vụ: S3 là dịch vụ đối tượng truy cập qua API, không phải một mạng có đầu cuối để bắt tay VPN. Không tồn tại thứ gọi là "VPN tunnel tới một S3 bucket", nên không có gì để cấu hình routing rule trỏ tới. VPN trong AWS dùng để nối VPC với mạng bên ngoài hoặc VPC khác, không dùng để tiếp cận một dịch vụ managed.

📌 Điểm cần nhớ

  • Thấy đồng thời "private subnet" + "truy cập S3/DynamoDB" + "không được ra Internet" thì gần như chắc chắn đáp án là gateway endpoint. Đây là cặp tín hiệu kinh điển của kỳ thi.
  • Gateway endpoint chỉ hỗ trợ S3 và DynamoDB, hoạt động qua route table, không tính phí đường truyền. Interface endpoint (PrivateLink) dùng ENI với IP riêng trong subnet — cần khi phải truy cập từ on-premises hoặc với các dịch vụ khác; nhưng đề này không nêu on-premises nên gateway endpoint là lựa chọn tự nhiên.
  • NAT gateway ≠ truy cập riêng tư. Nó chỉ giấu instance khỏi kết nối vào, còn instance vẫn ra Internet được. Đề nào cấm Internet là NAT gateway bị loại, bất kể nó có làm ứng dụng chạy được hay không.
  • Direct Connect và VPN là công cụ nối mạng ngoài với AWS. Khi cả nguồn lẫn đích đều nằm trong AWS, chúng gần như luôn là phương án sai trong câu hỏi trắc nghiệm.
  • Gateway endpoint phục vụ bucket cùng Region; nếu đề nói bucket ở Region khác thì cách phân tích phải đổi.
Câu 427 AWS Database

A website runs on Amazon EC2 instances and uses an Amazon RDS database with the MySQL engine. A caching layer based on Amazon ElastiCache for Redis (cluster mode enabled) is used to improve read performance.

A new product launch is expected to result in a significant traffic increase over the first few days, potentially doubling the load on the website.

What can a SysOps Administrator do to ensure improved read times for users during the event?

  1. A

    Use Amazon RDS Multi-AZ.

  2. B

    Add shards to the existing Redis cluster.

  3. C

    Offload static data to Amazon S3.

  4. D

    Use a message queue to cache data.

Xem giải thích

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

Đề mô tả một kiến trúc đã có sẵn ba tầng: EC2 chạy website, Amazon RDS MySQL làm cơ sở dữ liệu, và ElastiCache for Redis (cluster mode enabled) làm tầng cache để cải thiện tốc độ đọc. Sắp có đợt ra mắt sản phẩm khiến tải tăng mạnh, có thể gấp đôi.

Câu hỏi: SysOps Administrator làm gì để bảo đảm thời gian đọc vẫn tốt trong sự kiện đó.

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

  • "caching layer ... is used to improve read performance" — tầng chịu trách nhiệm cho tốc độ đọc đã được chỉ đích danh là Redis, không phải RDS. Muốn cải thiện read time thì phải tác động vào đúng tầng đó.
  • "cluster mode enabled" — đây là chi tiết kỹ thuật quan trọng nhất. Ở chế độ này, dữ liệu được phân mảnh (partition) ra nhiều shard (node group), mỗi shard giữ một phần không gian keyslot. Chính vì bật cluster mode nên việc thêm shard mới là thao tác hợp lệ và có ý nghĩa.
  • "doubling the load" — đây là bài toán mở rộng quy mô theo chiều ngang cho một sự kiện tải cao, không phải bài toán về độ sẵn sàng hay khôi phục thảm hoạ.

Ghép lại: đề đang hỏi cách scale tầng cache Redis đang có để nó nuốt được lượng đọc gấp đôi.

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

B — Add shards to the existing Redis cluster.

Với Redis ở chế độ cluster mode enabled, ElastiCache cho phép horizontal scaling bằng cách tăng hoặc giảm số node group (shard) trong replication group. Thêm shard mang lại đúng thứ tình huống này cần:

  • Chia đều tải đọc và ghi ra nhiều node hơn. Keyslot được phân bố lại giữa các shard, nên mỗi shard phục vụ ít key hơn và ít request hơn.
  • Tăng tổng dung lượng bộ nhớ của cluster. Tải gấp đôi thường kéo theo tập dữ liệu nóng lớn hơn; thêm shard giúp giữ được nhiều dữ liệu trong RAM hơn, giảm tỷ lệ cache miss phải rơi xuống RDS.
  • Làm được khi cluster đang chạy. ElastiCache hỗ trợ online resharding, tức là cluster vẫn tiếp tục phục vụ request trong lúc quá trình phân mảnh lại diễn ra. Đây là lý do AWS khuyến nghị cách này: không phải dừng dịch vụ ngay trước đợt ra mắt sản phẩm.

Nói ngắn gọn: đề đã nói rõ Redis là thứ đang lo phần read performance, và thao tác chuẩn để mở rộng Redis cluster mode enabled chính là thêm shard.

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

A — Use Amazon RDS Multi-AZ. Đây là phương án gây nhầm nhiều nhất vì nghe như "làm database khoẻ hơn". Nhưng Multi-AZ là tính năng về độ sẵn vàng và khôi phục sau sự cố: RDS duy trì một bản standby ở Availability Zone khác và tự động failover khi primary hỏng. Bản standby đó không phục vụ traffic đọc của ứng dụng, nên bật Multi-AZ không thêm được chút năng lực đọc nào. Ngoài ra nó nhắm vào tầng RDS, trong khi đề đã chỉ rõ tầng chịu trách nhiệm cho read performance là Redis.

C — Offload static data to Amazon S3. Đây là phương án gần đúng nhất về mặt "giảm tải", và đúng là đưa nội dung tĩnh sang S3 có thể tiết kiệm chi phí cũng như giảm tải cho EC2. Nhưng nó hỏng ở hai chỗ với câu hỏi này. Thứ nhất, S3 là object storage đọc từ đĩa qua mạng, không nhanh bằng Redis đọc từ bộ nhớ — chuyển dữ liệu từ tầng in-memory sang S3 là đi lùi về mặt latency. Thứ hai, nó không giải quyết đúng vấn đề: tải gấp đôi đang dồn vào tầng cache và database, còn phương án này lại đòi sửa thiết kế ứng dụng để trỏ sang nguồn dữ liệu khác — thêm phức tạp ngay trước một sự kiện lớn mà không cải thiện được read time.

D — Use a message queue to cache data. Sai ngay ở khái niệm. Message queue là cơ chế truyền và đệm message để xử lý bất đồng bộ về sau, không phải kho lưu trữ key-value để tra cứu ngẫu nhiên. Consumer lấy message ra khỏi queue để xử lý, chứ ứng dụng không thể "hỏi một key rồi nhận về giá trị" như với Redis. Dùng queue thay cache sẽ biến một thao tác đọc đồng bộ thành luồng xử lý trễ, tức là làm chậm trải nghiệm người dùng cuối chứ không nhanh lên.

📌 Điểm cần nhớ

  • Khi đề đã nêu sẵn một tầng cache và hỏi về read performance, hãy tác động vào chính tầng cache đó trước khi nghĩ tới việc đụng vào database hay đổi kiến trúc.
  • Redis cluster mode enabled → thêm/bớt shard (horizontal scaling, online resharding) là thao tác mở rộng đặc trưng, làm được khi cluster vẫn đang phục vụ request.
  • RDS Multi-AZ là high availability / disaster recovery, không phải scaling đọc. Đây là bẫy lặp đi lặp lại trong đề thi AWS — hễ thấy Multi-AZ được đưa ra như giải pháp hiệu năng thì gần như chắc chắn là phương án nhiễu.
  • Message queue không phải cache. Queue phục vụ xử lý bất đồng bộ; cache phục vụ tra cứu đồng bộ độ trễ thấp. Đừng đổi vai hai thứ này.
  • S3 rẻ và bền, nhưng về latency thì không thay thế được một tầng in-memory; "offload sang S3" là câu trả lời cho bài toán chi phí và tải tĩnh, không phải cho bài toán read latency.
Câu 428 AWS Management & Governance

A SysOps Administrator successfully launched an Amazon EC2 instance in the us-east-1 Region using an AWS CloudFormation template. The Administrator then attempted to use the same template to launch an EC2 instance in the eu-west-1 Region, but the Stack creation failed.

What is the MOST likely cause of this failure?

  1. A

    The Amazon Machine Image (AMI) ID referenced in the CloudFormation template could not be found in the eu-west-1 Region.

  2. B

    The user account being used does not have permissions to launch instances in the eu-west-1 Region.

  3. C

    Resource tags defined in the CloudFormation template are specific to the eu-west-1 Region.

  4. D

    The Availability Zone in the eu-west-1 Region has insufficient capacity to handle the request.

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ể: cùng một CloudFormation template chạy thành công ở us-east-1, nhưng khi đem sang eu-west-1 thì Stack tạo thất bại. Câu hỏi yêu cầu tìm nguyên nhân "MOST likely" — tức là nguyên nhân khả dĩ nhất, không phải nguyên nhân có thể xảy ra về mặt lý thuyết.

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

  • "the same template" — template không đổi, nên mọi giá trị hard-code trong đó cũng không đổi. Thứ gì trong template mang tính đặc thù theo Region sẽ hỏng ngay khi đổi Region.
  • "launched an EC2 instance" — resource được tạo là EC2, mà thuộc tính bắt buộc của AWS::EC2::Instance chính là AMI ID (ImageId).
  • "MOST likely" — bài toán loại trừ dựa trên xác suất, không phải khả năng.

Ghép lại: hỏi rằng thuộc tính nào của EC2 bị hard-code trong template mà chỉ có giá trị hợp lệ trong đúng một Region. Đó là AMI ID.

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

Đáp án đúng là A — AMI ID trong template không tồn tại ở eu-west-1.

AMI ID là định danh phạm vi Region. Cùng một hệ điều hành, cùng một bản Amazon Linux, nhưng ID ở us-east-1 và ở eu-west-1 là hai chuỗi hoàn toàn khác nhau. Khi CloudFormation ở eu-west-1 gọi EC2 để tạo instance với ImageId lấy từ us-east-1, EC2 trả về lỗi "image not found", CloudFormation ghi nhận resource tạo thất bại và rollback toàn bộ Stack. Đây là lỗi kinh điển và gần như luôn xảy ra khi bê nguyên một template đi Region khác.

Cách xử lý đúng — cũng chính là điều đề đang muốn người học nhớ — là dùng Mappings kết hợp với pseudo parameter AWS::Region: khai một bảng ánh xạ Region → AMI ID, rồi tra bằng Fn::FindInMap với khoá là !Ref "AWS::Region". Khi ấy CloudFormation tự phân giải Region đang deploy và lấy đúng AMI ID tương ứng, template trở thành portable giữa các Region.

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

B — Tài khoản không có quyền launch instance ở eu-west-1. Đây là phương án gần đúng nhất, vì IAM có thể giới hạn theo Region bằng condition key trên chính sách. Nhưng nó hỏng ở chỗ: giới hạn kiểu đó không tự nhiên có — ai đó phải cố ý viết condition vào policy. Trong khi đề chỉ mô tả một quản trị viên bình thường đổi Region, không hề nhắc tới thay đổi quyền hay policy đặc biệt nào. Với một tình huống "MOST likely", một cấu hình phải được thiết lập thủ công thì kém khả dĩ hơn hẳn một lỗi mặc định luôn xảy ra như AMI ID.

C — Resource tag trong template đặc thù cho eu-west-1. Sai cả về logic lẫn về bản chất tag. Thứ nhất, câu chữ tự mâu thuẫn: nếu tag đặc thù cho eu-west-1 thì nó phải hỏng ở us-east-1 mới đúng, mà us-east-1 lại chạy được. Thứ hai, quan trọng hơn: tag chỉ là metadata dạng key–value dùng để phân loại và định danh resource, chúng không mang ngữ nghĩa Region và không tham gia vào việc cấp phát resource. Một tag có nội dung nào đi nữa cũng không làm CloudFormation dừng việc tạo instance.

D — Availability Zone ở eu-west-1 không đủ capacity. Đây là lỗi có thật trong AWS (InsufficientInstanceCapacity), nên nó nghe rất hợp lý — và đó chính là bẫy. Nhưng nó chỉ xảy ra khi xin số lượng lớn, hoặc xin một instance type hiếm trong một AZ đang căng tài nguyên. Ở đây đề nói rõ chỉ tạo một EC2 instance. Xác suất một AZ hết chỗ cho đúng một instance là rất thấp, và quan trọng hơn: nếu đó là nguyên nhân thì lỗi sẽ mang tính ngẫu nhiên, thử lại sau là hết — trong khi lỗi AMI ID mang tính tất định, thử bao nhiêu lần cũng hỏng. Câu hỏi mô tả một thất bại rõ ràng khi đổi Region, khớp với lỗi tất định.

📌 Điểm cần nhớ

  • AMI ID là tài nguyên phạm vi Region. Cùng OS, khác Region là khác ID. Bất kỳ template, script hay tài liệu nào hard-code AMI ID đều chỉ dùng được ở đúng một Region.
  • Muốn template CloudFormation chạy đa Region: khai Mappings từ Region sang AMI ID, tra cứu bằng Fn::FindInMap với pseudo parameter AWS::Region. Đây là mẫu hình được hỏi đi hỏi lại trong kỳ thi.
  • Gặp từ "MOST likely", hãy xếp hạng xác suất chứ không xếp hạng khả năng. Lỗi capacity (D) và lỗi permission (B) đều có thể xảy ra thật, nhưng cả hai đều cần điều kiện đặc biệt; lỗi AMI ID thì gần như chắc chắn xảy ra khi bê nguyên template sang Region khác.
  • Phân biệt lỗi tất định với lỗi ngẫu nhiên. Thất bại lặp lại mọi lần thường do tham chiếu sai (AMI ID, subnet ID, security group ID — đều là ID theo Region hoặc theo VPC). Thất bại lúc được lúc không mới nghiêng về capacity hoặc throttling.
  • Tag không bao giờ là nguyên nhân làm việc cấp phát resource thất bại — chúng chỉ là metadata phục vụ phân loại, tìm kiếm và phân bổ chi phí.
Câu 429 Chọn nhiều đáp án AWS Networking & Content Delivery

A company has a web application that uses an Amazon CloudFront web distribution, an Application Load Balancer (ALB) and Amazon EC2 instances with a shared Amazon EFS filesystem. Where applicable, all services have logging enabled. There have been some connection issues reported and the SysOps Administrator needs to check HTTP layer 7 status codes to determine the root cause.

Which log files should the Administrator check? (Select TWO.)

  1. A

    VPC Flow Logs

  2. B

    Amazon CloudWatch Logs

  3. C

    CloudFront access logs

  4. D

    Amazon EFS logs

  5. E

    ALB access logs

Xem giải thích

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

Đề mô tả một kiến trúc web gồm CloudFront web distribution → Application Load Balancer (ALB) → EC2 instances, dùng chung một EFS filesystem, và nói rõ "all services have logging enabled". Câu hỏi: có lỗi kết nối, SysOps Administrator cần xem HTTP layer 7 status codes để tìm nguyên nhân gốc — phải mở loại log nào? (Chọn HAI.)

Cụm từ quyết định đáp án là "HTTP layer 7 status codes". Đây là ràng buộc phân biệt duy nhất, và nó lọc theo hai chiều:

  • Tầng nào? Layer 7 (application layer). Mọi thứ chỉ ghi ở layer 3/4 — địa chỉ IP, port, giao thức, accept/reject — đều bị loại ngay, bất kể chúng hữu ích thế nào cho việc gỡ lỗi mạng.
  • Thành phần nào trong đề thực sự nói HTTP? Chỉ có CloudFront và ALB. EFS là giao thức NFS, không có khái niệm status code HTTP.

Chi tiết "all services have logging enabled" là để bạn không phải băn khoăn "log đã bật chưa"; nó không phải manh mối chọn đáp án. Đề hỏi loại log chứa status code, chứ không hỏi nơi lưu log.

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

Đáp án đúng theo tệp là C (CloudFront access logs) và E (ALB access logs).

Cả hai đều là access log của một HTTP endpoint, tức là bản ghi từng request ở tầng ứng dụng, trong đó có mã trạng thái HTTP.

  • ALB access logs: ALB là load balancer layer 7, nó tự chấm dứt (terminate) kết nối HTTP/HTTPS và đọc được nội dung request. Access log của nó ghi lại từng request kèm mã trạng thái do target trả về và mã trạng thái do chính ALB sinh ra — nhờ đó phân biệt được lỗi đến từ EC2 hay từ chính load balancer.
  • CloudFront access logs: CloudFront là điểm chạm đầu tiên với người dùng. Access log của nó ghi mã trạng thái trả về cho client tại edge location. Đây là chỗ duy nhất nhìn thấy lỗi xảy ra trước khi request kịp đi tới ALB.

Cần cả hai vì kiến trúc có hai chặng HTTP nối tiếp nhau. So hai bộ log này với nhau chính là cách khoanh vùng: lỗi hiện ở CloudFront nhưng không hiện ở ALB nghĩa là request chết ở chặng edge–origin; lỗi hiện ở cả hai nghĩa là nguyên nhân nằm sâu hơn, phía ALB hoặc EC2.

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

  • A. VPC Flow Logs — đây là phương án gần đúng nhất và cũng là bẫy chính. Flow Logs đúng là ghi lưu lượng mạng ra vào network interface trong VPC, rất hợp để gỡ "connection issues". Nhưng nó hỏng đúng ở chỗ đề yêu cầu: nội dung của nó là layer 3/4 — IP nguồn/đích, port, protocol, số byte, và kết quả ACCEPT/REJECT theo security group và network ACL. Nó không mở gói tin ra đọc HTTP, nên không có bất kỳ status code nào. Flow Logs trả lời được "gói tin có tới nơi không", không trả lời được "server trả về mã bao nhiêu".
  • B. Amazon CloudWatch Logs — sai vì nhầm giữa nơi chứa log và nguồn sinh ra log. CloudWatch Logs là dịch vụ lưu trữ và truy vấn log; bản thân nó không tự sinh ra HTTP status code cho kiến trúc này. Access logs của ALB và CloudFront được giao tới S3, không phải thứ bạn mặc nhiên tìm thấy trong CloudWatch Logs. Chọn B là chọn cái tủ đựng hồ sơ thay vì chọn tờ hồ sơ.
  • D. Amazon EFS logs — sai ở hai tầng. Thứ nhất, EFS không có access log dạng ghi từng thao tác như ALB hay CloudFront; muốn theo dõi EFS thì dùng metrics và CloudWatch. Thứ hai, kể cả có, EFS là hệ thống tệp chia sẻ nói giao thức NFS — nó phục vụ EC2 đọc/ghi tệp, hoàn toàn không tham gia vào cuộc hội thoại HTTP với client, nên khái niệm "HTTP status code trong log EFS" không tồn tại.

📌 Điểm cần nhớ

  • Câu hỏi nào nhắc "HTTP status code", "layer 7", "URL", "user agent" thì đáp án gần như luôn là access logs của một dịch vụ layer 7 — CloudFront hoặc ALB. Câu hỏi nhắc IP, port, ACCEPT/REJECT, security group, NACL thì mới tới lượt VPC Flow Logs.
  • Phân biệt nguồn sinh log với nơi lưu log: CloudWatch Logs là đích đến, không phải câu trả lời cho "log nào chứa thông tin X". Khi phương án liệt kê cả một dịch vụ cụ thể lẫn CloudWatch Logs, hãy chọn dịch vụ cụ thể.
  • Kiến trúc nhiều chặng thì phải xem log nhiều chặng. CloudFront đứng trước ALB, nên có lỗi chỉ xuất hiện ở CloudFront mà ALB không hề biết. Đề hỏi "Select TWO" trong kiến trúc phân tầng thường là dấu hiệu cần một log cho mỗi tầng.
  • Đối chiếu giao thức của từng thành phần trước khi chọn: EFS nói NFS, ALB và CloudFront nói HTTP. Thành phần không nói HTTP thì không thể ghi HTTP status code, dù nó có nằm trong đường đi của request.
Câu 430 AWS Management & Governance

A SysOps Administrator noticed a large increase in the number of requests against an Amazon SQS queue. The administrator is concerned about rising costs associated with the queue and needs to identify the source of the calls.

What should the SysOps Administrator use to validate the calls made to SQS?

  1. A

    Amazon SQS Access Logs

  2. B

    AWS CloudTrail

  3. C

    Amazon CloudWatch

  4. D

    AWS Cost Explorer

Xem giải thích

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

Một SysOps Administrator thấy số lượng request tới một Amazon SQS queue tăng vọt, lo ngại chi phí và cần xác định nguồn gốc của các lời gọi. Câu hỏi chốt lại: dùng gì để validate the calls made to SQS?

Cụm từ quyết định là "identify the source of the calls" — tức là cần biết ai (identity, IAM principal), từ đâu (source IP), lúc nào đã gọi API tới queue. Đây là bài toán audit hoạt động API, không phải bài toán đo lường số liệu và cũng không phải bài toán phân tích hoá đơn.

Chi tiết "rising costs" trong đề là mồi nhử có chủ đích: nó kéo suy nghĩ về phía công cụ chi phí, trong khi việc thật sự phải làm là truy ra danh tính người gọi. Chi phí chỉ là lý do khiến administrator đi tìm, không phải thứ cần đọc.

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

Đáp án đúng theo tệp là B — AWS CloudTrail.

CloudTrail là dịch vụ auditing: nó ghi lại các lời gọi API trong tài khoản AWS. Mỗi bản ghi (event) chứa thông tin định danh của bên gọi — IAM user hoặc role, access key được dùng, địa chỉ IP nguồn, user agent, thời điểm, tên API được gọi và tham số của nó.

Với SQS, các thao tác API (chẳng hạn nhóm lệnh quản trị queue và các lời gọi được SQS ghi nhận) xuất hiện trong CloudTrail, nên administrator mở event history hoặc truy vấn log là thấy được principal nào đang bắn request dồn dập vào queue. Đó chính xác là "identify the source of the calls" mà đề yêu cầu. Tài liệu chính thức của SQS cũng có riêng một trang về logging bằng CloudTrail, xác nhận đây là cơ chế logging của dịch vụ này.

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

A — Amazon SQS Access Logs. Sai vì không tồn tại thứ gọi là "SQS Access Logs". Phương án này bắt chước tên của các tính năng có thật ở dịch vụ khác (kiểu access log của S3 hay của load balancer), nên nghe rất hợp tai và là bẫy mạnh nhất trong bốn lựa chọn. Với SQS, việc ghi log hoạt động được thực hiện qua CloudTrail chứ không có kênh access log riêng của queue. Nguyên tắc chung khi thi: một phương án mô tả tính năng không có thật luôn sai, dù mô tả đó khớp hoàn hảo với nhu cầu trong đề.

C — Amazon CloudWatch. Đây là phương án gần đúng nhất và cần nói rõ nó hỏng ở đâu. CloudWatch có metric cho SQS và sẽ cho administrator thấy đúng hiện tượng được nêu ở đầu đề: số lượng request tăng, số message tăng. Nhưng CloudWatch là công cụ performance monitoring — nó trả lời bao nhiêu và khi nào, dưới dạng số liệu tổng hợp. Nó không trả lời được ai gọi vì metric không mang theo danh tính IAM principal hay IP nguồn của từng lời gọi. Administrator dùng CloudWatch sẽ phát hiện ra vấn đề nhưng đứng yên tại chỗ, không lần ra được thủ phạm. Đề hỏi nguồn gốc, nên CloudWatch trượt.

D — AWS Cost Explorer. Cost Explorer phân tích chi tiêu: bóc tách chi phí theo dịch vụ, theo tài khoản, theo tag, theo khoảng thời gian. Nó xác nhận được rằng chi phí SQS đang tăng và tăng bao nhiêu, nhưng dữ liệu của nó là dữ liệu billing tổng hợp, không phải nhật ký từng lời gọi API. Nó không biết IAM role nào hay địa chỉ IP nào đã sinh ra các request đó. Phương án này ăn theo chữ "costs" trong đề, nhưng câu hỏi cuối cùng ("validate the calls") mới là thứ phải trả lời.

📌 Điểm cần nhớ

  • "Ai đã gọi API?" → CloudTrail. Bất kỳ đề nào có các từ khoá who, source of the calls, audit, validate the calls, API activity đều chỉ về CloudTrail, gần như không có ngoại lệ.
  • Phân vai rành mạch: CloudTrail = ai làm gì (audit API), CloudWatch = hệ thống đang chạy ra sao (metric, alarm, log ứng dụng), Cost Explorer = tiền đi đâu (phân tích chi phí).
  • Nguyên nhân khiến đi tìm ≠ thứ cần tra. Chi phí tăng chỉ là động cơ; câu hỏi thật nằm ở vế cuối của đề. Luôn đọc lại đúng câu hỏi trước khi chọn.
  • Cảnh giác với tên tính năng "nghe rất hợp lý". "SQS Access Logs" không tồn tại; access log là khái niệm của dịch vụ khác. Với SQS, logging đi qua CloudTrail.