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

Tìm thấy 585 câu.

Câu 381 AWS Compute

A SysOps administrator needs to replicate an application setup, currently running on numerous Amazon EC2 instances within the eu-west-1 Region, to three additional AWS Regions. The current setup in eu-west-1 utilizes specifically configured Amazon Machine Images (AMIs) and an AWS CloudFormation template for resource deployment.

What is the MOST efficient way for the SysOps administrator to replicate this setup across the additional Regions?

  1. A

    Use AWS Elastic Beanstalk to deploy the application in each additional region, leveraging the original application configuration.

  2. B

    Deploy an EC2 instance in each Region, manually configure them as per the original instance, and then create new AMIs. Update the CloudFormation template to utilize the new AMIs.

  3. C

    Use the aws ec2 copy-image command to copy the AMI to each new Region. Modify the CloudFormation template to include mappings for the copied AMIs.

  4. D

    Modify the CloudFormation template to add the new Regions to the Auto Scaling group, then update the existing stack in eu-west-1.

Xem giải thích

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

Đề mô tả một hệ thống đang chạy trên nhiều EC2 instance ở Region eu-west-1, và cần nhân bản y hệt sang ba Region khác. Hai chi tiết về hiện trạng là mấu chốt: hệ thống đang dùng AMI đã được cấu hình riêng (specifically configured AMIs) và một CloudFormation template để triển khai tài nguyên.

Cụm từ quyết định đáp án là "MOST efficient way" đặt cạnh việc đã có sẵn AMI và CloudFormation template. Đề không hỏi "cách nào làm được", mà hỏi cách nào tốn ít công nhất trong khi vẫn cho ra kết quả giống hệt bản gốc. Khi tài sản cấu hình đã nằm gọn trong một AMI, cách hiệu quả nhất là mang chính AMI đó sang Region mới thay vì dựng lại từ đầu hay đổi sang công nghệ triển khai khác.

Chi tiết kỹ thuật thứ hai cần nhớ: AMI là tài nguyên theo Region. Một AMI ID chỉ có ý nghĩa trong đúng Region tạo ra nó, nên template dùng chung cho nhiều Region bắt buộc phải có cơ chế tra AMI ID theo Region.

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

Đáp án đúng theo tệp là C — dùng aws ec2 copy-image để copy AMI sang từng Region mới, rồi sửa CloudFormation template để thêm mappings cho các AMI đã copy.

Hai vế của phương án này khớp đúng với hai chi tiết hiện trạng trong đề:

  • copy-image tạo ra bản sao của AMI ở Region đích. Vì nó nhân bản chính image đã được cấu hình sẵn, môi trường mới là bản sao chính xác của eu-west-1 — không phải một bản dựng lại "gần giống".
  • Sau khi copy, mỗi Region có một AMI ID khác nhau. Section Mappings trong CloudFormation sinh ra đúng để giải quyết chuyện này: template khai một bảng tra Region → AMI ID, rồi tham chiếu bằng pseudo parameter của Region đang deploy. Nhờ vậy một template duy nhất dùng lại được ở cả bốn Region mà không phải bảo trì bốn bản riêng.

Tóm lại, C tận dụng lại cả hai thứ đã có (AMI và template), chỉ thêm đúng phần tối thiểu cần thiết.

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

A — Dùng AWS Elastic Beanstalk để deploy ở từng Region. Đây là đổi hẳn mô hình triển khai chứ không phải nhân bản. Elastic Beanstalk quản lý vòng đời ứng dụng theo cách riêng của nó và không dùng trực tiếp AMI đã cấu hình sẵn cùng CloudFormation template mà đội ngũ đang có. Chọn A nghĩa là vứt bỏ tài sản đang chạy tốt và phải làm lại việc đóng gói ứng dụng theo khuôn Beanstalk — ngược hẳn với yêu cầu "hiệu quả nhất".

B — Dựng EC2 ở mỗi Region, cấu hình tay giống bản gốc, tạo AMI mới, rồi sửa template. Đây là phương án gần đúng nhất và cũng là bẫy chính. Nó làm được việc, kết quả cuối cùng cũng là template trỏ tới AMI đúng Region. Chỗ hỏng nằm ở khâu giữa: cấu hình bằng tay cho từng Region vừa tốn thời gian, vừa dễ sai sót, và không có gì bảo đảm ba bản dựng tay trùng khít với bản gốc. copy-image cho kết quả tương đương mà chỉ mất một lệnh cho mỗi Region. So B với C thì cùng đích đến, nhưng B đi vòng và mang thêm rủi ro lệch cấu hình.

D — Sửa template để thêm Region mới vào Auto Scaling group, rồi update stack ở eu-west-1. Phương án này không thực hiện được: Auto Scaling group là tài nguyên theo Region, không phải tài nguyên global. Một ASG chỉ trải được trên các Availability Zone trong cùng một Region, không có thuộc tính nào để liệt kê Region khác vào. Ngoài ra, update stack ở eu-west-1 chỉ tác động đến tài nguyên của chính stack đó — nó không tạo ra bất cứ thứ gì ở ba Region kia. D sai cả về khả năng thực hiện lẫn về kết quả.

📌 Điểm cần nhớ

  • AMI gắn với Region: mỗi Region có AMI ID riêng. Muốn dùng một image ở Region khác thì phải copy-image, và trong CloudFormation phải tra AMI ID qua section Mappings theo Region đang deploy.
  • Auto Scaling group, giống phần lớn tài nguyên EC2, có phạm vi Region — trải được qua nhiều AZ nhưng không qua nhiều Region. Phương án nào nói "thêm Region vào ASG" thì loại ngay.
  • Khi đề nhấn "MOST efficient" và mô tả rõ những gì đã có sẵn (AMI, template, pipeline...), đáp án đúng gần như luôn là tái sử dụng tài sản đó, không phải dựng lại bằng tay (B) cũng không phải đổi sang dịch vụ triển khai khác (A).
  • Phân biệt "làm được nhưng tốn công" với "không làm được": B thuộc loại thứ nhất, D thuộc loại thứ hai. Đề hỏi hiệu quả nhất thì cả hai đều bị loại, nhưng vì lý do khác nhau.
Câu 382 AWS Management & Governance

A team of Analysts require a specialized Amazon EC2 configuration. The team need to able to launch and terminate instances across the company’s AWS accounts but do not wish to configure EC2 settings on their own. The specialized EC2 configuration contains licensed software and must be available for use only by the Analysts.

Which solution should a SysOps Administrator use to allow the Analysts to deploy their workloads with MINIMAL effort?

  1. A

    Create an Amazon Machine Image (AMI) encrypted with an AWS KMS key. Share the encrypted AMI with authorized accounts. Allow the Analysts access to use the KMS key.

  2. B

    Create an AWS CloudFormation template and configure launch permissions on the AMI used by the template to add the authorized accounts. Share the template in an Amazon S3 bucket.

  3. C

    Create an AWS CloudFormation template and use it to create a portfolio in AWS Service Catalog. Grant the Analysts permissions to launch products from the portfolio.

  4. D

    Create an AWS Elastic Beanstalk environment. Share the environment across accounts and use IAM policies to enable access for the team of Analysts.

