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

Tìm thấy 1356 câu.

Câu 81 Deployment

A developer has been asked to create a web application to be deployed on EC2 instances. The developer just wants to focus on writing application code without worrying about server provisioning, configuration and deployment.

As a Developer Associate, which AWS service would you recommend for the given use-case?

  1. A

    Serverless Application Model

  2. B

    Elastic Beanstalk

  3. C

    CloudFormation

  4. D

    CodeDeploy

Xem giải thích

Đáp án

B — AWS Elastic Beanstalk.

Vì sao đúng

Yêu cầu: triển khai ứng dụng web trên EC2, và lập trình viên chỉ muốn viết mã, không phải lo cung cấp máy chủ, cấu hình hay triển khai.

Elastic Beanstalk là dịch vụ PaaS của AWS, làm đúng việc đó: bạn đẩy mã lên, nó lo phần còn lại.

Việc Ai làm
Viết mã ứng dụng lập trình viên
Cung cấp EC2, Auto Scaling group, Load Balancer Beanstalk
Cài runtime, cấu hình máy chủ web Beanstalk
Triển khai, rollback, giám sát sức khoẻ Beanstalk
Vá hệ điều hành và nền tảng Beanstalk (managed updates)

Nền tảng hỗ trợ sẵn: Java, .NET, PHP, Node.js, Python, Ruby, Go, Docker. Triển khai chỉ là:

eb init && eb create moi-truong-production && eb deploy

Và điểm quan trọng: bản thân Beanstalk miễn phí — bạn chỉ trả tiền cho EC2, ELB và các tài nguyên bên dưới, những thứ dù sao cũng phải trả.

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

  • A. Serverless Application Model (SAM) — framework cho ứng dụng serverless (Lambda, API Gateway, DynamoDB). Đề nói rõ ứng dụng chạy trên EC2, không phải serverless.
  • C. CloudFormation — công cụ hạ tầng dưới dạng mã. Nó tạo được EC2, ALB, ASG, nhưng bạn phải tự khai từng tài nguyên và tự dựng cơ chế triển khai mã. Đây là nhiều việc hơn hẳn, trái với "không muốn lo server provisioning, configuration and deployment". (Thực tế Beanstalk dùng CloudFormation bên dưới — nó là lớp trừu tượng đặt lên trên.)
  • D. CodeDeploy — chỉ lo triển khai mã lên máy đã có. Nó không cung cấp hạ tầng: bạn vẫn phải tự tạo EC2, ASG, ALB. Chỉ giải quyết một phần ba yêu cầu.

Ghi nhớ

Các mức trừu tượng để chạy ứng dụng trên AWS, từ nhiều việc nhất tới ít nhất: | Mức | Dịch vụ | Bạn quản gì | |---|---|---| | IaaS | EC2 | máy chủ, OS, runtime, ứng dụng | | Container | ECS/EKS trên EC2 | cluster, container | | Container serverless | Fargate | container | | PaaS | Elastic Beanstalk | chỉ mã ứng dụng | | Serverless | Lambda | chỉ hàm |

Nhận dạng nhanh: đề nói "chỉ muốn tập trung viết mã" + "chạy trên EC2" ⇒ Elastic Beanstalk. Nếu bỏ ràng buộc EC2 thì Lambda hoặc Fargate mới là câu trả lời.

Câu 82 Security

A development team has configured inbound traffic for the relevant ports in both the Security Group of the EC2 instance as well as the Network Access Control List (NACL) of the subnet for the EC2 instance. The team is, however, unable to connect to the service running on the Amazon EC2 instance.

As a developer associate, which of the following will you recommend to fix this issue?

  1. A

    Rules associated with Network ACLs should never be modified from the command line. An attempt to modify rules from the command line blocks the rule and results in an erratic behavior

  2. B

    IAM Role defined in the Security Group is different from the IAM Role that is given access in the Network ACLs

  3. C

    Network ACLs are stateful, so allowing inbound traffic to the necessary ports enables the connection. Security Groups are stateless, so you must allow both inbound and outbound traffic

  4. D

    Security Groups are stateful, so allowing inbound traffic to the necessary ports enables the connection. Network ACLs are stateless, so you must allow both inbound and outbound traffic

