Ngân hàng đề — AWS Certified SysOps Administrator Associate

Tìm thấy 936 câu.

Câu 111 Domain 6: Cost and Performance Optimization

Your gp2 drive of 8TB is reaching its peak performance of 10,000 IOPS while being almost fully utilized.

How can you increase the performance while keeping the costs at the same level?

  1. A

    Create two 4 TB gp2 drives and mount them in RAID 1 on the EC2 instance

  2. B

    Convert the gp2 drive to io1 and increase the PIOPS

  3. C

    Create two 4 TB gp2 drives and mount them in RAID 0 on the EC2 instance

  4. D

    Enable burst mode on the gp2 drive

Xem giải thích

Đáp án

C — Tạo hai ổ gp2 dung lượng 4 TB và gắn chúng theo RAID 0 trên EC2 instance.

Vì sao đúng

Điểm mấu chốt nằm ở cách tính IOPS của gp2 và cái trần cứng của nó.

⚠ Công thức gp2 và trần 16.000 IOPS:

gp2 cho 3 IOPS mỗi GB
        ↓
    8 TB = 8192 GB → 8192 × 3 = 24.576 IOPS trên lý thuyết
        ↓
    NHƯNG mỗi volume gp2 bị chặn ở 16.000 IOPS
        ↓
    Và ở kích thước 8 TB, hiệu năng thực tế
    đã chạm mức mà đề mô tả (10.000 IOPS)
        ↓
    → tăng dung lượng thêm KHÔNG giúp gì nữa

⚠ RAID 0 phá trần bằng cách CỘNG hiệu năng của nhiều volume:

Hai ổ gp2 4 TB, mỗi ổ 4096 × 3 = 12.288 IOPS
        ↓
    Gắn RAID 0 (striping)
        ↓
    → IOPS CỘNG LẠI, băng thông CỘNG LẠI
    → tổng dung lượng vẫn là 8 TB
        ↓
    → CHI PHÍ GẦN NHƯ KHÔNG ĐỔI (vẫn trả tiền cho 8 TB gp2)
    → đúng yêu cầu "giữ chi phí ở mức cũ" của đề

⚠ Nhưng phải hiểu rõ cái giá của RAID 0:

RAID 0 KHÔNG có dự phòng nào
        ↓
    Một volume hỏng → MẤT TOÀN BỘ dữ liệu trên cả dải
        ↓
    → xác suất hỏng NHÂN ĐÔI so với một volume
        ↓
    → bắt buộc phải có snapshot đều đặn
    → và snapshot RAID phải chụp NHẤT QUÁN cả bộ
      (dùng lệnh create-snapshots số nhiều)

Vì sao các phương án khác sai

  • B (chuyển gp2 sang io1 rồi tăng PIOPS) — đây là phương án gần nhất và về kỹ thuật thì đúng: io1 lên tới 64.000 IOPS. Nhưng nó vi phạm ràng buộc về chi phí của đề — io1 đắt hơn gp2 đáng kể, và bạn còn phải trả riêng cho mỗi IOPS đã cấp phát. (Trong đời thực, gp3 mới là câu trả lời tốt nhất — xem phần Ghi nhớ.)

  • A (hai ổ 4 TB gắn RAID 1) — RAID 1 là nhân bản (mirroring): cùng dữ liệu ghi lên cả hai ổ. Nó tăng độ an toàn nhưng không cộng IOPS ghi, và bạn trả tiền cho 8 TB để chỉ dùng được 4 TB.

  • D (bật "burst mode" trên ổ gp2) — không có công tắc nào tên như vậy. Cơ chế burst của gp2 là tự động và dựa trên tín dụng I/O, và volume từ 1 TB trở lên đã luôn chạy ở hiệu năng nền, không còn dùng tín dụng nữa.

Ghi nhớ

⚠ Các loại EBS volume — bảng phải thuộc: | Loại | IOPS tối đa | Đặc điểm | |---|---|---| | gp2 | 16.000 | 3 IOPS/GB, có burst khi volume nhỏ | | gp3 | 16.000 | IOPS và throughput cấp ĐỘC LẬP với dung lượng | | io1 | 64.000 | PIOPS, tỷ lệ tối đa 50:1 | | io2 | 64.000 | bền hơn, tỷ lệ 500:1 | | io2 Block Express | 256.000 | độ trễ dưới mili giây | | st1 | throughput cao | HDD, cho tải tuần tự (log, big data) | | sc1 | rẻ nhất | HDD lạnh, ít truy cập |

⚠ Trong đời thực, gp3 mới là câu trả lời hay nhất cho bài toán này:

gp3 cho SẴN 3.000 IOPS và 125 MB/s ở MỌI kích thước
        ↓
    Mua thêm IOPS tới 16.000 mà KHÔNG cần tăng dung lượng
        ↓
    → rẻ hơn gp2 khoảng 20% cho cùng dung lượng
    → chuyển đổi TẠI CHỖ, không gián đoạn (Elastic Volumes)
        ↓
    → đề này không nêu gp3 trong phương án, nên đáp án là RAID 0

Từ khoá nhận diện:

"vượt trần IOPS của một volume" → RAID 0, hoặc io2 Block Express "cần IOPS cao mà không cần dung lượng" → gp3 "cần dự phòng" → RAID 1 (hoặc tốt hơn: snapshot + Multi-AZ ở tầng ứng dụng) "gp2 burst mode" → KHÔNG TỒN TẠI như một công tắc "độ trễ thấp nhất, IOPS cực cao" → io2 Block Express "throughput tuần tự lớn, rẻ" → st1

RAID 0 và RAID 1 trên EBS Nội dung
RAID 0 cộng IOPS và dung lượng, không có dự phòng
RAID 1 nhân bản — an toàn hơn, không cộng IOPS ghi
AWS khuyến nghị RAID 0 nếu cần hiệu năng; RAID 1 thường không đáng vì EBS đã sao chép trong AZ
Snapshot RAID dùng create-snapshots (số nhiều) để chụp nhất quán cả bộ
Đừng quên trần của INSTANCE Nội dung
Mỗi loại instance có trần băng thông EBS riêng
RAID 0 nhiều volume không vượt được trần đó
Kiểm tra chỉ số EBSIOBalance% và EBSByteBalance%
Nếu chạm trần phải đổi sang loại instance lớn hơn

Ba việc kiểm chứng: | Việc | Cách | |---|---| | Volume có đang chạm trần không | chỉ số VolumeQueueLength — cao là đang xếp hàng | | Instance có đang chạm trần không | EBSIOBalance% tụt về 0 | | gp3 rẻ hơn bao nhiêu | tính lại giá: gp3 rẻ hơn gp2 và tách riêng phần IOPS |

Và một lời khuyên thẳng thắn về thứ tự cân nhắc: trước khi nghĩ tới RAID, hãy kiểm tra xem gp3 có giải quyết được không. RAID 0 thêm một lớp phức tạp vào hệ điều hành, nhân đôi rủi ro mất dữ liệu, và làm việc chụp snapshot khó hơn hẳn — trong khi gp3 cho bạn IOPS cần thiết bằng một lần modify-volume không gián đoạn, và thường còn rẻ hơn cấu hình gp2 đang có.

Câu 112 Domain 5: Networking and Content Delivery

You would like to establish a software only private connection between your corporate data center and your AWS VPC.

Which of the following component should you NOT use?

  1. A

    Virtual Private Gateway

  2. B

    Direct Connect

  3. C

    Customer Gateway

  4. D

    Site-to-Site VPN

Xem giải thích

Đáp án

B — Direct Connect là thành phần KHÔNG nên dùng.

Vì sao đúng

Từ khoá quyết định nằm ở hai chữ trong đề: "software only" — chỉ bằng phần mềm, không dựng hạ tầng vật lý.

⚠ Điểm mấu chốt — VPN là phần mềm, Direct Connect là phần cứng và hợp đồng:

Site-to-Site VPN (software only)
        ↓
    Dựng trong VÀI PHÚT, hoàn toàn bằng cấu hình
    Chạy qua internet công cộng, mã hoá IPsec
        ↓
    Ba thành phần cần có:
        Virtual Private Gateway (phía AWS)
        Customer Gateway (đại diện thiết bị của bạn)
        Site-to-Site VPN connection (đường hầm nối hai bên)

Direct Connect
        ↓
    Đường CÁP VẬT LÝ riêng tới một Direct Connect location
    Cần hợp đồng với đối tác viễn thông, cần cross-connect
        ↓
    → mất HÀNG TUẦN tới HÀNG THÁNG để có
    → KHÔNG phải "software only"

⚠ Ba thành phần của VPN, phải nhớ đúng vai:

Thành phần Nằm ở đâu
Virtual Private Gateway (VGW) phía AWS, gắn vào VPC
Customer Gateway (CGW) một tài nguyên AWS ĐẠI DIỆN cho thiết bị của bạn — khai IP công cộng và thông tin BGP
Site-to-Site VPN connection đường hầm nối VGW với CGW

Điểm hay nhầm: Customer Gateway không phải thiết bị vật lý ở nhà bạn, nó là một đối tượng cấu hình trong AWS mô tả thiết bị đó.

⚠ Và một đặc điểm đáng nhớ về tính sẵn sàng:

Mỗi Site-to-Site VPN connection tự có HAI ĐƯỜNG HẦM
        ↓
    Hai đường ở HAI endpoint khác nhau của AWS
        ↓
    → AWS bảo trì một đường thì đường kia vẫn chạy
    → nhưng thiết bị PHÍA BẠN phải cấu hình dùng cả hai
      mới thật sự có dự phòng

Vì sao các phương án khác sai

(Ba phương án còn lại đều là thành phần CẦN dùng, nên chúng không phải đáp án cho câu hỏi "KHÔNG nên dùng cái nào".)

  • A (Virtual Private Gateway) — là đầu mối phía AWS của kết nối VPN, bắt buộc phải có.

  • C (Customer Gateway) — là đối tượng khai báo thiết bị VPN phía bạn, cũng bắt buộc.

  • D (Site-to-Site VPN) — chính là kết nối cần dựng, đúng nghĩa "software only".

Ghi nhớ

⚠ Site-to-Site VPN và Direct Connect — bảng phải thuộc: | | Site-to-Site VPN | Direct Connect | |---|---|---| | Thời gian có được | vài phút | vài tuần tới vài tháng | | Đường truyền | internet công cộng | cáp riêng | | Mã hoá | có sẵn (IPsec) | KHÔNG mã hoá mặc định — cần thêm VPN hoặc MACsec | | Băng thông | tới ~1,25 Gbps mỗi đường hầm | 50 Mbps tới 100 Gbps | | Độ ổn định độ trễ | thay đổi theo internet | rất ổn định | | Chi phí | thấp | cao (cổng + truyền dữ liệu) |

Từ khoá nhận diện:

"software only", "nhanh", "ngay lập tức" → Site-to-Site VPN "băng thông ổn định, độ trễ đều" → Direct Connect "vừa riêng vừa mã hoá" → Direct Connect + VPN chạy đè lên "dự phòng cho Direct Connect" → VPN làm đường backup "nối nhiều VPC và nhiều chi nhánh" → Transit Gateway "nối một dịch vụ, không nối cả mạng" → PrivateLink

Ba kiến trúc kết nối lai hay gặp Nội dung
VPN đơn thuần rẻ, nhanh, đủ cho phần lớn nhu cầu
Direct Connect + VPN dự phòng thực hành tốt được khuyến nghị
Hai Direct Connect ở hai location sẵn sàng cao nhất, đắt nhất
Hai kiểu Virtual Interface của Direct Connect Nội dung
Private VIF nối tới VPC qua VGW hoặc Direct Connect Gateway
Public VIF nối tới dịch vụ công khai của AWS (S3, DynamoDB) qua IP công cộng
Transit VIF nối tới Transit Gateway — nhiều VPC cùng lúc
Điểm quan trọng về bảo mật Nội dung
Direct Connect KHÔNG mã hoá dữ liệu đi trên cáp ở dạng thô
Muốn mã hoá chạy IPsec VPN đè lên Direct Connect, hoặc dùng MACsec
Đề thi hay hỏi "riêng tư VÀ mã hoá" → phải là cả hai

Ba việc kiểm chứng: | Việc | Cách | |---|---| | Đường hầm có lên không | describe-vpn-connections, xem trạng thái cả hai tunnel | | Định tuyến đã đúng chưa | route table của VPC phải có tuyến về mạng tại chỗ (bật route propagation) | | Lưu lượng có đi qua không | VPC Flow Logs, và chỉ số TunnelState |

Và một lời khuyên vận hành hay bị bỏ qua: hãy cấu hình thiết bị phía bạn để dùng CẢ HAI đường hầm của VPN, và đặt cảnh báo trên chỉ số TunnelState. Rất nhiều nơi chỉ cấu hình một đường hầm rồi coi VPN là "đã có dự phòng" — cho tới ngày AWS bảo trì đúng endpoint đó và kết nối tới trung tâm dữ liệu đứt hẳn, trong khi đường hầm thứ hai vẫn nằm đó, sẵn sàng, và chưa từng được cấu hình.

Câu 113 Domain 6: Cost and Performance Optimization

You want to improve the process to assign the accounting for your AWS bills to the different departments that the resources belong to. You currently have all your resources under one AWS account.

What is the best way to properly get billing reports for the different company departments, with the least possible administrative overhead?

  1. A

    Use Tags

  2. B

    Use AWS Organizations

  3. C

    Use EC2 Billing Report

  4. D

    Use Cost Allocation Tags

Xem giải thích

Đáp án

D — Dùng Cost Allocation Tags.

Vì sao đúng

Bẫy của câu này rất tinh vi: có tới hai phương án nói về tag, và chỉ một cái đúng.

⚠ Điểm mấu chốt — gắn tag KHÔNG làm cho tag hiện ra trong báo cáo chi phí:

Bước 1: gắn tag lên tài nguyên
        Department = KyThuat
        ↓
    → tag tồn tại, tìm kiếm được, lọc được
    → nhưng KHÔNG hiện trong Cost Explorer

Bước 2: KÍCH HOẠT tag đó làm COST ALLOCATION TAG
        Billing console → Cost allocation tags → Activate
        ↓
    → từ giờ tag mới xuất hiện trong dữ liệu chi phí
    → Cost Explorer nhóm theo nó được

Đây chính là khác biệt giữa phương án A và phương án D: "Tags" là điều kiện cần, "Cost Allocation Tags" mới là điều kiện đủ.

⚠ Vì sao đây là cách "ít công sức quản trị nhất" như đề yêu cầu:

Giữ nguyên MỘT tài khoản
        ↓
    Chỉ cần gắn tag + kích hoạt + mở Cost Explorer
        ↓
    → không phải di chuyển tài nguyên
    → không phải dựng lại quyền hạn
    → làm xong trong một buổi

⚠ Cảnh báo quan trọng — dữ liệu chi phí KHÔNG hồi tố:

Kích hoạt tag hôm nay
        ↓
    → chỉ áp cho dữ liệu chi phí TỪ NAY TRỞ ĐI
        ↓
    → hoá đơn tháng trước không được gắn tag lại
    → phải chờ tới chu kỳ thanh toán sau mới có báo cáo đầy đủ

Xem thêm câu #11590: cùng đáp án cost allocation tag nhưng đặt vấn đề từ chi phí Elastic IP nằm không — ở đó nhấn mạnh việc phát hiện lãng phí, còn ở đây nhấn mạnh việc phân bổ theo phòng ban.

Vì sao các phương án khác sai

  • A (dùng Tags) — đây là phương án gần nhất và là bẫy chính. Gắn tag là một nửa việc; thiếu bước kích hoạt thì Cost Explorer không nhóm theo tag đó được, và bạn không có báo cáo nào cả.

  • B (dùng AWS Organizations) — hoạt động được và là kiến trúc tốt hơn về lâu dài (tách tài khoản theo phòng ban thì chi phí tự tách bạch). Nhưng đề nói rõ "ít công sức quản trị nhất" và "hiện đang dùng chung một tài khoản" — tách hàng trăm tài nguyên sang nhiều tài khoản là một dự án lớn, không phải một cấu hình.

  • C ("EC2 Billing Report") — không tồn tại dịch vụ nào tên như vậy. Các báo cáo chi phí thật là Cost Explorer, Cost and Usage Report (CUR), và Budgets.