Xem giải thích

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

Đề mô tả một nhóm Analysts cần chạy một cấu hình EC2 chuyên biệt, có licensed software bên trong, trải rộng trên nhiều AWS account của công ty. Ba ràng buộc trong đề quyết định đáp án, và cả ba phải cùng thoả:

  1. "do not wish to configure EC2 settings on their own" — Analysts chỉ bấm nút khởi chạy, không được để họ tự chọn AMI, instance type, security group, key pair. Nói cách khác, cấu hình phải được đóng gói sẵn thành một sản phẩm chạy được.
  2. "must be available for use only by the Analysts" — chỉ nhóm này dùng được cấu hình đó, không phải mọi người trong account.
  3. "MINIMAL effort" — chọn giải pháp có sẵn cơ chế quản trị, không phải tự dựng thêm lớp kiểm soát.

Cụm phân biệt mạnh nhất là "do not wish to configure EC2 settings on their own" kết hợp với "only by the Analysts". Chia sẻ AMI giải quyết được chuyện "có ảnh máy để dùng", nhưng không giải quyết được chuyện "không phải tự cấu hình" và cũng không giới hạn được ai trong account đích được dùng ảnh đó.

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

Đáp án đúng là C — CloudFormation template đưa vào portfolio của AWS Service Catalog, rồi cấp quyền launch cho Analysts.

Trong Service Catalog, một product là một dịch vụ CNTT được đóng gói để triển khai, ở đây chính là CloudFormation template chứa toàn bộ cấu hình EC2 chuyên biệt. Một portfolio là tập hợp các product kèm thông tin cấu hình, và nó tồn tại đúng để trả lời câu hỏi ai được dùng product nào, dùng như thế nào.

Điều này khớp cả ba ràng buộc:

  • Analysts không phải cấu hình gì: instance được dựng bởi CloudFormation theo template đã viết sẵn, họ chỉ chọn product và bấm launch.
  • Chỉ Analysts dùng được: quyền xem và launch product được gán qua IAM lên portfolio. Ai không được cấp quyền thì thậm chí không nhìn thấy product trong catalog.
  • Ít công sức: cơ chế phân quyền, phiên bản product và chia sẻ portfolio đã là chức năng có sẵn của Service Catalog, không phải tự viết.

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

A — AMI mã hoá bằng KMS key, share sang các account được phép, cấp quyền dùng key cho Analysts. Đây là phương án gần đúng nhất và cũng là cái bẫy chính. Chia sẻ AMI mã hoá giữa các account là việc làm được thật, và việc kiểm soát KMS key đúng là có siết được ai giải mã được ảnh. Nhưng nó hỏng ở ràng buộc thứ nhất: Analysts vẫn phải tự mở EC2 console, chọn AMI đó, chọn instance type, network, security group — tức là vẫn phải "configure EC2 settings on their own", đúng thứ đề nói họ không muốn. Nó giao nguyên liệu, không giao sản phẩm chạy sẵn.

B — CloudFormation template, đặt launch permission trên AMI cho các account được phép, chia sẻ template qua S3 bucket. Có template nên phần "không phải tự cấu hình" khá hơn A, nhưng hỏng ở ràng buộc thứ hai. Launch permission của AMI được cấp ở mức account, không phải mức người dùng: một khi account đã nằm trong danh sách, bất kỳ principal nào trong account đó có quyền EC2 đều dùng được AMI chứa licensed software, không riêng gì Analysts. Chia sẻ template qua S3 cũng chỉ là phát tán file, không phải cơ chế quản trị ai được triển khai cái gì.

C — đáp án đúng, đã phân tích ở trên.

D — Elastic Beanstalk environment, chia sẻ environment giữa các account và dùng IAM policy cho Analysts. Sai ngay ở tiền đề kỹ thuật: không chia sẻ được một Elastic Beanstalk environment giữa các AWS account. Environment là tài nguyên nằm trong một account cụ thể. Ngoài ra Beanstalk hướng tới việc triển khai ứng dụng lên nền tảng do nó quản lý, không phải phân phối một cấu hình EC2 dựng sẵn kèm licensed software cho người khác tự khởi chạy.

📌 Điểm cần nhớ

  • Đề nào có cụm "users do not want to configure … themselves" cộng với nhiều account và MINIMAL effort thì AWS Service Catalog là ứng viên hàng đầu: product = template đã đóng gói, portfolio = lớp kiểm soát ai được launch.
  • Phân biệt mức account với mức người dùng: launch permission của AMI và việc share AMI đều là mức account. Muốn siết tới từng nhóm người dùng thì cần thêm một lớp phân quyền IAM đứng trên, mà Service Catalog portfolio chính là lớp đó.
  • Chia sẻ AMI khác chia sẻ cách triển khai. AMI cho người ta cái ảnh máy; họ vẫn phải tự quyết mọi tham số khởi chạy. CloudFormation trong Service Catalog cho người ta một nút bấm.
  • Elastic Beanstalk environment không chia sẻ được giữa các account — nhớ điều này để loại nhanh mọi phương án bắt đầu bằng "share the Beanstalk environment across accounts".
Câu 383 AWS Storage

A developer is receiving access denied errors when attempting to list the objects in an Amazon S3 bucket. The developer is using the IAM user account "arn:aws:iam::513259117252:user/paul". The following S3 bucket policy has been applied to the bucket:

How can a SysOps Administrator modify the S3 bucket policy to fix the issue?

  1. A

    Change the "Effect" from "Allow" to "Deny".

  2. B

    Change the "Principal" from "arn:aws:iam::513259117252:user/paul" to "arn:aws:iam::513259117252:role/paul".

  3. C

    Change the "Action" from "s3:List*" to "s3:ListBucket".

  4. D

    Change the "Resource" from "arn:aws:s3:::dcttestbucket/*" to "arn:aws:s3:::dcttestbucket".

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ể: IAM user arn:aws:iam::513259117252:user/paul bị access denied khi liệt kê object trong một S3 bucket, dù bucket policy đã cho phép. Câu hỏi là phải sửa gì trong bucket policy đó.