Xem giải thích

Đáp án

D — Security Group là stateful nên chỉ cần mở inbound; Network ACL là stateless nên phải mở cả inbound lẫn outbound.

Vì sao đúng

Đội đã mở đúng cổng inbound ở cả hai lớp, nhưng vẫn không kết nối được. Nguyên nhân nằm ở khác biệt cơ bản giữa hai cơ chế:

Security Group — stateful. Nó ghi nhớ kết nối. Cho phép request đi vào thì phản hồi tự động được cho đi ra, bất kể rule outbound thế nào.

Network ACL — stateless. Nó xét từng gói tin độc lập, không nhớ gì cả. Gói đi vào và gói đi ra là hai chuyện hoàn toàn riêng biệt, mỗi chiều cần một rule.

Và đây là chỗ bị bỏ sót: phản hồi TCP không đi ra từ cổng 443 hay 80 — nó đi ra từ cổng nguồn của client, nằm trong dải ephemeral port:

Client:54321  ──→  Server:443     ← rule inbound cho phép ✅
Client:54321  ←──  Server:443     ← rule OUTBOUND phải cho phép cổng 1024–65535 ❗

Nên NACL phải có thêm:

Rule 100  Outbound  TCP  1024-65535  0.0.0.0/0  ALLOW

Dải ephemeral port khác nhau theo hệ điều hành: Linux thường 32768–60999, Windows 49152–65535, ELB và Lambda dùng 1024–65535. Nên cấu hình an toàn là mở 1024–65535.

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

  • C. Nói ngược hoàn toàn — bảo NACL stateful và Security Group stateless. Đây là bẫy đối xứng, và là lỗi rất hay gặp khi học vội.
  • B. "IAM Role trong Security Group khác IAM Role trong NACL" — vô nghĩa: cả Security Group lẫn NACL đều không có khái niệm IAM role. Chúng lọc theo IP, cổng và giao thức, không theo danh tính.
  • A. "Không được sửa NACL từ dòng lệnh, sẽ gây hành vi thất thường" — bịa hoàn toàn. AWS CLI, Console, SDK và CloudFormation đều gọi cùng một API và cho kết quả như nhau.

Ghi nhớ

Security Group Network ACL
Mức ENI / instance subnet
Trạng thái stateful stateless
Rule chỉ Allow Allow và Deny
Đánh giá tất cả rule cộng lại theo số thứ tự, dừng ở rule khớp đầu tiên
Mặc định inbound chặn hết, outbound mở hết mặc định của VPC: mở hết cả hai chiều

Nhớ nhanh: stateless ⇒ phải mở cả hai chiều, và đừng quên ephemeral port cho chiều về.

Câu 83 Development with AWS Services

ECS Fargate container tasks are usually spread across Availability Zones (AZs) and the underlying workloads need persistent cross-AZ shared access to the data volumes configured for the container tasks.

Which of the following solutions is the best choice for these workloads?

  1. A

    Bind mounts

  2. B

    AWS Gateway Storage volumes

  3. C

    Amazon EFS volumes

  4. D

    Docker volumes

Xem giải thích

Đáp án

C — Amazon EFS volumes.

Vì sao đúng

Yêu cầu: các task Fargate trải trên nhiều AZ cần truy cập chung, bền vững, xuyên AZ vào cùng một tập dữ liệu.

Amazon EFS là lựa chọn duy nhất thoả cả ba:

Yêu cầu EFS
Xuyên AZ ✅ mount target ở mỗi AZ, cùng một file system
Chia sẻ giữa nhiều task ✅ hàng nghìn client đọc/ghi đồng thời
Bền vững ✅ dữ liệu tồn tại độc lập với vòng đời task