Xem thêm câu #11663: cùng cơ chế cost allocation tag nhưng áp cho chi phí từng bucket S3 — ở đó có thêm S3 Storage Lens để biết chi phí đến từ đâu.

Ghi nhớ

⚠ Bộ công cụ chi phí của AWS — bảng phải thuộc: | Công cụ | Việc | |---|---| | Cost Explorer | xem và phân tích, nhóm theo tag / dịch vụ / tài khoản | | Cost and Usage Report (CUR) | dữ liệu thô chi tiết nhất, đổ vào S3 | | AWS Budgets | đặt ngân sách và cảnh báo khi sắp vượt | | Cost Anomaly Detection | phát hiện chi phí tăng bất thường | | Compute Optimizer | gợi ý giảm cỡ tài nguyên | | Trusted Advisor | khuyến nghị tối ưu chi phí |

Từ khoá nhận diện:

"chi phí theo phòng ban / dự án, một tài khoản" → Cost Allocation Tags "chỉ gắn tag là xong" → SAI, phải KÍCH HOẠT tag "tách bạch chi phí triệt để" → Organizations, mỗi phòng ban một tài khoản "cảnh báo khi vượt ngân sách" → AWS Budgets "EC2 Billing Report" → KHÔNG TỒN TẠI

Hai loại cost allocation tag Nội dung
AWS generated tiền tố aws: — aws:createdBy, aws:cloudformation:stack-name
User-defined tag bạn tự đặt — phải kích hoạt thủ công
Ai kích hoạt được chỉ tài khoản quản lý (management account)
Sau khi kích hoạt chờ tới 24 giờ mới thấy trong Cost Explorer
Làm sao ép mọi tài nguyên đều có tag Cách
Tag Policy của Organizations ép định dạng và giá trị hợp lệ
SCP chặn tạo tài nguyên nếu thiếu tag bắt buộc
AWS Config required-tags phát hiện tài nguyên thiếu tag
Tag Editor gắn tag hàng loạt cho tài nguyên đã có
Điểm yếu của cách dùng tag Nội dung
Không phải dịch vụ nào cũng hỗ trợ tag một phần chi phí sẽ nằm ở mục "không gắn tag"
Phụ thuộc kỷ luật con người quên gắn tag là chi phí rơi vào khoảng trống
Chi phí dùng chung NAT Gateway, Transit Gateway phục vụ nhiều đội — chia thế nào là bài toán riêng
So với tách tài khoản tách tài khoản không bao giờ có tài nguyên "không gắn tag"

Ba việc kiểm chứng: | Việc | Cách | |---|---| | Tag đã kích hoạt chưa | Billing console → Cost allocation tags | | Bao nhiêu chi phí chưa gắn tag | Cost Explorer, nhóm theo tag, xem mục "No tag key" | | Tài nguyên nào thiếu tag | Tag Editor hoặc Config rule |

Và một lời khuyên khi triển khai: hãy kích hoạt cost allocation tag ngay cả khi chưa gắn tag xong cho toàn bộ tài nguyên. Vì dữ liệu chi phí không hồi tố, mỗi ngày trì hoãn là một ngày dữ liệu vĩnh viễn không phân bổ được — kích hoạt trước rồi gắn tag dần sẽ cho bạn báo cáo từng phần ngay từ tháng này, thay vì một khoảng trắng hoàn toàn cho tới khi công việc gắn tag hoàn tất.

Câu 114 Domain 5: Networking and Content Delivery

VPC Peering has been enabled between VPC A and VPC B, and the route tables have been updated for VPC A. Still, your instances cannot communicate.

What is the most likely issue?

  1. A

    Check if DNS Resolution is enabled

  2. B

    Check the NACL

  3. C

    Check the instance security groups

  4. D

    Check the route tables in VPC B

Xem giải thích

Đáp án

D — Kiểm tra route table ở VPC B.

Vì sao đúng

Đề đã tự chỉ ra manh mối: "route table đã được cập nhật cho VPC A" — nghĩa là mới làm một phía.

⚠ Điểm mấu chốt — VPC peering đòi định tuyến ở CẢ HAI PHÍA:

VPC A route table: 10.2.0.0/16 → pcx-xxxxx   ✓ đã có
VPC B route table: 10.1.0.0/16 → pcx-xxxxx   ✗ THIẾU
        ↓
    Gói tin từ A đi sang B bình thường
        ↓
    B nhận được, xử lý xong, muốn trả lời
        ↓
    → B không biết đường về A
        ↓
    → gói trả lời rơi vào hư không
    → triệu chứng: TIMEOUT, không phải "connection refused"

Peering connection chỉ là một đường ống; nó không tự tạo tuyến đường nào. Bạn phải tự khai ở cả hai bên rằng "muốn tới dải kia thì đi qua ống này".

⚠ Danh sách kiểm tra đầy đủ cho VPC peering:

1. Peering connection ở trạng thái ACTIVE
       (bên nhận phải CHẤP NHẬN yêu cầu)
2. Route table VPC A → dải của B qua pcx
3. Route table VPC B → dải của A qua pcx   ← thường quên
4. Security Group hai bên cho phép dải IP của nhau
5. NACL hai bên cho phép cả hai chiều

⚠ Và ba giới hạn của peering phải thuộc:

KHÔNG bắc cầu (non-transitive)
        ↓
    A ↔ B và B ↔ C không làm cho A ↔ C
    → muốn A ↔ C phải tạo peering riêng

CIDR KHÔNG được chồng lấn
        ↓
    Hai VPC cùng dùng 10.0.0.0/16 → không peer được

KHÔNG dùng chung internet/NAT/VPC endpoint của nhau
        ↓
    Không "mượn" NAT Gateway của VPC bên kia được

Vì sao các phương án khác sai

  • C (kiểm tra security group của instance) — đây là phương án gần nhất và là thứ đáng kiểm tra tiếp theo. Nhưng đề đã nêu rõ chỉ mới cập nhật route table của một phía, nên nguyên nhân có khả năng cao nhất là thiếu tuyến ở phía kia. (Trong đời thực thì SG cũng rất hay là thủ phạm — nhớ dùng tham chiếu SG chéo VPC, chỉ hoạt động khi hai VPC cùng Region.)

  • B (kiểm tra NACL) — cũng đáng kiểm tra, nhưng NACL mặc định cho phép mọi thứ; nó chỉ thành vấn đề nếu ai đó đã sửa. Thiếu tuyến đường là nguyên nhân trực tiếp hơn.

  • A (kiểm tra DNS Resolution có bật không) — chỉ ảnh hưởng tới việc phân giải tên miền riêng giữa hai VPC. Nếu kết nối bằng địa chỉ IP thì nó hoàn toàn không liên quan.

Ghi nhớ

⚠ Ba giới hạn của VPC Peering — bảng phải thuộc: | Giới hạn | Nội dung | |---|---| | Không bắc cầu | A↔B, B↔C không cho A↔C | | CIDR không được chồng lấn | kể cả một phần | | Không dùng chung gateway | không mượn NAT, IGW, VPC endpoint của nhau |

Từ khoá nhận diện:

"peering rồi mà không thông" → kiểm tra route table CẢ HAI PHÍA "nhiều VPC cần nối với nhau" → Transit Gateway, không phải peering từng cặp "CIDR trùng nhau" → peering KHÔNG được — dùng PrivateLink "chỉ cần lộ một dịch vụ" → PrivateLink "peering chéo Region" → được, nhưng tham chiếu SG thì KHÔNG