Cụm từ quyết định nằm ở hai chỗ, phải ghép lại mới ra đáp án:

  • "list the objects in an Amazon S3 bucket" — thao tác bị chặn là liệt kê, tức API ListObjectsV2, ứng với permission s3:ListBucket. Đây không phải thao tác đọc nội dung một object (s3:GetObject).
  • arn:aws:s3:::dcttestbucket/* trong trường Resource — hậu tố /* nghĩa là policy chỉ áp lên các object bên trong bucket, chứ không áp lên chính bucket.

Ràng buộc phân biệt là: trong S3, bucket và object là hai loại resource ARN khác nhau, và mỗi action chỉ chấp nhận đúng loại ARN của nó. Nhận ra điều này là ra đáp án ngay, vì cả bốn phương án đều động vào một trường khác nhau của cùng một statement.

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

D — đổi Resource từ arn:aws:s3:::dcttestbucket/* thành arn:aws:s3:::dcttestbucket.

s3:ListBucket là permission ở cấp bucket: nó trả về danh sách khoá (key) nằm trong bucket, nên resource mà nó tác động lên chính là bản thân bucket. Khi policy khai resource là dcttestbucket/*, statement chỉ khớp với các ARN dạng object — nghĩa là action list không bao giờ khớp được với statement này, và vì không có statement nào cho phép, kết quả mặc định là deny → đúng hiện tượng access denied mà developer gặp.

Bỏ /* đi để resource trỏ thẳng vào bucket ARN thì action list mới khớp và được phép. Đây cũng đúng như phần giải thích gốc chỉ ra: "the s3:ListBucket action must be allowed at the bucket level. Removing the trailing / and the wildcard should fix this issue."

Lưu ý cách đọc tên cho khỏi rối: ListObjectsV2 là tên API call, còn s3:ListBucket là tên permission cho phép gọi API đó. Hai tên không giống nhau, đây là chỗ hay gây nhầm khi soi policy.

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

A — đổi Effect từ Allow sang Deny. Đi ngược hoàn toàn với mục tiêu. Vấn đề là người dùng không có đủ quyền, mà Deny thì lấy đi quyền chứ không cấp thêm. Tệ hơn, trong IAM một explicit Deny luôn thắng mọi Allow ở nơi khác, nên sửa kiểu này còn có thể chặn cả những đường cấp quyền khác đang hoạt động.

B — đổi Principal từ user/paul sang role/paul. Đây là phương án gài bẫy theo kiểu "sai loại principal". Nhưng đề nói rõ developer đang dùng IAM user account arn:aws:iam::513259117252:user/paul. Principal trong policy phải khớp với danh tính thực sự gửi request; đổi sang ARN của một role sẽ khiến statement không còn khớp với user đang gọi nữa, tức là làm hỏng thêm một trường vốn đang đúng. Trường Principal không phải nguyên nhân lỗi.

C — đổi Action từ s3:List* sang s3:ListBucket. Đây là phương án gần đúng nhất, vì nó có nhắc đúng tên permission cần thiết, và người đọc lướt rất dễ chọn. Chỗ nó hỏng: s3:List* là wildcard đã bao gồm sẵn s3:ListBucket rồi, nên action vốn không thiếu — thu hẹp lại thành s3:ListBucket không cấp thêm bất kỳ quyền nào mà chỉ bỏ bớt các action list khác đang được wildcard phủ. Nguyên nhân lỗi nằm ở Resource, sửa Action thì resource vẫn là dcttestbucket/* và statement vẫn không khớp — access denied y nguyên.

📌 Điểm cần nhớ

  • Phân biệt resource cấp bucket và cấp object. Action tác động lên chính bucket (như s3:ListBucket) dùng ARN arn:aws:s3:::tên-bucket; action tác động lên object (như s3:GetObject, s3:PutObject) dùng ARN arn:aws:s3:::tên-bucket/*. Khai sai loại thì statement không khớp và bị deny mặc định — policy trông "có Allow" mà vẫn không dùng được.
  • Policy cần cả hai thì phải liệt kê hai ARN trong mảng Resource, chứ một ARN không phủ được cả hai cấp.
  • Tên API không phải tên permission. Gặp ListObjectsV2 bị chặn thì permission cần soi là s3:ListBucket; đọc log lỗi theo tên API rồi đi tìm đúng chữ đó trong policy sẽ không thấy gì.
  • Khi gỡ access denied, hãy soi cả bốn thành phần của statement theo thứ tự Effect → Principal → Action → Resource, và nhớ rằng Deny luôn thắng Allow. Đề thi thường chỉ hỏng đúng một thành phần, ba cái còn lại là mồi nhử vì chúng vốn đã đúng.
Câu 384 AWS Security, Identity, & Compliance

A Company has identified that a security vulnerability affects a version of MariaDB that is being used with an Amazon RDS database instance.

Who is responsible for ensuring that the patch is applied to the database?

  1. A

    The company’s SysOps Administrator.

  2. B

    The database vendor.

  3. C

    The security department the company.

  4. D

    Amazon Web Services (AWS).

Xem giải thích

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

Đề bài nêu tình huống: một lỗ hổng bảo mật được phát hiện trong phiên bản MariaDB đang chạy trên một Amazon RDS database instance, và hỏi ai chịu trách nhiệm đảm bảo bản vá được áp dụng cho database.

Cụm từ quyết định đáp án là "Amazon RDS database instance". Nếu đề nói MariaDB được cài tay trên một Amazon EC2 instance, câu trả lời sẽ đảo ngược hoàn toàn — lúc đó khách hàng phải tự vá. Nhưng RDS là managed database service, và trong mô hình shared responsibility model của AWS, ranh giới trách nhiệm dịch chuyển theo mức độ "managed" của dịch vụ.

Chi tiết thứ hai cũng đáng chú ý: đề hỏi ai chịu trách nhiệm áp dụng bản vá (ensuring that the patch is applied), chứ không hỏi ai tạo ra bản vá. Đây chính là ràng buộc dùng để loại phương án B, phương án gần đúng nhất trong nhóm còn lại.

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

Đáp án đúng theo tệp là D — Amazon Web Services (AWS).

Với Amazon RDS, AWS quản lý toàn bộ tầng bên dưới database: phần cứng vật lý, hệ điều hành của DB instance, và chính database engine (ở đây là MariaDB). Khách hàng chỉ quản lý dữ liệu bên trong, schema, tài khoản database, cấu hình network/IAM xung quanh — chứ không có quyền truy cập OS hay quyền cài đặt bản vá lên engine.

Vì vậy khi một lỗ hổng bảo mật xuất hiện trong phiên bản MariaDB đang chạy, AWS là bên chịu trách nhiệm đưa bản vá vào dịch vụ. Những bản vá liên quan tới bảo mật và độ tin cậy của instance được AWS tự động lên lịch áp dụng, và việc áp dụng diễn ra trong maintenance window của DB instance. Loại patching bắt buộc này xảy ra không thường xuyên và thường chỉ chiếm một phần nhỏ của maintenance window.

Điều khách hàng làm được là chọn thời điểm maintenance window sao cho phù hợp và theo dõi thông báo — nhưng bản thân hành động vá là trách nhiệm của AWS.

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

A. The company's SysOps Administrator — Sai. Đây là bẫy trực giác mạnh nhất, vì với database tự vận hành (trên EC2 hay on-premises) thì SysOps Administrator đúng là người phải vá. Nhưng với RDS, quản trị viên không có quyền truy cập vào hệ điều hành của DB instance và cũng không có cách nào can thiệp vào binary của database engine. Không có quyền thì không thể mang trách nhiệm áp dụng bản vá.

B. The database vendor — Sai, và đây là phương án gần đúng nhất nên cần nói rõ nó hỏng ở đâu. Vendor của MariaDB thực sự là bên phát hành bản vá cho lỗ hổng. Nhưng đề hỏi ai đảm bảo bản vá được áp dụng lên database instance đang chạy. Vendor không có quan hệ vận hành nào với instance RDS của bạn, không biết nó tồn tại và không thể chạm vào nó. Phát hành bản vá và triển khai bản vá là hai trách nhiệm khác nhau — phương án này lẫn lộn hai việc đó.

C. The security department the company — Sai, cùng lý do với A. Bộ phận security của công ty có thể phát hiện lỗ hổng, đánh giá rủi ro, yêu cầu khắc phục và kiểm tra xem phiên bản engine đã được cập nhật hay chưa. Nhưng cũng như SysOps Administrator, họ không có quyền truy cập tầng bên dưới của RDS để cài bản vá. Vai trò của họ ở đây là giám sát và xác minh, không phải thực thi.

📌 Điểm cần nhớ

  • Câu hỏi về trách nhiệm vá lỗi trong shared responsibility model được quyết định bởi loại dịch vụ: database chạy trên Amazon EC2 thì khách hàng vá; database chạy trên Amazon RDS thì AWS vá OS và database engine. Đọc kỹ xem đề nhắc tới dịch vụ nào trước khi chọn.
  • Nguyên tắc kiểm tra nhanh: ai có quyền truy cập thì người đó chịu trách nhiệm. Với RDS, khách hàng không truy cập được OS của DB instance, nên trách nhiệm vá engine không thể thuộc về họ.
  • Phân biệt phát hành bản vá (database vendor) với áp dụng bản vá (AWS, với RDS). Đề thi hay dùng chính sự nhập nhằng này để dựng phương án nhiễu.
  • Phần khách hàng vẫn phải lo với RDS: chọn maintenance window hợp lý, theo dõi thông báo bảo trì, và quản lý những thứ nằm trong database — dữ liệu, tài khoản, quyền, cấu hình network/IAM.
Câu 385 Chọn nhiều đáp án AWS Security, Identity, & Compliance

A company hosts a web application on Amazon EC2 instances. The application is expected to receive both HTTP and HTTPS traffic. However, the company wants to ensure all HTTP traffic is automatically redirected to HTTPS for secure communication. A SysOps administrator has been tasked to configure an Application Load Balancer (ALB) with a certificate from AWS Certificate Manager (ACM) to achieve this goal.

Which combination of actions should the administrator take? (Select TWO)

  1. A

    Configure an HTTPS to HTTP redirection rule on a listener for port 443.

  2. B

    Configure an HTTP to HTTPS redirection rule on a listener for port 80.

  3. C

    Attach the ACM certificate to the ALB and configure a listener for port 443.

  4. D

    Create a Network Load Balancer instead of an Application Load Balancer.

  5. E

    Attach the ACM certificate directly to the EC2 instances.

Xem giải thích

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

Đề mô tả một web application chạy trên Amazon EC2 instances, nhận cả HTTP lẫn HTTPS, và yêu cầu toàn bộ HTTP traffic phải được tự động chuyển hướng sang HTTPS. Đề nói rõ công cụ phải dùng: một Application Load Balancer (ALB) kèm certificate từ AWS Certificate Manager (ACM).

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

  • "all HTTP traffic is automatically redirected to HTTPS" — chiều chuyển hướng là HTTP → HTTPS, tức là quy tắc phải nằm trên listener nghe cổng 80, không phải cổng 443.
  • "configure an Application Load Balancer (ALB) with a certificate from ACM" — kiến trúc đã bị chốt sẵn trong đề. Mọi phương án đề nghị đổi sang loại load balancer khác đều đi ngược yêu cầu, bất kể nó tốt hay không.
  • "with a certificate from ACM" — certificate phải được gắn vào nơi kết thúc kết nối TLS, và trong kiến trúc này nơi đó là ALB.

Cụm phân biệt mạnh nhất là chiều của redirect và chỗ gắn certificate — hai phương án sai được dựng lên đúng bằng cách đảo hai chi tiết này.

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

C — Attach the ACM certificate to the ALB and configure a listener for port 443. ALB là nơi kết thúc kết nối TLS. Muốn nó phục vụ được HTTPS thì phải có một listener nghe cổng 443, và listener đó cần một certificate để trình ra cho client trong lúc bắt tay TLS. Certificate lấy từ ACM được gắn trực tiếp vào listener HTTPS này. Không có bước này thì không tồn tại điểm cuối HTTPS nào để mà chuyển hướng tới.

B — Configure an HTTP to HTTPS redirection rule on a listener for port 80. Sau khi đã có listener 443, cần xử lý phần traffic vẫn đi vào bằng HTTP. ALB hỗ trợ hành động redirect ngay trong listener rule, nên listener nghe cổng 80 có thể trả về phản hồi chuyển hướng sang HTTPS mà không cần đẩy request xuống EC2 instances. Đây chính là cơ chế "tự động chuyển hướng" mà đề yêu cầu.

Hai hành động này bổ trợ nhau: C dựng đích đến an toàn, B lùa traffic không an toàn về đích đó.

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

A — Configure an HTTPS to HTTP redirection rule on a listener for port 443. Đây là phương án gần đúng nhất và cũng là bẫy chính: nó đúng về cơ chế (dùng redirection rule trên ALB listener) nhưng sai hoàn toàn về chiều. Nó đẩy client đang dùng kết nối được mã hoá quay về kết nối không mã hoá — ngược hẳn mục tiêu "secure communication" trong đề. Chỉ cần đọc kỹ hai từ đầu tiên của phương án là loại được.

D — Create a Network Load Balancer instead of an Application Load Balancer. Đề đã chỉ định ALB, nên "instead of" là tự mâu thuẫn với yêu cầu. Ngoài ra, khả năng redirect HTTP → HTTPS ở đây là một listener rule ở tầng ứng dụng — thứ mà ALB xử lý được vì nó hiểu HTTP. NLB làm việc ở tầng thấp hơn và không phải chỗ để đặt loại quy tắc HTTP này.

E — Attach the ACM certificate directly to the EC2 instances. ACM certificate không gắn trực tiếp vào EC2 instances được — ACM phát hành certificate để dùng với các dịch vụ tích hợp như ALB, và phần khoá riêng không được xuất ra cho bạn cài lên máy chủ. Hơn nữa phương án này cũng không giải quyết được vế redirect: kể cả nếu EC2 phục vụ được HTTPS thì vẫn chẳng có gì lùa traffic HTTP sang HTTPS.

📌 Điểm cần nhớ

  • Với cặp ALB + ACM, TLS kết thúc ở load balancer: certificate gắn vào listener HTTPS (cổng 443) của ALB, không gắn vào EC2 instances phía sau.
  • Redirect HTTP → HTTPS là một listener rule action của ALB, đặt trên listener cổng 80 — nơi traffic không an toàn đi vào, chứ không phải cổng 443.
  • Khi đề chốt sẵn loại dịch vụ ("configure an ALB…"), mọi phương án dạng "dùng X thay cho Y" gần như chắc chắn sai — nó phủ định điều kiện đề đưa ra.
  • Với câu "Select TWO" kiểu này, hai đáp án thường là một bước dựng hạ tầng (tạo listener 443 + certificate) và một bước cấu hình hành vi (redirect). Nếu bạn chọn hai phương án cùng nói về một bước, nhiều khả năng đã bỏ sót một nửa yêu cầu.
Câu 386 AWS Management & Governance

A SysOps Administrator has deployed an infrastructure stack for a company using AWS CloudFormation. The company made some manual changes to the infrastructure.

The Administrator needs to capture the changes and update the CloudFormation template. How can the Administrator determine what changes were made?

  1. A

    Create a new CloudFormation stack based on the changes that were made. Delete the old stack and deploy the new stack.

  2. B

    Update the CloudFormation stack by modifying the selected parameters in the template to match what was changed.

  3. C

    Update the CloudFormation stack using a change set. Review the changes and update the stack.

  4. D

    Use drift detection on the CloudFormation stack. Use the output to update the CloudFormation template and redeploy the stack.

Xem giải thích

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

Tình huống: một SysOps Administrator đã triển khai hạ tầng bằng AWS CloudFormation, sau đó có người sửa tay (manual changes) trực tiếp trên hạ tầng — tức là sửa ngoài CloudFormation, ở console hoặc CLI. Giờ Administrator cần cập nhật lại template cho khớp thực tế.

Cụm từ quyết định nằm ở câu hỏi cuối: "determine what changes were made" — xác định xem những thay đổi nào đã được thực hiện. Đề không hỏi "làm sao áp thay đổi vào stack", cũng không hỏi "làm sao xem trước tác động của một lần update". Nó hỏi làm sao biết được đã có gì bị sửa, khi trạng thái thật đã lệch khỏi template.

Ràng buộc thứ hai, kín hơn: Administrator chưa biết thay đổi là gì. Mọi phương án bắt đầu bằng việc đã cầm sẵn thông tin thay đổi trong tay đều tự mâu thuẫn với đề. Đây chính là cái bẫy phân biệt A, B, C khỏi D.

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

Đáp án đúng là D — dùng drift detection trên CloudFormation stack, lấy kết quả để sửa template rồi triển khai lại.

Drift detection là tính năng của CloudFormation dùng đúng cho tình huống này: nó so sánh cấu hình thực tế của các resource với cấu hình kỳ vọng ghi trong stack. Một resource bị coi là đã "drift" khi có bất kỳ giá trị property thực tế nào khác với giá trị kỳ vọng. Chạy được ở mức cả stack hoặc từng resource riêng lẻ.

Quan trọng với câu hỏi này: CloudFormation trả về thông tin chi tiết theo từng resource đã drift — property nào lệch, giá trị kỳ vọng là gì, giá trị hiện tại là gì. Đó chính xác là dữ liệu Administrator cần để biết người ta đã sửa những gì bằng tay, từ đó sửa lại template cho phản ánh đúng hiện trạng rồi redeploy. Thứ tự trong đáp án D — phát hiện trước, cập nhật template sau, triển khai lại sau cùng — khớp đúng với yêu cầu của đề.

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

A. Tạo stack mới dựa trên các thay đổi đã thực hiện, xoá stack cũ rồi deploy stack mới. Sai ngay ở tiền đề: "dựa trên các thay đổi đã thực hiện" giả định Administrator đã biết thay đổi là gì — trong khi đó chính là điều đề đang hỏi làm sao biết. Chưa phát hiện được drift thì không có cơ sở nào để dựng stack mới. Ngoài ra, xoá stack cũ là thao tác phá huỷ không cần thiết cho một việc vốn chỉ cần đọc thông tin.

B. Cập nhật stack bằng cách sửa các parameter được chọn trong template cho khớp với thứ đã bị đổi. Đây là phương án gần đúng nhất về mục tiêu cuối — cuối cùng thì template đúng là phải được sửa lại cho khớp thực tế. Nhưng nó hỏng ở bước thiếu phía trước: muốn "sửa cho khớp thứ đã bị đổi" thì phải biết thứ đó là gì đã. Phương án B nhảy thẳng vào hành động sửa mà bỏ qua bước phát hiện, nên nó không trả lời được câu hỏi "how can the Administrator determine what changes were made". Nói cách khác, B là hệ quả của D chứ không thay thế được D.

C. Cập nhật stack bằng change set, xem lại các thay đổi rồi update stack. Đây là bẫy hấp dẫn nhất, vì chữ "review the changes" nghe rất giống "capture the changes". Nhưng change set giải quyết một bài toán khác hẳn: nó cho bạn xem trước CloudFormation sẽ làm gì khi bạn áp một template mới hoặc parameter mới — resource nào bị thêm, sửa, thay thế. Nghĩa là change set so sánh template hiện tại với template mới bạn đưa vào; nó không nhìn vào cấu hình thực tế của resource để phát hiện chỉnh sửa thủ công. Và bạn không thể tạo change set có ý nghĩa khi chưa có template đã cập nhật — mà template đã cập nhật lại chính là thứ Administrator đang cần thông tin để viết ra. Change set nhìn về phía trước, drift detection nhìn về phía sau.

📌 Điểm cần nhớ

  • "Manual changes" / "changes made outside CloudFormation" / "determine what changed" → drift detection. Đây là từ khoá gần như một-đối-một trong đề thi.
  • Phân biệt rõ hai công cụ: drift detection so sánh thực tế vs. trạng thái kỳ vọng của stack (phát hiện sửa tay, nhìn về quá khứ); change set so sánh template hiện tại vs. template đề xuất (xem trước tác động, nhìn về tương lai). Đề nhắc "review changes before applying" thì mới là change set.
  • Đọc kỹ động từ chính của câu hỏi. Ở đây là determine (xác định), không phải apply (áp dụng) hay prevent (ngăn chặn). Nhiều phương án mô tả bước đúng nhưng sai giai đoạn trong quy trình.
  • Cảnh giác với phương án giả định sẵn thông tin mà đề nói là chưa có. Bất kỳ đáp án nào mở đầu bằng "based on the changes that were made" trong khi đề hỏi "what changes were made" đều là vòng luẩn quẩn logic.
Câu 387 AWS Storage

A SysOps Administrator must choose an EBS volume type that will be attached to an Amazon EC2 instance. The volume will be used by a big data application and the application data will be accessed infrequently and stored sequentially.

What EBS volume type will be the MOST cost-effective solution?

  1. A

    Cold HDD (sc1)

  2. B

    Throughput Optimized HDD (st1)

  3. C

    General Purpose SSD (gp2)

  4. D

    Provisioned IOPS SSD (io1)

Xem giải thích

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

Đề bài đặt một SysOps Administrator vào tình huống phải chọn loại EBS volume gắn vào một EC2 instance chạy ứng dụng big data. Câu hỏi chốt lại rất rõ ràng ở cuối: "MOST cost-effective solution" — tức là trong số các phương án đều chạy được, hãy chọn cái rẻ nhất.

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

  1. "big data application" → khối lượng dữ liệu lớn, quan tâm tới throughput (MB/s) chứ không phải IOPS. Đây là tín hiệu loại bỏ họ SSD.
  2. "accessed infrequently" → dữ liệu hiếm khi được truy cập. Đây chính là cụm từ phân biệt sc1 với st1 — hai phương án gần giống nhau nhất trong bài.
  3. "stored sequentially" → truy cập tuần tự, đúng đặc tính mà volume HDD phục vụ tốt; HDD chỉ tệ khi phải đọc ngẫu nhiên nhiều điểm rời rạc.

Nếu chỉ đọc "big data" rồi dừng lại, người làm bài rất dễ chọn st1. Cụm "infrequently" mới là ràng buộc quyết định.

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

A — Cold HDD (sc1) là đáp án đúng.

sc1 là loại volume dùng đĩa từ (HDD), được AWS thiết kế cho khối dữ liệu lớn, thiên về throughput, và ít khi được truy cập tới. Đây là loại volume có giá mỗi GB thấp nhất trong nhóm EBS volume — chính là điều đề bài đang tìm khi hỏi "most cost-effective".

Ba đặc điểm của workload trong đề khớp trọn vẹn với hồ sơ của sc1:

  • Dữ liệu lớn → HDD rẻ hơn SSD tính trên mỗi GB.
  • Đọc tuần tự → HDD phát huy đúng thế mạnh, không bị phạt vì seek time.
  • Truy cập thưa → không cần mức throughput cao duy trì liên tục, nên chấp nhận được mức hiệu năng khiêm tốn hơn của sc1 để đổi lấy giá thấp.

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

B — Throughput Optimized HDD (st1): đây là phương án gần đúng nhất và là bẫy chính của câu hỏi. st1 cũng là HDD, cũng thiên về throughput, cũng hợp với truy cập tuần tự và cũng thường được nhắc tới cùng big data. Nó hỏng đúng một chỗ: st1 nhắm tới workload throughput-oriented được truy cập thường xuyên (log processing, data warehouse, MapReduce đang chạy), và vì cung cấp throughput cao hơn nên đắt hơn sc1 trên mỗi GB. Đề đã nói thẳng dữ liệu "accessed infrequently", nên trả tiền cho phần throughput dư ra là lãng phí. Về mặt kỹ thuật st1 vẫn chạy được — nó chỉ thua ở đúng tiêu chí đề hỏi: chi phí.

C — General Purpose SSD (gp2): là volume SSD đa dụng, cân bằng giữa giá và hiệu năng, phù hợp làm boot volume và các workload vừa phải, có yêu cầu độ trễ thấp. Nhưng SSD đắt hơn HDD trên mỗi GB, mà workload ở đây không hề cần độ trễ thấp hay IOPS ngẫu nhiên — nó đọc tuần tự và đọc thưa. Chọn gp2 là trả tiền cho một đặc tính mà ứng dụng không dùng đến.

D — Provisioned IOPS SSD (io1): loại volume cao cấp nhất trong danh sách, dành cho các workload đòi hỏi IOPS cao và ổn định, điển hình là cơ sở dữ liệu giao dịch quan trọng. Đây là loại đắt nhất trong bốn phương án, và mô hình giá của nó còn tính thêm cho lượng IOPS được provision. Với một ứng dụng big data đọc tuần tự, thưa thớt, io1 vừa sai về đặc tính vừa sai hoàn toàn về chi phí — đây là phương án cách xa đáp án đúng nhất.

📌 Điểm cần nhớ

  • Sequential + large data → nghĩ HDD (st1/sc1); random access hoặc cần low latency → nghĩ SSD (gp2/io1). Đây là ngã rẽ đầu tiên khi gặp câu chọn EBS volume type.
  • Trong nhóm HDD, tần suất truy cập là ranh giới: truy cập thường xuyên → st1; truy cập hiếm/lạnh → sc1. Cụm "infrequently accessed" gần như luôn trỏ về sc1.
  • Thứ tự chi phí mỗi GB trong bốn phương án này: sc1 < st1 < gp2 < io1. Khi đề hỏi "most cost-effective" và nhiều phương án đều khả thi về kỹ thuật, hãy chọn cái rẻ nhất mà vẫn thoả các ràng buộc kỹ thuật đã nêu.
  • Đọc hết câu hỏi trước khi chọn. Cùng một mô tả workload, nếu đề đổi thành "highest throughput" hay "frequently accessed" thì đáp án lập tức chuyển sang st1. Từ khoá ở mệnh đề cuối mới là thứ quyết định.
Câu 388 AWS Management & Governance

A company has several AWS accounts in a single organization in AWS Organizations. The company requires that no Amazon S3 buckets can be deleted its production account.

What is the SIMPLEST approach to ensuring that the S3 buckets in the production account cannot be deleted?

  1. A

    Use a service control policy to deny the s3:DeleteBucket API action in the production account.

  2. B

    Create an IAM group that has an IAM policy to deny the s3:DeleteBucket action on all buckets in the production account.

  3. C

    Create an IAM role that restricts the API actions that can be used for Amazon S3 and assign it to EC2 instances.

  4. D

    Set up MFA Delete on all the S3 buckets in the production account to prevent the buckets from being deleted.

Xem giải thích

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

Đề mô tả một công ty có nhiều AWS account nằm chung một organization trong AWS Organizations, và yêu cầu là không một S3 bucket nào trong production account được phép bị xoá.

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

  • "a single organization in AWS Organizations" — đề cố ý cho biết môi trường đã có Organizations. Đây là tín hiệu mở đường cho service control policy (SCP), công cụ chỉ tồn tại khi có Organizations.
  • "no S3 buckets can be deleted" kết hợp với "SIMPLEST approach" — hai ràng buộc phải thoả cùng lúc. "No buckets" nghĩa là chặn phải phủ toàn bộ account, không chừa ai; "simplest" nghĩa là chọn giải pháp đặt một lần ở một chỗ, không phải giải pháp đòi lặp đi lặp lại hay bảo trì liên tục.

Nhiều phương án dưới đây đều "chặn được xoá bucket" ở một mức nào đó. Cái phân biệt chúng là phạm vi áp dụng và công sức duy trì.

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

A. Dùng service control policy để deny action s3:DeleteBucket trong production account.

SCP là loại organization policy dùng để quản lý quyền trong organization. Nó định nghĩa trần quyền tối đa cho các account nằm dưới nó: một API action bị SCP deny thì không principal nào trong account đó gọi được, kể cả người đã có sẵn IAM permission cho phép xoá bucket.

Đúng cả hai ràng buộc của đề:

  • Phủ toàn bộ account: gắn SCP vào production account là xong, không cần biết trong account có bao nhiêu user, role, hay bucket. Bucket tạo mới sau này cũng tự động được bảo vệ.
  • Đơn giản nhất: một policy, gắn một lần, ở tầng Organizations — không có việc bảo trì lặp lại.

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

B. Tạo IAM group có IAM policy deny s3:DeleteBucket trên mọi bucket. Đây là phương án gần đúng nhất, và nó đúng về mặt cú pháp policy — một explicit deny trong IAM policy thật sự chặn được hành động. Chỗ hỏng nằm ở phạm vi: policy gắn vào group thì chỉ áp dụng cho những user đã được thêm vào group đó. Muốn thoả yêu cầu "không ai xoá được bucket", bạn phải đảm bảo mọi user hiện tại và mọi user tạo mới về sau đều nằm trong group — đó là gánh nặng quản trị liên tục, và chỉ cần sót một người là yêu cầu của đề bị vỡ. Ngoài ra IAM group không áp lên IAM role, nên nhánh truy cập qua role vẫn hở. Vừa không kín vừa không phải "simplest".

C. Tạo IAM role hạn chế API action cho S3 rồi gán cho các EC2 instance. Sai ở phạm vi một cách rõ ràng hơn: policy này chỉ tác động tới workload chạy trên EC2 dùng role đó. Người dùng đăng nhập console, CLI từ máy cá nhân, hay bất kỳ principal nào khác đều không bị ảnh hưởng và vẫn xoá bucket được. Yêu cầu của đề là áp cho tất cả mọi người, không riêng EC2. Cách diễn đạt "restricts the API actions" cũng lệch: IAM policy cấp/từ chối permission cho principal, chứ không vô hiệu hoá bản thân API action ở tầng account như SCP làm.

D. Bật MFA Delete trên tất cả các bucket trong production account. Đây là bẫy hấp dẫn vì tên tính năng có chữ "Delete" và nó thật sự liên quan tới việc xoá. Nhưng MFA Delete không ngăn việc xoá — nó chỉ thêm một lớp xác thực, đòi mã MFA khi thực hiện thao tác, nhằm giảm khả năng xoá nhầm. Ai có MFA hợp lệ vẫn xoá được, nên yêu cầu "không bucket nào có thể bị xoá" không được thoả. Thêm nữa, đây là cấu hình theo từng bucket: phải bật cho mọi bucket hiện có và nhớ bật cho mọi bucket tạo mới — trái hẳn với tiêu chí "SIMPLEST".

📌 Điểm cần nhớ

  • Đề nhắc tới AWS Organizations + yêu cầu chặn cứng một API action trên cả account là dấu hiệu kinh điển của SCP. SCP đặt trần quyền tối đa, thắng cả IAM policy allow bên trong account.
  • Phân biệt phạm vi của từng công cụ: SCP → toàn account trong organization; IAM policy gắn user/group → chỉ những principal được gắn; IAM role gắn EC2 → chỉ workload dùng role đó.
  • MFA Delete là lớp bảo vệ chống xoá nhầm, không phải cơ chế cấm xoá. Gặp đề yêu cầu "không thể xoá được" thì MFA Delete gần như luôn là đáp án sai.
  • Từ khoá SIMPLEST / least operational overhead thường loại các phương án phải cấu hình lặp theo từng tài nguyên hoặc từng user, và ưu tiên phương án đặt một lần ở tầng cao nhất.
Câu 389 AWS Database

A company runs a resource-intensive daily reporting job on a production Amazon RDS database. The performance of the database is affected when the reporting job is running, and this has resulted in user complaints.

How can a SysOps Administrator resolve the performance issues?

  1. A

    Enable Multi-AZ mode on Amazon RDS and run the reporting on the standby instance.

  2. B

    Create a copy of the database using a snapshot and run the reporting against the copy.

  3. C

    Create an Amazon RDS read replica and run the reporting job against the read replica.

  4. D

    Enable Auto Scaling for the RDS database and ensure the maximum instances is greater than one.

Xem giải thích

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

Đề mô tả một công ty chạy daily reporting job rất nặng ("resource-intensive") ngay trên production Amazon RDS database. Hậu quả: hiệu năng database tụt khi job chạy, và người dùng phàn nàn. Câu hỏi là SysOps Administrator phải làm gì để xử lý vấn đề hiệu năng đó.

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

  • "reporting job" — công việc báo cáo về bản chất là đọc dữ liệu, không ghi. Đây là gợi ý trực tiếp cho việc tách tải đọc ra khỏi instance chính.
  • "daily" — việc này lặp lại mỗi ngày, nên giải pháp phải là thứ thường trực, không phải thao tác dựng lại thủ công từng lần.
  • "production" — không được đụng vào khả năng phục vụ của instance đang chạy thật; cần một endpoint riêng để job báo cáo trỏ vào.

Ghép ba yếu tố: cần một bản sao chỉ đọc, luôn sẵn sàng, có endpoint riêng, tự đồng bộ.

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

Đáp án đúng theo tệp là C — Create an Amazon RDS read replica and run the reporting job against the read replica.

Khi bạn tạo một read replica, database master replicate bất đồng bộ (asynchronously) sang replica đó. Read replica có endpoint riêng biệt dùng cho truy vấn. Trong tình huống này, read replica trở thành đích đến của reporting job, và như vậy gỡ hoàn toàn áp lực của job báo cáo khỏi master database.

Điều này khớp đúng ba yêu cầu rút ra từ đề: nó phục vụ tải đọc (đúng bản chất reporting), nó tồn tại thường trực nên job hằng ngày cứ trỏ vào một endpoint cố định mà chạy, và nó tách hẳn tài nguyên tính toán khỏi instance production.

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

A — Enable Multi-AZ mode và chạy reporting trên standby instance. Đây là phương án gần đúng nhất và cũng là cái bẫy chính. Multi-AZ đúng là tạo ra một bản sao ở Availability Zone khác, nên nghe qua thì tưởng có "instance thứ hai" để dùng. Nhưng standby của Multi-AZ không thể dùng để offload tải đọc khỏi master DB. Multi-AZ sinh ra để phục vụ tính sẵn sàng (high availability) và failover, không phải để mở rộng khả năng đọc; standby không cấp endpoint cho ứng dụng truy vấn. Bật Multi-AZ ở đây chỉ tốn thêm chi phí mà reporting job vẫn đè lên chính instance production như cũ.

B — Tạo bản sao database từ snapshot rồi chạy reporting trên bản sao. Về mặt kỹ thuật thì làm được, và nó cũng thật sự tách tải khỏi production. Chỗ hỏng nằm ở chữ "daily": job chạy hằng ngày nên mỗi ngày lại phải dựng (instantiate) một bản sao mới từ snapshot. Cách này không thực tế để vận hành — thêm thao tác lặp lại, thêm thời gian chờ khôi phục, thêm việc dọn dẹp instance cũ. Read replica giải quyết đúng nhu cầu đó mà không cần dựng lại gì.

C — đã giải thích ở trên.

D — Enable Auto Scaling cho RDS database và đặt maximum instances lớn hơn một. Sai ngay từ tiền đề: không có thứ gọi là Auto Scaling cho instance Amazon RDS theo kiểu nhân bản instance như Auto Scaling group của EC2. Phương án này mượn một khái niệm quen thuộc ở tầng compute rồi gán nhầm sang RDS, nên nó mô tả một thao tác không tồn tại — chọn nó thì không có gì để cấu hình cả.

📌 Điểm cần nhớ

  • Đề nhắc tới tải đọc nặng (reporting, analytics, dashboard, BI) làm ảnh hưởng database production → nghĩ ngay tới read replica, vì nó có endpoint riêng và replicate bất đồng bộ từ master.
  • Phân biệt dứt khoát hai thứ hay bị trộn lẫn: Multi-AZ = tính sẵn sàng và failover, standby không phục vụ truy vấn; read replica = mở rộng khả năng đọc, có endpoint dùng được.
  • Yêu cầu lặp lại định kỳ ("daily", "hằng giờ") loại bỏ các giải pháp mang tính thao tác một lần như khôi phục từ snapshot — bản sao từ snapshot còn là dữ liệu tĩnh tại thời điểm chụp, không tự cập nhật.
  • Cảnh giác với phương án mượn khái niệm đúng ở dịch vụ này rồi gán sang dịch vụ khác: "Auto Scaling" quen thuộc với EC2 nhưng không áp dụng theo nghĩa nhân bản instance cho RDS.
Câu 390 Chọn nhiều đáp án AWS Management & Governance

A SysOps Administrator has an AWS CloudFormation template created from an infrastructure stack deployed in us-east-1. The Administrator attempts to use the template to launch a stack in us-west-1. The stack partially deploys but then errors and rolls back.

What are the most likely reasons for the failure of the stack deployment? (Select TWO.)

  1. A

    The template did not have the proper level of permissions to deploy the resources in us-west-1.

  2. B

    CloudFormation templates can be used only to deploy stacks in a single Region.

  3. C

    The template referenced services that do not exist in us-west-1.

  4. D

    The template referenced an IAM user that is not available in us-west-1.

  5. E

    The template referenced an Amazon Machine Image (AMI) that is not available in us-west-1.

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ể: template CloudFormation được tạo ra từ một stack hạ tầng đang chạy ở us-east-1, rồi đem nguyên xi sang launch ở us-west-1. Stack deploy được một phần rồi mới lỗi và rollback.

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

  • "created from an infrastructure stack deployed in us-east-1" — template không phải viết mới cho đa Region, mà là bản chụp lại của hạ tầng một Region. Nghĩa là bên trong nó gần như chắc chắn có những giá trị cứng, gắn chặt với us-east-1: AMI ID, VPC ID, subnet ID, Availability Zone.
  • "partially deploys but then errors" — deploy được một phần. Đây là cụm loại phương án mạnh nhất. Nếu vấn đề nằm ở bản thân cơ chế (template chỉ dùng được một Region) hoặc ở quyền, thì CloudFormation sẽ hỏng ngay từ đầu chứ không tạo được vài resource rồi mới gãy. Lỗi giữa chừng đúng với kiểu "một số resource tạo ổn, tới resource tham chiếu tài nguyên không tồn tại ở Region mới thì hỏng".

Câu hỏi thực chất kiểm tra: cái gì trong AWS là per-Region, cái gì là global.

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

Đáp án theo tệp là C và E.

E — template tham chiếu một AMI không có ở us-west-1. AMI ID là tài nguyên theo từng Region. Cùng một image (ví dụ cùng một bản Amazon Linux) mang ID hoàn toàn khác nhau ở mỗi Region, và một AMI riêng do bạn tạo thì mặc định chỉ tồn tại ở Region đã tạo cho tới khi được copy sang. Template chép từ us-east-1 sẽ mang theo AMI ID của us-east-1; khi CloudFormation tới bước tạo EC2 instance ở us-west-1, ID đó không phân giải được và resource đó fail → cả stack rollback. Đây chính là lý do template viết đúng chuẩn thường dùng Mappings theo Region hoặc SSM Parameter thay vì hardcode AMI ID.

C — template tham chiếu services/tài nguyên không tồn tại ở us-west-1. Có hai lớp ý nghĩa, cả hai đều hợp lý theo bản giải thích gốc:

  • Template trỏ tới các resource ID cụ thể của Region cũ — VPC ID, subnet ID, security group ID, Availability Zone như us-east-1a. Những ID này vô nghĩa ở Region khác.
  • AWS không tung ra mọi service ở mọi Region cùng lúc. Một service có ở us-east-1 nhưng chưa có ở Region đích thì CloudFormation không tạo nổi resource loại đó.

Cả hai đều khớp với triệu chứng "deploy một phần rồi gãy": các resource độc lập với Region tạo xong trước, resource dính ID/AZ/service của Region cũ mới là chỗ vỡ.

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

A — "template không có đủ quyền để deploy resource ở us-west-1". Đây là phương án gần đúng nhất và dễ chọn nhầm, vì thiếu quyền đúng là một nguyên nhân rollback rất phổ biến ngoài đời. Chỗ hỏng nằm ở chủ thể của quyền: permission không gắn vào template. Template chỉ là văn bản mô tả hạ tầng, nó không phải một principal của IAM. Quyền đến từ người/role gọi lệnh, hoặc từ service role được truyền vào lúc launch stack. Nói "template không có quyền" là gán sai đối tượng, nên phương án sai ngay ở mệnh đề chứ không phải sai ở tình huống.

B — "template CloudFormation chỉ deploy được stack trong một Region". Sai về mặt cơ chế. Một template hoàn toàn dùng lại được ở nhiều Region, miễn là nó được viết cho đa Region (dùng Mappings, Parameters, pseudo parameter thay vì ID cứng). Bằng chứng nằm ngay trong đề: nếu mệnh đề này đúng thì stack đã bị từ chối ngay lập tức, chứ không thể deploy được một phần. Đề chép hạ tầng sang Region khác là việc bình thường — vấn đề là nội dung template, không phải giới hạn của dịch vụ.

D — "template tham chiếu một IAM user không có ở us-west-1". Cũng là phương án gài, vì nghe rất giống C và E về hình thức ("thứ X không có ở Region kia"). Nhưng IAM là service global: user, group, role, policy không thuộc về Region nào cả, một IAM user tạo ra là dùng được từ mọi Region trong tài khoản. Không tồn tại tình huống "IAM user chỉ có ở us-east-1". Phương án này chính là bẫy dành cho người học thuộc lòng mẫu câu mà không phân biệt được resource nào regional, resource nào global.

📌 Điểm cần nhớ

  • AMI ID là per-Region. Đừng bao giờ hardcode AMI ID trong template dùng lại nhiều Region — dùng Mappings theo Region hoặc tham số lấy từ SSM Parameter Store.
  • Phân loại global vs regional là chìa khóa của cả họ câu hỏi này. IAM (user, role, policy) là global; VPC, subnet, security group, AMI, Availability Zone là regional. Gặp phương án nói "IAM không có ở Region kia" thì gần như chắc chắn là sai.
  • Quyền không thuộc về template. CloudFormation thực thi bằng quyền của principal gọi nó, hoặc bằng service role được chỉ định lúc tạo stack.
  • Đọc kỹ triệu chứng "partially deploys". Lỗi giữa chừng ám chỉ vài resource cụ thể không tạo được, loại bớt những phương án nói về giới hạn cơ chế hay chặn từ đầu. Stack lỗi thì mặc định rollback, nên rollback tự nó không phải manh mối phân biệt.
  • Không phải service nào cũng có mặt ở mọi Region — chép hạ tầng sang Region mới thì phải kiểm tra cả độ khả dụng của service, không chỉ kiểm ID.