Khai trong task definition:

"volumes": [{
  "name": "du-lieu-chung",
  "efsVolumeConfiguration": {
    "fileSystemId": "fs-0abc123",
    "transitEncryption": "ENABLED",
    "authorizationConfig": {"accessPointId": "fsap-0def456", "iam": "ENABLED"}
  }
}]

Ba điều kiện cần nhớ khi gắn EFS vào Fargate: platform version 1.4.0 trở lên, security group của mount target phải cho phép NFS cổng 2049 từ task, và nên dùng access point để giới hạn task vào đúng thư mục của nó.

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

  • A. Bind mounts — gắn một thư mục từ host vào container. Với Fargate, "host" là một môi trường tạm do AWS quản lý, và dữ liệu mất khi task dừng. Nó chỉ dùng để chia sẻ giữa các container trong CÙNG một task, không xuyên task và càng không xuyên AZ.
  • D. Docker volumes — chỉ hỗ trợ với EC2 launch type, không dùng được trên Fargate. Và chúng gắn với một host cụ thể, nên không chia sẻ xuyên AZ được.
  • B. "AWS Gateway Storage volumes" — tên bị viết lộn của AWS Storage Gateway, và dịch vụ đó dùng để nối trung tâm dữ liệu on-premises với AWS, không phải để cấp volume chia sẻ cho container trong AWS.

Ghi nhớ

Các loại volume cho ECS: | Loại | Fargate | Bền vững | Chia sẻ xuyên task | |---|---|---|---| | Bind mount | ✅ | ❌ | ❌ (chỉ trong một task) | | Docker volume | ❌ chỉ EC2 | tuỳ driver | ❌ | | EFS | ✅ | ✅ | ✅ | | FSx for Windows | ❌ chỉ EC2 Windows | ✅ | ✅ |

Nhận dạng nhanh: đề nói "persistent", "shared", "cross-AZ" cho container ⇒ gần như luôn là EFS.

Câu 84 Deployment

After a test deployment in ElasticBeanstalk environment, a developer noticed that all accumulated Amazon EC2 burst balances were lost.

Which of the following options can lead to this behavior?

  1. A

    The deployment was run as a All-at-once deployment, flushing all the accumulated EC2 burst balances

  2. B

    When a canary deployment fails, it resets the EC2 burst balances to zero

  3. C

    The deployment was either run with immutable updates or in traffic splitting mode

  4. D

    The deployment was run as a Rolling deployment, resulting in the resetting of EC2 burst balances

Xem giải thích

Đáp án

C — Lần deploy đã chạy ở chế độ immutable update hoặc traffic splitting.

Vì sao đúng

Cần hiểu burst balance là gì trước: các instance loại T (t2, t3, t4g) và volume gp2 tích luỹ credit khi chạy dưới mức cơ sở, rồi tiêu credit đó khi cần bùng lên. Credit được tích luỹ theo thời gian trên từng instance cụ thể — instance mới bắt đầu từ con số rất thấp.

Điểm mấu chốt: immutable update và traffic splitting đều dựng một fleet EC2 hoàn toàn mới:

Immutable / Traffic splitting:
  Fleet cũ (đã tích luỹ credit nhiều tuần)  →  bị huỷ, credit mất theo
  Fleet mới (credit bằng 0)                 →  phục vụ traffic

Vì instance cũ bị huỷ chứ không được cập nhật tại chỗ, mọi credit tích luỹ trên chúng biến mất cùng chúng. Fleet mới bắt đầu lại từ đầu.