⚠ Peering so với Transit Gateway — bảng phải thuộc: | | VPC Peering | Transit Gateway | |---|---|---| | Số kết nối cho N VPC | N×(N−1)/2 — bùng nổ | N | | Bắc cầu | không | có | | Chi phí | chỉ trả tiền truyền dữ liệu | thêm phí gắn kết + phí xử lý dữ liệu | | Nối mạng tại chỗ | không | có, qua VPN/Direct Connect | | Khi nào dùng | vài VPC, đơn giản, rẻ | nhiều VPC, kiến trúc trung tâm |

Chẩn đoán kết nối giữa hai VPC Thứ tự
1 trạng thái peering là active chưa
2 route table hai phía
3 Security Group hai phía
4 NACL hai phía, cả hai chiều
5 VPC Reachability Analyzer — chỉ đích danh thành phần chặn
Khi nào PrivateLink hợp hơn peering Nội dung
CIDR chồng lấn PrivateLink vẫn hoạt động
Chỉ cần một dịch vụ, không cần cả mạng
Một chiều bên dùng gọi được bên cung cấp, không ngược lại
Không muốn lộ toàn bộ mạng nguyên tắc quyền tối thiểu ở tầng mạng

Ba việc kiểm chứng: | Việc | Cách | |---|---| | Peering đã active chưa | describe-vpc-peering-connections | | Tuyến hai phía | describe-route-tables cho cả hai VPC | | Gói bị chặn ở đâu | VPC Flow Logs, tìm bản ghi REJECT |

Và một lời khuyên về kiến trúc dài hạn: nếu bạn đã có từ bốn năm VPC trở lên cần nối với nhau, hãy chuyển sang Transit Gateway trước khi mạng lưới peering trở nên không quản nổi. Với 5 VPC là 10 kết nối, với 10 VPC là 45 — và mỗi kết nối lại cần hai dòng route ở hai bảng khác nhau, nên đúng cái lỗi trong câu hỏi này sẽ lặp lại nhiều lần, mỗi lần một chỗ khác nhau.

Câu 115 Domain 5: Networking and Content Delivery

Your RDS database sometimes can become unresponsive, failing health checks and you need your application to fail-over automatically and safely without losing any committed transactions.

Which options would you choose?

  1. A

    Create an RDS read replica in the same region and an AWS lambda function to promote that replica as the main database when the main RDS database is down

  2. B

    Enable RDS Multi-AZ

  3. C

    Setup a CloudWatch alarm for DB RAM going over 90% and reboot the database then

  4. D

    Create an RDS read replica in a different region and an AWS lambda function to promote that replica as the main database when the main RDS database is down

Xem giải thích

Đáp án

B — Bật RDS Multi-AZ.

Vì sao đúng

Đề nêu ba yêu cầu, và Multi-AZ là lựa chọn duy nhất thoả cả ba:

Đề yêu cầu Multi-AZ
Chuyển đổi TỰ ĐỘNG có — AWS lo hoàn toàn
AN TOÀN có — sao chép đồng bộ
Không mất giao dịch đã commit có — đây là điểm quyết định

⚠ Điểm mấu chốt — sao chép ĐỒNG BỘ nghĩa là không mất dữ liệu:

Ứng dụng gửi COMMIT
        ↓
    RDS ghi vào instance chính
        ↓
    ĐỒNG THỜI ghi sang standby ở AZ khác
        ↓
    Chỉ khi CẢ HAI đã ghi xong mới báo commit thành công
        ↓
    → mọi giao dịch đã commit CHẮC CHẮN có mặt ở standby
    → failover không mất giao dịch nào

Đối lập với read replica:

Read replica dùng sao chép BẤT ĐỒNG BỘ
        ↓
    Instance chính báo commit NGAY, không chờ replica
        ↓
    Máy chính chết đột ngột
        ↓
    → những giao dịch chưa kịp sao chép sang BỊ MẤT
    → vi phạm thẳng yêu cầu của đề

⚠ Failover diễn ra thế nào:

Instance chính không phản hồi
        ↓
    AWS phát hiện, chuyển bản ghi DNS của endpoint
    sang standby (thường 60–120 giây)
        ↓
    → ứng dụng KHÔNG cần đổi chuỗi kết nối
    → chỉ cần kết nối lại

Xem thêm câu #11581: cùng đáp án Multi-AZ nhưng đặt vấn đề từ góc "cách dễ và hiệu quả để có sẵn sàng cao", với bẫy là cấu hình TTL của JVM.

Vì sao các phương án khác sai

  • A (read replica cùng Region + Lambda tự promote khi máy chính chết) — đây là phương án gần nhất và về mặt cơ khí thì chạy được. Nhưng nó vi phạm yêu cầu quan trọng nhất: sao chép bất đồng bộ có thể mất giao dịch đã commit. Ngoài ra bạn phải tự viết và tự bảo trì logic phát hiện lỗi — mà tự dựng cơ chế failover là một trong những thứ khó làm đúng nhất.

  • D (read replica ở Region khác + Lambda promote) — cùng vấn đề mất dữ liệu, và còn tệ hơn: sao chép chéo Region có độ trễ cao hơn nhiều, nên cửa sổ mất dữ liệu rộng hơn. (Cách này hợp cho khôi phục thảm hoạ cấp Region, không phải cho sẵn sàng cao hằng ngày.)

  • C (đặt CloudWatch alarm khi RAM vượt 90% rồi khởi động lại cơ sở dữ liệu) — chữa triệu chứng bằng cách gây ra sự cố: khởi động lại cơ sở dữ liệu là gián đoạn dịch vụ, và đề nói máy "đôi khi không phản hồi" chứ không nói nguyên nhân là RAM.

Ghi nhớ

⚠ Đồng bộ và bất đồng bộ — bảng phải thuộc, đây là chỗ quyết định mọi câu hỏi loại này: | | Multi-AZ (đồng bộ) | Read Replica (bất đồng bộ) | |---|---|---| | Mất dữ liệu khi failover | KHÔNG | CÓ THỂ | | Mục đích | sẵn sàng cao | chia tải đọc | | Phục vụ đọc | không | có | | Failover | tự động | thủ công (promote) | | Ảnh hưởng độ trễ ghi | có (phải chờ cả hai) | không |

Từ khoá nhận diện:

"không được mất giao dịch đã commit" → Multi-AZ (đồng bộ) "failover tự động" → Multi-AZ "chia tải đọc" → Read Replica "chịu được mất cả một Region" → cross-Region replica hoặc Aurora Global Database "tự viết Lambda để promote" → thường SAI khi đã có Multi-AZ

Hai kiểu Multi-AZ của RDS Nội dung
Multi-AZ DB instance 1 standby, không phục vụ đọc, failover 60–120 giây
Multi-AZ DB cluster 2 bản đọc được, failover dưới 35 giây
Điều gì kích hoạt failover Nội dung
Mất một Availability Zone
Hỏng máy chính hoặc mất mạng
Đổi loại DB instance
Vá phần mềm AWS vá standby trước rồi failover
reboot-db-instance --force-failover cách tự kiểm thử
RPO và RTO — hai chỉ số phải phân biệt Nội dung
RPO (Recovery Point Objective) mất bao nhiêu dữ liệu — Multi-AZ: gần bằng 0
RTO (Recovery Time Objective) mất bao lâu để phục hồi — Multi-AZ: 1–2 phút
PITR từ backup RPO ~5 phút, RTO hàng chục phút tới hàng giờ
Aurora Global Database RPO ~1 giây, RTO dưới 1 phút cho chuyển Region

Ba việc kiểm chứng: | Việc | Cách | |---|---| | Đã bật Multi-AZ chưa | describe-db-instances, xem MultiAZ: true | | Failover mất bao lâu thật | reboot-db-instance --force-failover rồi bấm giờ | | Ứng dụng có nối lại được không | kiểm tra DNS cache và connection pool |

Và một lời khuyên rất thực tế: hãy chủ động kích hoạt failover mỗi quý một lần trong giờ bảo trì. Multi-AZ hứa chuyển đổi trong một tới hai phút, nhưng con số đó chỉ nói về phía cơ sở dữ liệu — thời gian ứng dụng của bạn thật sự hồi phục còn phụ thuộc vào DNS cache (JVM cache vĩnh viễn nếu không cấu hình), vào connection pool có phát hiện kết nối chết hay không, và vào logic thử lại — ba thứ chỉ lộ ra khi bạn thử thật.

Câu 116 Domain 4: Security and Compliance

As part of your yearly compliance report, it has been noted that many of your EC2 instances have been lagging with their OS patches updates. You have decided to use SSM to patch these instances regularly. To meet regulatory guidelines, you need to provide a report showing that no outstanding known vulnerabilities are left unpatched. This report must be generated weekly.

Which service should you use?

  1. A

    AWS SSM

  2. B

    AWS Shield

  3. C

    AWS GuardDuty

  4. D

    AWS Inspector

Xem giải thích

Đáp án

D — Amazon Inspector.

Vì sao đúng

Câu này phân định rạch ròi hai việc mà nhiều người gộp làm một: VÁ lỗ hổng và CHỨNG MINH đã hết lỗ hổng.

⚠ Điểm mấu chốt — Patch Manager vá, Inspector chứng minh:

Systems Manager Patch Manager
        ↓
    Cài bản vá, báo cáo COMPLIANT / NON_COMPLIANT
        ↓
    → "máy đã cài đủ bản vá được duyệt chưa"

Amazon Inspector
        ↓
    Quét và đối chiếu với cơ sở dữ liệu CVE
        ↓
    → "máy còn LỖ HỔNG ĐÃ BIẾT nào không"
        ↓
    → đây mới là thứ báo cáo tuân thủ cần

Khác biệt tinh tế nhưng quan trọng: một máy có thể tuân thủ chính sách vá mà vẫn còn lỗ hổng — vì baseline chưa duyệt bản vá đó, vì lỗ hổng nằm trong thư viện của ứng dụng chứ không phải gói hệ điều hành, hoặc vì bản vá vừa mới được công bố.

⚠ Inspector thế hệ mới quét liên tục, không cần lên lịch:

Inspector v2 tự động quét khi:
        - có instance mới
        - có gói phần mềm được cài hoặc cập nhật
        - có CVE MỚI được công bố
        ↓
    → không cần "chạy quét hằng tuần"
    → chỉ cần XUẤT báo cáo hằng tuần

⚠ Xuất báo cáo cho kiểm toán:

Inspector → xuất findings ra S3 (định dạng CSV hoặc JSON)
        ↓
    Hoặc đẩy vào Security Hub để tổng hợp
        ↓
    Tự động hoá bằng EventBridge theo lịch tuần
        ↓
    → đúng yêu cầu "báo cáo hằng tuần" của đề

Vì sao các phương án khác sai

  • A (AWS SSM) — đây là phương án gần nhất và là thứ đề đã nói đang dùng để vá máy. Nhưng báo cáo của Patch Manager trả lời câu hỏi "đã cài đủ bản vá được duyệt chưa", không phải "còn lỗ hổng đã biết nào không". Hai công cụ bổ sung cho nhau: SSM sửa, Inspector kiểm chứng.

  • C (Amazon GuardDuty) — phát hiện HÀNH VI đáng ngờ (liên lạc với địa chỉ độc hại, đào tiền ảo, dò quét bất thường). Nó không quét lỗ hổng phần mềm.

  • B (AWS Shield) — dịch vụ chống DDoS. Không liên quan tới lỗ hổng hay tuân thủ bản vá.

Ghi nhớ

⚠ Bốn dịch vụ bảo mật hay bị nhầm — bảng phải thuộc: | Dịch vụ | Trả lời câu hỏi | |---|---| | Inspector | "phần mềm có LỖ HỔNG ĐÃ BIẾT nào không" | | GuardDuty | "có HÀNH VI độc hại nào đang diễn ra không" | | AWS Config | "CẤU HÌNH có đúng chuẩn không" | | Security Hub | "tổng hợp mọi phát hiện ở một chỗ" | | Macie | "có dữ liệu nhạy cảm nào trong S3 không" | | Patch Manager | "máy đã cài đủ bản vá chưa" | | Detective | "sự cố này bắt nguồn từ đâu" |

Từ khoá nhận diện:

"báo cáo lỗ hổng, CVE, tuân thủ bảo mật" → Inspector "cài bản vá" → Patch Manager "hành vi bất thường, tài khoản bị xâm nhập" → GuardDuty "cấu hình lệch chuẩn" → AWS Config "gom mọi cảnh báo bảo mật" → Security Hub "tìm dữ liệu nhạy cảm trong S3" → Macie

⚠ Inspector v2 quét được những gì: | Đối tượng | Nội dung | |---|---| | EC2 | gói hệ điều hành, và CVE của ứng dụng | | Container image trong ECR | quét khi push, và quét lại khi có CVE mới | | Lambda | mã hàm và các phụ thuộc | | Cách bật | một công tắc ở cấp tài khoản hoặc tổ chức | | Yêu cầu với EC2 | SSM Agent — Inspector dùng nó để lấy kiểm kê phần mềm |

Điểm số của Inspector Nội dung
CVSS điểm chuẩn của ngành
Inspector risk score CVSS + ngữ cảnh môi trường của bạn
Ngữ cảnh gồm máy có phơi ra internet không, lỗ hổng có mã khai thác công khai không
Ý nghĩa giúp ưu tiên — không phải CVE nào cũng khẩn cấp như nhau
Quy trình tuân thủ đầy đủ Bước
1 Patch Manager vá theo lịch
2 Inspector quét liên tục, tìm cái còn sót
3 Security Hub tổng hợp và so với chuẩn (CIS, PCI DSS)
4 Xuất báo cáo ra S3 cho kiểm toán viên
5 EventBridge tự động hoá bước 4 theo lịch tuần

Ba việc kiểm chứng: | Việc | Cách | |---|---| | Máy nào chưa được quét | Inspector coverage — máy vắng mặt mới là vấn đề lớn | | Lỗ hổng nghiêm trọng còn bao nhiêu | lọc theo severity = CRITICAL | | Báo cáo có xuất được không | create-findings-report với đích là S3 |

Và một lời nhắc quan trọng khi đọc kết quả: máy không xuất hiện trong Inspector nguy hiểm hơn máy có nhiều lỗ hổng. Inspector phụ thuộc vào SSM Agent để biết máy đang cài những gói nào; một instance thiếu agent hay thiếu IAM role đơn giản là không nằm trong phạm vi quét, và báo cáo gửi cho kiểm toán viên sẽ hiện một bức tranh sạch sẽ cho những máy còn lại — hãy luôn đối chiếu số máy được quét với số instance đang chạy thật.

Câu 117 Domain 5: Networking and Content Delivery

You would like to ensure that your instances in your private subnet for us-west-1b can talk to your public instances in us-west-1c using their private IP addresses.

How can you establish network connectivity between the two subnets in the simplest possible way?

  1. A

    Use a NAT Gateway

  2. B

    Create two VPCs with one subnet each, and peer them

  3. C

    Create one VPC with two subnets

  4. D

    Use a NAT instance

Xem giải thích

Đáp án

C — Tạo MỘT VPC với hai subnet.

Vì sao đúng

Câu này kiểm tra một điều rất cơ bản mà đề cố tình làm rối bằng các phương án phức tạp: mọi subnet trong cùng một VPC đã tự nói chuyện được với nhau rồi.

⚠ Điểm mấu chốt — VPC có một route table ngầm cho chính dải CIDR của nó:

Tạo VPC 10.0.0.0/16
        ↓
    Mọi route table trong VPC đó tự có một dòng:
        10.0.0.0/16 → local
        ↓
    → dòng này KHÔNG XOÁ ĐƯỢC, KHÔNG SỬA ĐƯỢC
    → mọi subnet trong VPC nối được với nhau
      bằng IP RIÊNG, kể cả khác Availability Zone

⚠ "Public" và "private" không phải hai thế giới tách biệt:

Public subnet  = có route 0.0.0.0/0 → Internet Gateway
Private subnet = không có route đó
        ↓
    Khác biệt DUY NHẤT là đường ra internet
        ↓
    → giữa hai subnet với nhau, chúng hoàn toàn bình đẳng
    → nói chuyện bằng IP riêng không cần thêm gì cả