Hệ quả thực tế đáng lưu ý: ngay sau một lần immutable deployment, ứng dụng có thể chậm bất thường vì instance mới chưa có credit để bùng lên khi tải tăng. Với workload phụ thuộc nhiều vào burst, đây là lý do nên cân nhắc instance không burstable (m, c, r) hoặc bật T unlimited mode.

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

  • A. All at once và D. Rolling — cả hai đều cập nhật tại chỗ trên chính instance đang có. Không có instance nào bị thay thế, nên credit vẫn còn nguyên. Đây chính là điểm phân biệt cốt lõi giữa hai nhóm chính sách deploy.
  • B. "Canary deployment thất bại thì reset burst balance về 0" — bịa. Elastic Beanstalk không có chính sách tên "canary" (thứ gần nhất là traffic splitting), và không có cơ chế nào reset credit khi deploy hỏng.

Ghi nhớ

Phân nhóm các chính sách deploy của Beanstalk theo việc có thay instance hay không: | Chính sách | Thay instance? | Burst balance | |---|---|---| | All at once | ❌ tại chỗ | giữ nguyên | | Rolling | ❌ tại chỗ | giữ nguyên | | Rolling with additional batch | một phần | phần mới mất | | Immutable | ✅ fleet mới | mất hết | | Traffic splitting | ✅ fleet mới | mất hết |

Đây cũng là lý do nên theo dõi metric CPUCreditBalance sau mỗi lần deploy immutable.

Câu 85 Deployment

You are a developer in a manufacturing company that has several servers on-site. The company decides to move new development to the cloud using serverless technology. You decide to use the AWS Serverless Application Model (AWS SAM) and work with an AWS SAM template file to represent your serverless architecture.

Which of the following is NOT a valid serverless resource type?

  1. A

    AWS::Serverless::Api

  2. B

    AWS::Serverless::UserPool

  3. C

    AWS::Serverless::Function

  4. D

    AWS::Serverless::SimpleTable

Xem giải thích

Đáp án

B — AWS::Serverless::UserPool KHÔNG phải là loại tài nguyên serverless hợp lệ.

Vì sao đúng

SAM định nghĩa một danh sách hữu hạn các loại tài nguyên với tiền tố AWS::Serverless::, và user pool không nằm trong đó:

Loại tài nguyên SAM Tạo ra
AWS::Serverless::Function Lambda function + IAM role + trigger
AWS::Serverless::Api API Gateway REST API
AWS::Serverless::HttpApi API Gateway HTTP API
AWS::Serverless::SimpleTable bảng DynamoDB đơn giản (chỉ khoá chính)
AWS::Serverless::StateMachine Step Functions state machine
AWS::Serverless::LayerVersion Lambda layer
AWS::Serverless::Application ứng dụng lồng từ SAR
AWS::Serverless::GraphQLApi AppSync GraphQL API

Muốn tạo Cognito user pool trong template SAM thì dùng loại tài nguyên CloudFormation thường:

Resources:
  HamXuLy:
    Type: AWS::Serverless::Function     # ← tài nguyên SAM
  KhoNguoiDung:
    Type: AWS::Cognito::UserPool        # ← tài nguyên CloudFormation thường

Điều này hoàn toàn hợp lệ: SAM là phần mở rộng của CloudFormation, nên trộn hai loại trong cùng một template là chuyện bình thường.

Vì sao các phương án khác sai (tức là chúng đều hợp lệ)

  • A. AWS::Serverless::Api — định nghĩa API Gateway, thường được sinh ngầm khi hàm có event kiểu Api; khai tường minh khi cần cấu hình sâu (CORS, authorizer, OpenAPI).
  • C. AWS::Serverless::Function — loại tài nguyên trung tâm của SAM.
  • D. AWS::Serverless::SimpleTable — bảng DynamoDB rút gọn, chỉ khai được khoá chính. Cần sort key, GSI, LSI hay stream thì phải dùng AWS::DynamoDB::Table.

Ghi nhớ

Mẹo phân biệt nhanh: SAM chỉ có tài nguyên cho các thành phần serverless mà nó rút gọn được đáng kể — Lambda, API Gateway, DynamoDB đơn giản, Step Functions, layer. Mọi thứ khác (Cognito, S3, SNS, SQS, IAM…) dùng loại tài nguyên CloudFormation thường.