⚠ Vậy nếu không thông thì lỗi ở đâu:

Trong cùng VPC, chỉ có hai thứ chặn được:
        ↓
    Security Group  → phải cho phép dải IP hoặc SG của bên kia
    Network ACL     → phải cho phép CẢ HAI CHIỀU (stateless)
        ↓
    Định tuyến thì KHÔNG BAO GIỜ là nguyên nhân
    trong cùng một VPC

Vì sao các phương án khác sai

  • B (tạo hai VPC mỗi cái một subnet rồi peering) — đây là phương án gần nhất và về kỹ thuật thì chạy được, nhưng nó là cách phức tạp nhất có thể cho một việc đơn giản: thêm peering connection, thêm hai bộ route table phải sửa ở cả hai phía, thêm ràng buộc CIDR không được chồng lấn. Đề hỏi cách đơn giản nhất.

  • A (dùng NAT Gateway) — NAT Gateway để private subnet ra INTERNET, không phải để hai subnet nói chuyện với nhau. Nó còn tốn tiền theo giờ và theo mỗi GB đi qua.

  • D (dùng NAT instance) — cùng lỗi như A, và còn là cách cũ phải tự vận hành (nhớ tắt source/destination check, tự lo sẵn sàng cao).

Ghi nhớ

⚠ Tuyến local — điều đầu tiên phải nhớ về VPC: | Nội dung | |---| | Mỗi VPC tự có tuyến <CIDR-cua-VPC> → local trong mọi route table | | Tuyến này không xoá được, không sửa được | | Nhờ nó, mọi subnet trong VPC nối được với nhau, kể cả khác AZ | | Lưu lượng giữa các AZ có tính phí truyền dữ liệu, nhưng vẫn thông |

Từ khoá nhận diện:

"hai subnet trong cùng VPC không nói chuyện được" → SG hoặc NACL, KHÔNG BAO GIỜ là route "private subnet cần ra internet" → NAT Gateway "hai VPC cần nối" → peering hoặc Transit Gateway "public subnet" → có route 0.0.0.0/0 → IGW "gọi dịch vụ AWS không qua internet" → VPC endpoint

Bốn thứ quyết định một gói tin đi được hay không Thứ tự
1 Route table — có đường đi tới đích không
2 Network ACL của subnet nguồn (chiều ra)
3 Network ACL của subnet đích (chiều vào)
4 Security Group của ENI đích (chiều vào)
Nhớ NACL stateless nên phải xét cả chiều về nữa
Chi phí truyền dữ liệu trong VPC Nội dung
Cùng AZ, dùng IP riêng miễn phí
Khác AZ có phí hai chiều
Qua NAT Gateway thêm phí xử lý dữ liệu
Mẹo đặt các thành phần hay nói chuyện với nhau cùng AZ khi có thể
Khi nào mới thật sự cần nhiều VPC Nội dung
Tách môi trường (prod / dev) — nhưng tài khoản riêng còn tốt hơn
Yêu cầu tuân thủ đòi cô lập mạng
Không gian địa chỉ IP đã cạn
Không phải lý do: chỉ để tách public và private — dùng subnet là đủ

Ba việc kiểm chứng: | Việc | Cách | |---|---| | Hai subnet có cùng VPC không | describe-subnets, so VpcId | | Có gì đang chặn | VPC Reachability Analyzer — chỉ đích danh thành phần | | Gói bị bỏ ở đâu | VPC Flow Logs, tìm bản ghi REJECT |

Và một lời khuyên khi thiết kế: hãy dùng nhiều subnet trong một VPC, chứ đừng dùng nhiều VPC, trừ khi có lý do rõ ràng. Mỗi VPC thêm vào là thêm một bộ route table, một lớp peering hoặc Transit Gateway, và một khoản chi phí truyền dữ liệu — trong khi phần lớn nhu cầu "tách biệt" mà người ta nghĩ cần VPC riêng thì thực ra chỉ cần subnet riêng cộng với security group viết cho tử tế.

Câu 118 Domain 3: Deployment, Provisioning, and Automation

As part of the best practices for DevOps, all your infrastructure is deployed using CloudFormation. This includes EBS volumes. When the CloudFormation stacks are deleted, it is mandatory to keep a snapshot of the EBS volumes for backup and compliance purposes.

How can you achieve this using CloudFormation?

  1. A

    Use DeletionPolicy=Snapshot

  2. B

    Enable termination protection

  3. C

    Use cfn helper scripts and Wait Conditions upon stack deletion

  4. D

    Reference the EBS volume as a stack output

Xem giải thích

Đáp án

A — Dùng DeletionPolicy=Snapshot.

Vì sao đúng

CloudFormation có sẵn một thuộc tính làm đúng điều đề yêu cầu: chụp ảnh trước khi xoá.

⚠ Điểm mấu chốt — ba giá trị của DeletionPolicy:

Delete (mặc định) → xoá tài nguyên cùng stack
Retain            → GIỮ LẠI tài nguyên, stack buông tay
Snapshot          → CHỤP SNAPSHOT rồi mới xoá  ← đáp án

Khai rất gọn:

OCuLuuTru:
  Type: AWS::EC2::Volume
  DeletionPolicy: Snapshot
  UpdateReplacePolicy: Snapshot
  Properties:
    Size: 500
    AvailabilityZone: !Select [0, !GetAZs '']
    Encrypted: true

⚠ Đừng quên UpdateReplacePolicy — nửa còn lại của bức tranh:

DeletionPolicy    → áp dụng khi XOÁ STACK
UpdateReplacePolicy → áp dụng khi CẬP NHẬT khiến tài nguyên
                      bị THAY THẾ (Replacement: True)
        ↓
    Chỉ khai DeletionPolicy
        ↓
    → một lần update có Replacement vẫn xoá volume cũ
      mà KHÔNG chụp snapshot
        ↓
    → mất dữ liệu ngay giữa một lần triển khai bình thường

⚠ Những loại tài nguyên hỗ trợ Snapshot — phải nhớ danh sách này:

AWS::EC2::Volume
AWS::RDS::DBInstance     và  AWS::RDS::DBCluster
AWS::ElastiCache::CacheCluster  và  ReplicationGroup
AWS::Redshift::Cluster
AWS::Neptune::DBCluster
AWS::DocDB::DBCluster
        ↓
    Loại KHÔNG hỗ trợ Snapshot (ví dụ S3 bucket)
        ↓
    → dùng Retain thay thế

Vì sao các phương án khác sai

  • B (bật termination protection) — đây là phương án gần nhất và cũng là một biện pháp bảo vệ thật. Nhưng nó chặn hẳn việc xoá stack chứ không tạo snapshot nào; và đề nói rõ stack sẽ bị xoá, chỉ cần giữ lại bản sao lưu.

  • D (đưa EBS volume ra làm stack output) — Outputs chỉ xuất một giá trị (id, ARN) cho stack khác dùng. Nó không ảnh hưởng gì tới số phận tài nguyên khi xoá stack.

  • C (dùng cfn helper script và Wait Condition khi xoá stack) — hiểu sai công dụng: các kịch bản cfn-init/cfn-signal và WaitCondition chỉ chạy lúc TẠO hoặc CẬP NHẬT, không có móc nào chạy khi xoá stack.

Ghi nhớ

⚠ Ba chính sách vòng đời của tài nguyên CloudFormation — bảng phải thuộc: | Chính sách | Khi nào áp dụng | |---|---| | DeletionPolicy | khi XOÁ stack | | UpdateReplacePolicy | khi CẬP NHẬT làm tài nguyên bị THAY THẾ | | CreationPolicy | chờ tín hiệu khi TẠO | | UpdatePolicy | cách cập nhật Auto Scaling group |

Từ khoá nhận diện:

"giữ bản sao lưu khi xoá stack" → DeletionPolicy: Snapshot "giữ nguyên tài nguyên khi xoá stack" → DeletionPolicy: Retain "chặn hẳn không cho xoá stack" → termination protection "chặn sửa một tài nguyên cụ thể" → stack policy "đưa tài nguyên có sẵn vào stack" → resource import

Bốn mức bảo vệ, dùng chồng lên nhau Chặn gì
DeletionPolicy: Retain/Snapshot mất dữ liệu khi xoá stack
UpdateReplacePolicy mất dữ liệu khi cập nhật
Stack policy chặn cập nhật lên tài nguyên cụ thể
Termination protection chặn xoá cả stack
Đọc change set trước khi thực thi Nội dung
Cột Replacement: True tài nguyên bị XOÁ và tạo lại — đổi id, có thể mất dữ liệu
Conditional tuỳ giá trị lúc chạy
False sửa tại chỗ, an toàn
Thuộc tính nào gây thay thế tra tài liệu, ví dụ đổi AvailabilityZone của volume
Hệ quả cần biết của Retain và Snapshot Nội dung
Tài nguyên trở thành mồ côi không còn stack nào quản, phải tự dọn
Snapshot vẫn tính tiền đặt lifecycle hoặc dùng AWS Backup để dọn theo hạn
Tạo lại stack tài nguyên giữ lại không tự quay về stack — phải resource import

Ba việc kiểm chứng: | Việc | Cách | |---|---| | Snapshot có được tạo không | describe-snapshots sau khi xoá stack thử | | Tài nguyên nào chưa được bảo vệ | rà template tìm loại có trạng thái mà thiếu DeletionPolicy | | Ai đã xoá stack | CloudTrail sự kiện DeleteStack |

Và một thói quen nên áp dụng cho mọi template: hãy khai cả DeletionPolicy lẫn UpdateReplacePolicy cho mọi tài nguyên có lưu trạng thái. Trường hợp mất dữ liệu đau đớn nhất không phải là ai đó xoá nhầm stack — chuyện đó ai cũng đề phòng — mà là một lần cập nhật trông rất vô hại làm tài nguyên bị thay thế, im lặng, giữa ban ngày, trong một pipeline đã chạy trơn tru hàng trăm lần trước đó.

Câu 119 Chọn nhiều đáp án Domain 3: Deployment, Provisioning, and Automation

When your baby products website started, it was running at low volume so your instances of type T2.micro were doing a fine job. After a while, your website exploded in popularity and now your ELB is seeing greater traffic. You had planned for the scaling events and your T2.micro instances are running in an auto scaling group. You also noticed that the EC2 instances are experiencing high CPU utilization because the CPU is being throttled and has very poor performance and your users are complaining. Hence the ASG is not scaling.

What can you do to improve the performance of your application? (Select two)

  1. A

    Your T2.micro instances have run out of burst credit. Switch to a T2.large or m4.large instance type for greater stability

  2. B

    Change the ELB from an Application Load Balancer type to a Network Load Balancer type

  3. C

    Your Load Balancer needs to be pre-warmed, and then your users will be happy

  4. D

    You should enable T2 unlimited

  5. E

    You need to disable ELB stickiness

Xem giải thích

Đáp án

A, D — hai cách khắc phục:

  • A — Instance T2.micro đã cạn tín dụng burst. Đổi sang T2.large hoặc m4.large để ổn định hơn.
  • D — Bật T2 Unlimited.

Vì sao đúng

Đề mô tả chính xác triệu chứng cạn tín dụng CPU, kèm một chi tiết rất quan trọng: "ASG không co giãn".

⚠ Điểm mấu chốt — vì sao ASG đứng im dù CPU cao:

Instance họ T bị THROTTLE khi hết tín dụng
        ↓
    CPU bị giới hạn ở mức nền (T2.micro: 10%)
        ↓
    → chỉ số CPUUtilization báo về CloudWatch
      là % của phần CPU ĐƯỢC PHÉP DÙNG
        ↓
    → không vượt ngưỡng co giãn
        ↓
    → ASG tưởng mọi thứ bình thường
    → trong khi người dùng đang chờ dài cổ

Đây là một trong những cái bẫy khó chịu nhất khi vận hành họ T: hệ thống chậm thảm hại mà mọi biểu đồ đều xanh.

⚠ Cơ chế tín dụng của instance họ T:

Mỗi giờ được cộng một lượng tín dụng CPU cố định
        ↓
    Dùng ít hơn mức nền → tích luỹ tín dụng (có trần)
    Dùng nhiều hơn      → tiêu tín dụng
        ↓
    HẾT tín dụng → bị ép về mức NỀN
        ↓
    T2.micro: mức nền chỉ 10% của một vCPU

⚠ Hai cách chữa, hai triết lý khác nhau:

Cách Nội dung
A — đổi sang instance to hơn hoặc họ M m4/m5 cho hiệu năng CPU ỔN ĐỊNH, không có khái niệm tín dụng
D — bật T2 Unlimited vẫn dùng họ T, nhưng được vượt mức nền và trả thêm tiền cho phần vượt

T2 Unlimited hợp khi tải thỉnh thoảng mới cao; đổi sang họ M hợp khi tải thường xuyên cao — vì lúc đó phí vượt của Unlimited sẽ đắt hơn cả một instance họ M.

Vì sao các phương án khác sai

  • C (load balancer cần được pre-warm) — đây là phương án gần nhất vì pre-warm là việc có thật khi lưu lượng tăng đột ngột. Nhưng đề nói rõ vấn đề nằm ở CPU của instance bị throttle, không phải ở khả năng chịu tải của ELB.

  • B (đổi ALB sang NLB) — NLB nhanh hơn ở tầng 4 nhưng không giải quyết gì cho việc CPU bị giới hạn. Đổi sang NLB còn mất các tính năng tầng 7 (định tuyến theo đường dẫn, WAF).

  • E (tắt stickiness của ELB) — stickiness ảnh hưởng tới cách phân bố phiên làm việc, có thể gây lệch tải nhẹ. Nhưng nó không phải nguyên nhân khi mọi instance đều đang bị throttle.

Ghi nhớ

⚠ Instance họ T — bảng phải thuộc: | Nội dung | Chi tiết | |---|---| | Cơ chế | tích và tiêu tín dụng CPU | | Hết tín dụng | bị ép về mức nền (T2.micro: 10%) | | T2 Unlimited | vượt mức nền được, trả thêm phí cho phần vượt | | T3/T4g | mặc định là Unlimited (T2 mặc định là Standard) | | Chỉ số theo dõi | CPUCreditBalance, CPUSurplusCreditBalance |

Từ khoá nhận diện:

"CPU bị throttle, hiệu năng tệ" → cạn tín dụng của họ T "ASG không co giãn dù máy chậm" → CPUUtilization bị che bởi throttle "tải cao thường xuyên" → đổi sang họ M/C, đừng dùng họ T "tải thỉnh thoảng mới cao" → T3 hoặc T2 Unlimited "cần hiệu năng ổn định, dự đoán được" → họ M (cân bằng), C (thiên CPU), R (thiên bộ nhớ)

⚠ Các họ instance chính — bảng đáng thuộc: | Họ | Thiên về | |---|---| | T | burstable — rẻ, cho tải thấp và không đều | | M | cân bằng — CPU, bộ nhớ, mạng | | C | CPU — tính toán nặng | | R | bộ nhớ — cơ sở dữ liệu, cache | | I / D | lưu trữ — I/O cao, dung lượng local lớn | | P / G / Inf | GPU / tăng tốc ML |

Chỉ số phải theo dõi với họ T Ý nghĩa
CPUCreditBalance tụt về gần 0 là sắp bị throttle — đặt cảnh báo ở đây
CPUCreditUsage tiêu bao nhiêu mỗi chu kỳ
CPUSurplusCreditBalance với Unlimited: đang nợ bao nhiêu, tức là sắp bị tính thêm tiền
CPUSurplusCreditsCharged phần đã thật sự bị tính tiền
Co giãn theo chỉ số nào cho đúng Nội dung
CPU không đáng tin với họ T bị throttle
Nên dùng RequestCountPerTarget của ALB
Hoặc TargetResponseTime — phản ánh trải nghiệm thật
Hoặc độ dài hàng đợi (SQS), số kết nối