Và nhớ dòng bắt buộc mở đầu mọi template SAM: Transform: AWS::Serverless-2016-10-31.

Câu 86 Troubleshooting and Optimization

A company has built its technology stack on AWS serverless architecture for managing all its business functions. To expedite development for a new business requirement, the company is looking at using pre-built serverless applications.

Which AWS service represents the easiest solution to address this use-case?

  1. A

    AWS Serverless Application Repository (SAR)

  2. B

    AWS AppSync

  3. C

    AWS Service Catalog

  4. D

    AWS Marketplace

Xem giải thích

Đáp án

A — AWS Serverless Application Repository (SAR).

Vì sao đúng

Yêu cầu: dùng ứng dụng serverless dựng sẵn để rút ngắn thời gian phát triển, với giải pháp dễ nhất.

SAR là kho ứng dụng serverless được đóng gói sẵn dưới dạng template SAM. Bạn tìm, xem mã, rồi triển khai thẳng vào tài khoản của mình bằng vài cú bấm — hoặc nhúng luôn vào template của mình:

Resources:
  UngDungCoSan:
    Type: AWS::Serverless::Application
    Properties:
      Location:
        ApplicationId: arn:aws:serverlessrepo:us-east-1:123456789012:applications/xu-ly-anh
        SemanticVersion: 1.2.0
      Parameters:
        KichThuocAnh: 800

Ba đặc điểm đáng chú ý:

  • Ứng dụng được triển khai vào chính tài khoản bạn, không phải dịch vụ do người khác vận hành — nên bạn kiểm soát hoàn toàn
  • Xem được mã nguồn trước khi triển khai
  • Chia sẻ được riêng tư trong tổ chức hoặc công khai

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

  • D. AWS Marketplace — kho phần mềm thương mại: AMI, container image, gói SaaS, mô hình ML. Nó không chuyên về ứng dụng serverless đóng gói bằng SAM, và phần lớn là sản phẩm có phí.
  • C. AWS Service Catalog — công cụ để tổ chức tự tạo danh mục sản phẩm được duyệt cho nhân viên dùng. Nó là cơ chế quản trị nội bộ, không phải nơi tìm ứng dụng dựng sẵn từ bên ngoài. Bạn vẫn phải tự viết template rồi đưa vào danh mục.
  • B. AWS AppSync — dịch vụ GraphQL được quản lý, dùng để xây API. Nó là một thành phần kiến trúc, không phải kho ứng dụng.

Ghi nhớ

Kho / danh mục Nội dung
SAR ứng dụng serverless (template SAM), công khai hoặc riêng tư
Marketplace phần mềm thương mại: AMI, container, SaaS
Service Catalog danh mục nội bộ do chính tổ chức duyệt
ECR Public Gallery container image công khai

Lưu ý bảo mật khi dùng SAR công khai: luôn đọc template và mã nguồn trước khi triển khai — ứng dụng chạy trong tài khoản bạn với quyền mà template khai, nên hãy soi kỹ phần IAM.

Câu 87 Deployment

A company needs a version control system for their fast development lifecycle with incremental changes, version control, and support to existing Git tools.

Which AWS service will meet these requirements?

  1. A

    AWS CodeCommit

  2. B

    AWS CodeBuild

  3. C

    AWS CodePipeline

  4. D

    Amazon Versioned S3 Bucket

Xem giải thích

Đáp án

A — AWS CodeCommit.

Vì sao đúng

Đề nêu ba yêu cầu, và cả ba đều là mô tả của một hệ quản lý phiên bản Git:

Yêu cầu CodeCommit
Thay đổi tăng dần (incremental changes) ✅ commit, branch, merge
Quản lý phiên bản ✅ toàn bộ lịch sử Git
Hỗ trợ công cụ Git hiện có ✅ tương thích Git hoàn toàn

CodeCommit là dịch vụ lưu trữ repository Git riêng tư được quản lý. Vì nó nói đúng giao thức Git, mọi công cụ đang dùng đều hoạt động không cần sửa gì:

git clone https://git-codecommit.ap-southeast-1.amazonaws.com/v1/repos/du-an
git commit -m "them tinh nang" && git push

Ưu điểm so với tự dựng Git server: không quản máy chủ, mã hoá tự động (KMS lúc lưu, HTTPS/SSH lúc truyền), phân quyền bằng IAM, và tích hợp sẵn với CodeBuild, CodePipeline, CodeDeploy.

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

  • B. AWS CodeBuild — dịch vụ build và test: biên dịch mã, chạy kiểm thử, tạo artifact. Nó đọc mã từ repository nhưng không lưu trữ và không quản lý phiên bản.
  • C. AWS CodePipeline — dịch vụ điều phối nối các stage source → build → deploy. Nó cũng chỉ tiêu thụ mã từ nguồn, không lưu trữ.
  • D. S3 bucket có bật versioning — đây là bẫy đáng chú ý. S3 versioning có giữ nhiều phiên bản của một object, nhưng nó thiếu toàn bộ mô hình làm việc của Git: không có branch, không có merge, không có pull request, không có lịch sử commit có ý nghĩa, và không tương thích với công cụ Git — mà đó là yêu cầu tường minh trong đề.

Ghi nhớ

Bộ công cụ "Code" của AWS: | Dịch vụ | Vai trò | |---|---| | CodeCommit | lưu trữ mã (Git) | | CodeBuild | biên dịch, kiểm thử, tạo artifact | | CodeDeploy | triển khai lên EC2, ECS, Lambda, on-premises | | CodePipeline | điều phối toàn chuỗi | | CodeArtifact | kho gói phụ thuộc (npm, Maven, pip) |

Ghi chú thời sự: AWS đã ngừng nhận khách hàng mới cho CodeCommit từ giữa 2024 (tài khoản đang dùng vẫn hoạt động). Với dự án mới, GitHub, GitLab hoặc Bitbucket là lựa chọn phổ biến hơn — cả ba đều tích hợp được với CodePipeline.

Câu 88 Security

A developer is looking at establishing access control for an API that connects to a Lambda function downstream.

Which of the following represents a mechanism that CANNOT be used for authenticating with the API Gateway?

  1. A

    AWS Security Token Service (STS)

  2. B

    Standard AWS IAM roles and policies

  3. C

    Cognito User Pools

  4. D

    Lambda Authorizer

Xem giải thích

Đáp án

A — AWS Security Token Service (STS) KHÔNG phải cơ chế xác thực với API Gateway.

Vì sao đúng

API Gateway hỗ trợ đúng bốn cơ chế uỷ quyền, và STS không nằm trong danh sách:

Cơ chế Cách hoạt động
IAM client ký request bằng SigV4; API Gateway kiểm quyền execute-api:Invoke
Cognito user pool authorizer client gửi JWT từ user pool trong header
Lambda authorizer hàm của bạn kiểm token bất kỳ và trả về IAM policy
JWT authorizer (chỉ HTTP API) xác minh token OIDC/OAuth2 chuẩn

Vai trò thật của STS. STS là dịch vụ phát thông tin xác thực AWS tạm thời — AssumeRole, AssumeRoleWithWebIdentity, GetSessionToken. Nó đứng trước bước gọi API: client dùng STS để lấy access key tạm thời, rồi dùng khoá đó ký request bằng SigV4.

Nói cách khác, STS là nguồn cấp thông tin xác thực, không phải cơ chế xác thực của API Gateway. API Gateway không bao giờ "nói chuyện" với STS; nó chỉ xác minh chữ ký SigV4.

Client → STS (AssumeRole) → nhận khoá tạm thời
       → ký request bằng SigV4 → API Gateway xác minh chữ ký (đây mới là cơ chế IAM)