Ba việc kiểm chứng: | Việc | Cách | |---|---| | Có đang bị throttle không | biểu đồ CPUCreditBalance — chạm 0 là đang bị | | Unlimited đang tốn thêm bao nhiêu | CPUSurplusCreditsCharged | | Đổi họ instance có rẻ hơn không | so giá T2-Unlimited-có-phí-vượt với m5 tương đương |

Và một lời khuyên rút thẳng từ tình huống của đề: hãy đặt cảnh báo trên CPUCreditBalance, không chỉ trên CPUUtilization. Đây là sự cố tự che giấu hoàn hảo — máy chậm tới mức người dùng phàn nàn, nhưng CPU hiển thị khoảng 10% và mọi cảnh báo đều im lặng, nên đội vận hành đi tìm nguyên nhân ở cơ sở dữ liệu, ở mạng, ở mã nguồn — mọi nơi trừ đúng chỗ nó đang nằm.

Câu 120 Domain 4: Security and Compliance

As a service provider, you generate a daily report that you need to share with your dynamically changing list of over 10,000 customers. These reports sit in S3, and you would like to automate sharing the reports with them so they can have on-demand access upon their identity being proven.

You plan to use Cognito, API Gateway and AWS Lambda to address this use-case. On the S3 side, what should you do?

  1. A

    Generate pre-signed URLs for your reports

  2. B

    Make the S3 bucket public and password protect each S3 file. Share the password with each customer

  3. C

    Provide each of your customers an AWS user and tell them to use the CLI

  4. D

    Create a bucket policy so that the S3 files are only accessible from CloudFront and force SSL mutual authentication there

Xem giải thích

Đáp án

A — Sinh pre-signed URL cho các báo cáo.

Vì sao đúng

Đề đã dựng sẵn một nửa kiến trúc (Cognito + API Gateway + Lambda) và hỏi mảnh ghép còn lại phía S3. Pre-signed URL khớp hoàn hảo.

⚠ Điểm mấu chốt — pre-signed URL là quyền truy cập tạm thời, nhúng ngay trong đường link:

Khách hàng đăng nhập → Cognito xác thực
        ↓
    Gọi API Gateway → Lambda
        ↓
    Lambda kiểm tra: khách này được xem báo cáo nào
        ↓
    Sinh pre-signed URL cho đúng tệp đó
        ↓
    Trả link về cho khách
        ↓
    → khách tải thẳng từ S3, KHÔNG cần chứng chỉ AWS nào
    → link tự hết hạn sau thời gian đã định
url = s3.generate_presigned_url(
    'get_object',
    Params={'Bucket': 'bao-cao', 'Key': f'{ma_khach}/2026-09-02.pdf'},
    ExpiresIn=900)          # 15 phút

⚠ Vì sao cách này mở rộng được tới hơn 10.000 khách hàng:

Bucket vẫn RIÊNG TƯ hoàn toàn
        ↓
    Không tạo IAM user nào (IAM chỉ cho 5.000 user)
    Không sửa bucket policy khi danh sách khách đổi
        ↓
    Logic phân quyền nằm trong Lambda — nơi dễ đổi nhất
        ↓
    → danh sách khách thay đổi liên tục cũng không sao

⚠ Và một điểm rất quan trọng về hiệu năng và chi phí:

Tệp KHÔNG đi qua Lambda hay API Gateway
        ↓
    Khách tải THẲNG từ S3
        ↓
    → không chạm giới hạn 6 MB payload của Lambda
    → không trả tiền cho thời gian Lambda chạy khi truyền tệp lớn
    → không chạm giới hạn 10 MB của API Gateway

Vì sao các phương án khác sai

  • D (bucket policy chỉ cho CloudFront truy cập, dùng SSL mutual authentication) — đây là phương án gần nhất vì đặt CloudFront trước S3 là mẫu quen thuộc. Nhưng mutual TLS đòi mỗi khách hàng có một chứng chỉ client — cấp và xoay chứng chỉ cho hơn 10.000 khách hàng luôn thay đổi là gánh nặng vận hành khổng lồ, và nó không dùng được danh tính Cognito mà đề đã có. (Nếu muốn dùng CloudFront thì câu trả lời đúng là CloudFront signed URL, không phải mutual TLS.)

  • C (cấp cho mỗi khách một IAM user và bảo họ dùng CLI) — không mở rộng được: IAM có hạn mức mặc định 5.000 user mỗi tài khoản. Và IAM dành cho danh tính nội bộ, không dành cho khách hàng của bạn.

  • B (mở bucket công khai rồi đặt mật khẩu cho từng tệp) — S3 không có tính năng đặt mật khẩu cho tệp. Mở bucket công khai nghĩa là ai đoán được tên tệp cũng tải được — đây là cách rò rỉ dữ liệu, không phải cách bảo vệ.

Ghi nhớ

⚠ Ba cách cho người dùng bên ngoài truy cập S3 — bảng phải thuộc: | Cách | Đặc điểm | |---|---| | Pre-signed URL | tạm thời, cho một đối tượng, không cần chứng chỉ AWS | | CloudFront signed URL / cookie | qua CDN — thêm cache, thêm chống DDoS, giới hạn theo IP | | Cognito Identity Pool | cấp chứng chỉ AWS tạm cho ứng dụng gọi S3 trực tiếp |

Từ khoá nhận diện:

"cho khách tải một tệp, có hạn giờ" → pre-signed URL "cho khách tải nhiều tệp trong một phiên" → CloudFront signed cookie "ứng dụng di động ghi thẳng lên S3" → Cognito Identity Pool "tạo IAM user cho mỗi khách hàng" → LUÔN SAI, không mở rộng được "đặt mật khẩu cho tệp S3" → KHÔNG TỒN TẠI

Đặc tính của pre-signed URL Nội dung
Quyền của URL bằng quyền của principal đã ký nó — không hơn
Thời hạn tối đa 7 ngày với SigV4 (và không dài hơn hạn của chứng chỉ tạm đang dùng)
Dùng cho tải LÊN được — put_object, hoặc presigned POST (giới hạn được kích thước và kiểu tệp)
Không thu hồi được URL đã phát ra thì có hiệu lực tới khi hết hạn
Ai cũng dùng được ai cầm link cũng tải được — link chính là chứng chỉ

⚠ Bẫy lớn nhất — thời hạn bị cắt ngắn mà không báo:

Lambda chạy bằng IAM role → chứng chỉ tạm sống ~1 giờ
        ↓
    Ký một URL với ExpiresIn = 7 ngày
        ↓
    → URL vẫn được tạo ra, KHÔNG có lỗi nào
    → nhưng nó CHẾT khi chứng chỉ của Lambda hết hạn
        ↓
    Cần link sống lâu → phải ký bằng chứng chỉ dài hạn,
    hoặc dùng CloudFront signed URL
Khi nào chọn CloudFront signed URL hơn Nội dung
Cần cache ở edge cho tệp phổ biến
Cần giới hạn theo IP hoặc theo khoảng thời gian
Cần thời hạn dài không phụ thuộc chứng chỉ tạm
Cần giảm chi phí truyền dữ liệu CloudFront rẻ hơn S3

Ba việc kiểm chứng: | Việc | Cách | |---|---| | URL có hoạt động không | curl -I <url> — phải trả 200 | | Hết hạn khi nào | đọc tham số X-Amz-Expires trong URL | | Ai đã tải gì | CloudTrail data event hoặc S3 access log |

Và một lời khuyên về bảo mật khi vận hành: hãy đặt thời hạn ngắn — vài phút là đủ cho một lượt tải — và ghi log mọi lần Lambda sinh URL. Pre-signed URL không thu hồi được, nên một link bị chuyển tiếp nhầm sang người khác vẫn hoạt động cho tới khi hết hạn; thời hạn 15 phút biến rủi ro đó thành gần như vô hại, còn thời hạn 7 ngày biến nó thành một lỗ rò dữ liệu kéo dài cả tuần mà không ai biết.