Vì sao các phương án khác sai (tức là chúng đều hợp lệ)

  • B. IAM role và policy — cơ chế uỷ quyền chính thức, phù hợp khi client là dịch vụ AWS hoặc có danh tính AWS.
  • C. Cognito User Pools — authorizer dựng sẵn, xác minh JWT do user pool phát ra.
  • D. Lambda Authorizer — cho phép cài đặt logic xác thực tuỳ ý, dùng khi phân quyền do bên thứ ba lo.

Ghi nhớ

Cách chọn cơ chế uỷ quyền cho API Gateway: | Bối cảnh | Chọn | |---|---| | Client là dịch vụ AWS hoặc có danh tính AWS | IAM (SigV4) | | Dùng thư mục người dùng của AWS | Cognito user pool | | Hệ phân quyền của bên thứ ba, logic tuỳ biến | Lambda authorizer | | OIDC/OAuth2 chuẩn, không muốn viết mã | JWT authorizer (HTTP API) |

Và nhớ lại một lần nữa: API key không phải cơ chế xác thực — nó chỉ để định danh và đo lường theo usage plan.

Câu 89 Development with AWS Services

A business has purchased one m4.xlarge Reserved Instance but it has used three m4.xlarge instances concurrently for an hour.

As a Developer, explain how the instances are charged?

  1. A

    All instances are charged at one hour of Reserved Instance usage

  2. B

    One instance is charged at one hour of On-Demand usage and the other two instances are charged at two hours of Reserved Instance usage

  3. C

    All instances are charged at one hour of On-Demand Instance usage

  4. D

    One instance is charged at one hour of Reserved Instance usage and the other two instances are charged at two hours of On-Demand usage

Xem giải thích

Đáp án

D — Một instance được tính theo giá Reserved Instance, hai instance còn lại tính theo giá On-Demand.

Vì sao đúng

Cần hiểu đúng bản chất của Reserved Instance: RI không phải là một máy chủ — nó là một khoản giảm giá được áp lên hoá đơn.

Cách hoạt động:

  1. Bạn cam kết trả tiền cho một cấu hình cụ thể (loại instance, Region, nền tảng) trong 1 hoặc 3 năm
  2. AWS áp billing discount cho tối đa số lượng instance đang chạy khớp cấu hình đó
  3. Instance vượt quá số RI đã mua thì tính giá On-Demand đầy đủ

Áp vào đề:

Đã mua : 1 × m4.xlarge Reserved Instance
Đang chạy: 3 × m4.xlarge trong 1 giờ
─────────────────────────────────────
Instance 1  →  giá RI (đã trả trước hoặc trả theo cam kết)
Instance 2  →  giá On-Demand
Instance 3  →  giá On-Demand

Điểm cần nhớ: bạn không chọn được instance nào hưởng giảm giá — AWS tự áp cho những instance khớp, và nó là thao tác trên hoá đơn, không phải thao tác trên hạ tầng.

Hệ quả quan trọng khác: RI vẫn tính tiền kể cả khi bạn không chạy instance nào. Cam kết là cam kết.

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

  • A. "Cả ba đều tính giá RI" — bạn chỉ mua một RI, nên chỉ một instance được giảm giá.
  • C. "Cả ba tính giá On-Demand" — bỏ qua RI đã mua. RI tự động áp khi có instance khớp, không cần cấu hình gì.
  • B. Đảo ngược đúng chỗ quan trọng nhất (một On-Demand, hai RI) và còn ghi "hai giờ" trong khi đề nói chạy một giờ.

Ghi nhớ

Mô hình Cam kết Linh hoạt
On-Demand không cao nhất, đắt nhất
Reserved Instance 1 hoặc 3 năm, cấu hình cụ thể thấp; Convertible RI đổi được loại
Savings Plans 1 hoặc 3 năm, theo mức chi tiêu $/giờ cao hơn RI — áp cả EC2, Fargate, Lambda
Spot không rẻ nhất (~90%), có thể bị thu hồi

Ngày nay Savings Plans thường được ưa dùng hơn RI vì linh hoạt hơn nhiều với cùng mức giảm giá.

Câu 90 Chọn nhiều đáp án Troubleshooting and Optimization

A business hosts its website on Amazon EC2 instances and employs Auto Scaling to adjust its resources according to traffic spikes. However, users globally report slow loading times because static content hosted on the EC2 instances takes too long to load, even outside of busy periods.

What pair of actions should be taken to improve the latency of the website? (Select two)

  1. A

    Transfer the application’s static content hosted on EC2 instances to Amazon S3

  2. B

    Upgrade the CPU and RAM available to the EC2 instances

  3. C

    Double the Auto Scaling group’s desired capacity

  4. D

    Migrate the application to AWS Lambda

  5. E

    Set up an Amazon CloudFront distribution to cache the static content with Amazon S3 configured as the origin

Xem giải thích

Đáp án

A và E.

  • A — Chuyển nội dung tĩnh từ EC2 sang Amazon S3.
  • E — Dựng CloudFront distribution cache nội dung tĩnh với S3 làm origin.

Vì sao đúng

Hai manh mối trong đề khoanh vùng rất chặt:

  1. Vấn đề là nội dung tĩnh tải chậm
  2. Chậm kể cả ngoài giờ cao điểm ⇒ không phải vấn đề năng lực

Vế thứ hai loại thẳng mọi giải pháp về mở rộng: nếu chậm cả lúc vắng thì thêm máy hay máy mạnh hơn cũng không giúp gì. Nguyên nhân thật là khoảng cách địa lý — người dùng toàn cầu đang tải nội dung từ một Region duy nhất.

A — đưa nội dung tĩnh sang S3. Ảnh, CSS, JavaScript, video không cần EC2 phục vụ. S3 rẻ hơn, bền hơn (11 số 9), và quan trọng nhất là làm origin chuẩn cho CloudFront.

E — đặt CloudFront phía trước. Đây là phần giải quyết vấn đề gốc: nội dung được cache tại hơn 600 edge location trên toàn thế giới, nên người dùng tải từ điểm gần họ nhất thay vì đi nửa vòng trái đất.

Trước:  Người dùng Brazil → (hàng trăm ms) → EC2 ở Singapore
Sau  :  Người dùng Brazil → (vài chục ms)  → CloudFront edge ở São Paulo

Kết hợp thêm Origin Access Control (OAC) để bucket đóng hoàn toàn với Internet, chỉ CloudFront đọc được.

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

  • B. Nâng CPU và RAM cho EC2 — vấn đề không phải năng lực máy chủ (chậm cả lúc vắng). Nâng cấu hình không rút ngắn được khoảng cách địa lý.
  • C. Gấp đôi desired capacity của Auto Scaling group — cùng lý do, và còn nhân đôi chi phí mà không giải quyết gì.
  • D. Chuyển ứng dụng sang Lambda — cuộc tái kiến trúc lớn, không liên quan tới vấn đề. Lambda cũng chạy trong một Region cụ thể, nên độ trễ cho người dùng ở xa vẫn nguyên.

Ghi nhớ

Chẩn đoán độ trễ theo triệu chứng: | Triệu chứng | Nguyên nhân | Cách chữa | |---|---|---| | Chậm cả lúc vắng, chậm ở xa | khoảng cách địa lý | CloudFront / Global Accelerator | | Chỉ chậm lúc cao điểm | thiếu năng lực | Auto Scaling, cache, tối ưu truy vấn | | Chậm đều ở mọi nơi mọi lúc | mã hoặc CSDL chậm | tối ưu ứng dụng |

Và nhớ mẫu chuẩn: nội dung tĩnh → S3 + CloudFront; nội dung động → ALB + EC2, cũng đặt sau CloudFront được.