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

Tìm thấy 1356 câu.

Câu 1261
A developer published a change to a new version of an AWS Lambda function. To test the change, the developer must route 50% of the traffic to the new version and 60% of the traffic to the current version.

What is the MOST operationally efficient way to meet this requirement?
  1. A Create two Amazon Route 53 records that use a simple routing policy to route traffic to the different versions of the Lambda function. Create another Route 53 record that uses a weighted routing policy to route 50% of the traffic to each simple routing record. Test the Lambda function by using the weighted routing record.
  2. B Create an Amazon API Gateway API with a POST method that is integrated with the Lambda function. Add a stage variable that includes the version of the Lambda function. Add a canary release that will override the version variable 50% of the time. Deploy and test the Lambda function through the API Gateway stage.
  3. C Create a Lambda function alias. Set the weight to 50% for the current version and 50% for the new version. Set the event source mappings for the Lambda function to point to the alias.
  4. D Update the event source mappings for the Lambda function. In the mappings, set the weight to 50% for the current version and 50% for the new version.
Xem giải thích

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

Câu hỏi tập trung vào việc thử nghiệm phiên bản mới của AWS Lambda function một cách hiệu quả về mặt vận hành (operationally efficient). Cụ thể:

  • Một developer đã publish một phiên bản mới (new version) của Lambda function.
  • Yêu cầu: Route 50% traffic đến phiên bản mới và 60% traffic đến phiên bản hiện tại (current version). Lưu ý: Tổng là 110% có thể là lỗi mô tả trong câu hỏi gốc, nhưng các lựa chọn thực tế điều chỉnh thành tỷ lệ cân bằng như 50-50 để minh họa nguyên tắc weighted traffic shifting giữa các versions. Mục tiêu là test thay đổi mà không ảnh hưởng toàn bộ production traffic.
  • Ngữ cảnh AWS Lambda: Lambda hỗ trợ versions (immutable snapshots) và aliases (pointers linh hoạt đến versions với weights). Đây là tính năng cốt lõi để A/B testing hoặc canary deployments, đặc biệt khi traffic đến từ event sources như S3, DynamoDB, Kinesis (qua event source mappings).
  • MOST operationally efficient: Ưu tiên phương pháp native của Lambda, ít bước triển khai, tự động scale, không cần service trung gian như Route 53 hay API Gateway.

📘 Tài liệu tham khảo:

  • AWS Lambda Documentation: Lambda function versions và Lambda aliases (cập nhật 2024-2026, hỗ trợ weights lên đến 0.0-1.0 cho nhiều versions).
  • AWS Well-Architected Framework: DevOps Pillar - Traffic shifting với aliases (không thay đổi đến 2026).

✅ Đáp án đúng và lý do lựa chọn

Đáp án đúng: Create a Lambda function alias. Set the weight to 50% for the current version and 50% for the new version. Set the event source mappings for the Lambda function to point to the alias.

Lý do 🛠️:

  • Lambda aliases là cách native và efficient nhất để route traffic giữa versions với weights chính xác (ví dụ: 0.5 cho new version, 0.5 cho current). Traffic được AWS tự động phân bổ theo tỷ lệ.
  • Event source mappings (kết nối từ event sources như SQS/Kinesis) chỉ cần point đến ARN của alias, không cần thay đổi khi publish version mới → zero-downtime, automated.
  • Hỗ trợ up to 2026: Aliases scale với Lambda concurrency, tích hợp monitoring qua CloudWatch. Tiết kiệm chi phí, không cần thêm service.

❌ Giải thích tất cả các phương án (đúng/sai)

  • ❌ Phương án SAI: Create two Amazon Route 53 records that use a simple routing policy to route traffic to the different versions of the Lambda function. Create another Route 53 record that uses a weighted routing policy to route 50% of the traffic to each simple routing record. Test the Lambda function by using the weighted routing record.
    Giải thích: Route 53 dùng cho DNS routing (HTTP/HTTPS), không phù hợp với Lambda invoke (qua ARN trực tiếp). Lambda không expose public DNS; cần API Gateway/ALB làm proxy → phức tạp, không efficient, tốn chi phí. Không hỗ trợ event-driven traffic.

  • ❌ Phương án SAI: Create an Amazon API Gateway API with a POST method that is integrated with the Lambda function. Add a stage variable that includes the version of the Lambda function. Add a canary release that will override the version variable 50% of the time. Deploy and test the Lambda function through the API Gateway stage.
    Giải thích: API Gateway canary releases chỉ hỗ trợ gradual shift 0-100% (không split 50-50 giữa hai versions cụ thể). Stage variables cần manual override, không tự động như aliases. Chỉ phù hợp HTTP traffic, không cho event sources → không linh hoạt, thêm latency/cost.

  • ✅ Phương án ĐÚNG: Create a Lambda function alias. Set the weight to 50% for the current version and 50% for the new version. Set the event source mappings for the Lambda function to point to the alias.
    Giải thích: Như đã nêu ở phần đáp án đúng. Hoàn hảo cho mọi traffic type (events/HTTP), publish version mới chỉ cần update alias weight (CLI/API), theo dõi qua CloudWatch Lambda Insights (mới 2024+).

  • ❌ Phương án SAI: Update the event source mappings for the Lambda function. In the mappings, set the weight to 50% for the current version and 50% for the new version.
    Giải thích: Event source mappings không hỗ trợ weights trực tiếp giữa versions (chỉ point đến một ARN duy nhất). Phải dùng alias ARN để weights hoạt động. Update mappings thủ công → không efficient, gián đoạn traffic khi thay đổi.

🛠️ Khuyến nghị thực hành: Sử dụng AWS CLI: aws lambda update-alias --function-name myfunc --name prod --function-version 2 --routing-config AdditionalVersionWeights='{"1":0.5}' (version 1 current, 2 new). Theo dõi metrics: Invocation count per version.

Câu 1262
A developer is building an application that processes a stream of user-supplied data. The data stream must be consumed by multiple Amazon EC2 based processing applications in parallel and in real time. Each processor must be able to resume without losing data if there is a service interruption. The application architect plans to add other processors in the near future, and wants to minimize the amount of data duplication involved.

Which solution will satisfy these requirements?
  1. A Publish the data to Amazon Simple Queue Service (Amazon SQS).
  2. B Publish the data to Amazon Data Firehose.
  3. C Publish the data to Amazon EventBridge.
  4. D Publish the data to Amazon Kinesis Data Streams.
Xem giải thích

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

Câu hỏi mô tả một ứng dụng xử lý dòng dữ liệu (data stream) từ người dùng, với các yêu cầu chính sau:
📊 Consume bởi nhiều ứng dụng xử lý dựa trên Amazon EC2 song song và thời gian thực (real-time): Nhiều EC2 instances cần đọc dữ liệu cùng lúc mà không bị chậm trễ.
🔄 Khôi phục (resume) mà không mất dữ liệu nếu có gián đoạn dịch vụ: Hệ thống phải giữ dữ liệu tạm thời để consumer có thể tiếp tục từ vị trí cuối cùng.
➕ Dễ dàng thêm processor mới trong tương lai: Kiến trúc mở rộng linh hoạt.
⚖️ Giảm thiểu trùng lặp dữ liệu (minimize data duplication): Không copy dữ liệu nhiều lần cho từng consumer.

Đây là tình huống điển hình cho streaming data processing trên AWS, nơi cần một dịch vụ hỗ trợ multiple concurrent consumers, data retention, và fan-out hiệu quả. Kiến thức cập nhật đến 2026 (AWS re:Invent 2025 vẫn nhấn mạnh Kinesis cho real-time streaming với enhanced fan-out và multi-consumer shards).

✅ Đáp án đúng: Publish the data to Amazon Kinesis Data Streams

Lý do lựa chọn:
🛠️ Amazon Kinesis Data Streams là dịch vụ lý tưởng cho real-time data streaming với khả năng hỗ trợ multiple consumers đọc dữ liệu song song từ cùng một stream qua shards (đơn vị phân vùng dữ liệu).

  • Real-time & parallel: Sử dụng enhanced fan-out (cập nhật từ 2019, vẫn chuẩn 2026) cho phép mỗi consumer nhận dữ liệu ngay lập tức mà không ảnh hưởng lẫn nhau, throughput lên đến hàng TB/s.
  • Resume không mất data: Dữ liệu được retention lên đến 365 ngày (mặc định 24h-7d, configurable), consumer sử dụng consumer application với checkpoint (qua KCL - Kinesis Client Library) để resume từ sequence number cuối cùng.
  • Thêm processor dễ dàng: Tạo consumer groups mới mà không duplicate data gốc (fan-out tự động).
  • Minimize duplication: Dữ liệu lưu một bản duy nhất trên stream, các consumer "subscribe" độc lập.
    📘 Tài liệu tham khảo: AWS Kinesis Data Streams Documentation & Enhanced Fan-Out.

🔍 Giải thích tất cả các phương án

  • ❌ Publish the data to Amazon Simple Queue Service (Amazon SQS)
    Phương án này sai vì SQS là message queue (pull-based), không phải streaming service. Mặc dù hỗ trợ multiple consumers, nhưng standard SQS có at-least-once delivery dẫn đến duplication cao (không minimize), và FIFO SQS giới hạn throughput (300 msg/s), không phù hợp real-time parallel cao. Không có built-in retention dài hạn cho resume (messages xóa sau consume hoặc TTL ngắn). Không scale tốt cho stream lớn và thêm consumer dễ gây duplicate.

  • ❌ Publish the data to Amazon Data Firehose
    Phương án này sai vì Amazon Kinesis Data Firehose (trước là Firehose) dành cho batch delivery dữ liệu đến storage (S3, Redshift, etc.) với transformation, không hỗ trợ multiple real-time consumers. Nó buffer data (60s-24h) rồi push một chiều, không cho phép parallel EC2 consumers resume từ stream. Không minimize duplication vì focus vào persistence, không phải fan-out.

  • ❌ Publish the data to Amazon EventBridge
    Phương án này sai vì EventBridge là event bus cho routing events (rules-based), phù hợp low-volume events (<1MB/event), không phải high-throughput streaming. Không hỗ trợ data retention dài cho resume (events expire nhanh), và multiple consumers qua targets nhưng không parallel real-time từ cùng source mà không duplicate (mỗi rule tạo copy). Giới hạn scale cho data stream lớn từ users.

  • ✅ Publish the data to Amazon Kinesis Data Streams
    (Đã giải thích chi tiết ở phần đáp án đúng).

🛠️ Kết luận: Kinesis Data Streams là lựa chọn tối ưu cho DevOps streaming pipeline, tích hợp tốt với EC2 via SDK/KCL. Nếu scale lớn hơn, có thể kết hợp Kinesis Data Analytics hoặc MSK (2026 updates hỗ trợ zero-ETL).

Câu 1263
An application is experiencing performance issues based on increased demand. This increased demand is on read-only historical records pulled from an Amazon RDS-hosted database with custom views and queries. A developer must improve performance without changing the database structure.

Which approach will improve performance and MINIMIZE management overhead?
  1. A Deploy Amazon DynamoDB, move all the data, and point to DynamoDB.
  2. B Deploy Amazon ElastiCache (Redis OSS) and cache the data for the application.
  3. C Deploy Memcached on Amazon EC2 and cache the data for the application.
  4. D Deploy Amazon DynamoDB Accelerator (DAX) on Amazon RDS to improve cache performance.
Xem giải thích

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

Câu hỏi tập trung vào vấn đề hiệu suất ứng dụng (performance issues) do tăng nhu cầu đọc dữ liệu lịch sử chỉ đọc (read-only historical records) từ cơ sở dữ liệu Amazon RDS (hỗ trợ relational databases như MySQL, PostgreSQL). Dữ liệu được truy xuất qua custom views và queries (các view và truy vấn tùy chỉnh). Yêu cầu là cải thiện hiệu suất mà KHÔNG thay đổi cấu trúc database (không thay đổi schema, views hay queries hiện tại), đồng thời MINIMIZE management overhead (giảm thiểu công sức quản lý hạ tầng).

🔍 Mục tiêu chính: Sử dụng giải pháp caching để giảm tải cho RDS bằng cách lưu trữ kết quả truy vấn phổ biến vào bộ nhớ nhanh (in-memory cache), giúp ứng dụng đọc nhanh hơn mà không cần di chuyển dữ liệu hoặc chỉnh sửa code/query.

✅ Đáp án đúng và lý do lựa chọn

Đáp án đúng: Deploy Amazon ElastiCache (Redis OSS) and cache the data for the application.

Lý do chọn 🛠️:

  • Amazon ElastiCache là dịch vụ fully managed caching (quản lý hoàn toàn bởi AWS), hỗ trợ Redis OSS (Redis Open Source Software) – lý tưởng cho read-heavy workloads với custom queries từ RDS.
  • Nó không yêu cầu thay đổi cấu trúc DB vì ứng dụng chỉ cần cache kết quả queries/views từ RDS vào ElastiCache (query RDS → cache → serve từ cache nếu hit).
  • Minimize management overhead: AWS tự động scale, replicate, backup, monitor (CloudWatch), failover – không cần quản lý server thủ công.
  • Hiệu suất cao: Sub-millisecond latency cho reads, hỗ trợ persistence (RDB/AOF snapshots), và cluster mode cho scalability lớn.
  • Phù hợp phiên bản AWS mới nhất (2026): ElastiCache for Redis OSS 7.x hỗ trợ serverless option (GA từ 2023), multi-AZ, encryption at rest/transit.

📋 Phân tích tất cả các phương án

Dưới đây là phân tích chi tiết từng lựa chọn, với đánh giá đúng/sai dựa trên yêu cầu câu hỏi:

  • ❌ Deploy Amazon DynamoDB, move all the data, and point to DynamoDB.
    Sai vì: Yêu cầu move all data (di chuyển toàn bộ dữ liệu) từ RDS relational sang DynamoDB NoSQL → thay đổi hoàn toàn cấu trúc DB (schema, indexes, views/queries tùy chỉnh không tương thích). Không minimize management overhead (cần thiết kế partition key, GSI). Chỉ phù hợp nếu refactor app lớn, không phải giải pháp nhanh cho read-only historical data.

  • ✅ Deploy Amazon ElastiCache (Redis OSS) and cache the data for the application.
    Đúng vì: Như giải thích ở trên. Đây là managed caching layer hoàn hảo cho RDS reads, cache query results (ví dụ: dùng Redis hash/set cho views), TTL tự động invalidate. Overhead thấp nhất, tích hợp seamless với VPC/RDS.

  • ❌ Deploy Memcached on Amazon EC2 and cache the data for the application.
    Sai vì: Memcached là self-managed trên EC2 → management overhead cao (cần tự install, scale, monitor, HA, patching, backup thủ công). Không fully managed như ElastiCache. Memcached kém linh hoạt hơn Redis (no persistence, simple key-value only), không phù hợp tối ưu cho complex views/queries.

  • ❌ Deploy Amazon DynamoDB Accelerator (DAX) on Amazon RDS to improve cache performance.
    Sai vì: DAX chỉ dành cho DynamoDB (in-memory cache cho DynamoDB), không hỗ trợ RDS (relational DB). Không thể deploy DAX trên RDS → invalid solution. AWS không có tương đương trực tiếp cho RDS (thay vào đó dùng ElastiCache hoặc read replicas).

📘 Tài liệu tham khảo (AWS cập nhật đến 2026)

Hy vọng phân tích này giúp bạn ôn thi hiệu quả! 🚀 Nếu cần ví dụ code Terraform/CloudFormation, hãy hỏi thêm.

Câu 1264
A developer is using AWS CloudFormation to deploy an AWS Lambda function. The developer needs to set the Lambda function's timeout value based on the environment parameter of the template. The template contains mappings of EnvironmentData for each environment's timeout value. The environment parameter and EnvironmentData mappings are as follows:

Environment parameter:

Parameters:
  Environment:
    Type: String
    Default: dev
    AllowedValues:
      - dev
      - test
      - prod
    Description: The name of the deployment environment.


EnvironmentData mappings:

Mappings:
  EnvironmentData:
    dev:
      Timeout: 30
    test:
      Timeout: 60
    prod:
      Timeout: 90


Which statement will meet these requirements?
  1. A Timeout: !GetAtt [EnvironmentData, !Ref Environment, Timeout]
  2. B Timeout: !FindInMap [EnvironmentData, !Ref Environment, Timeout]
  3. C Timeout: !Select [EnvironmentData, !Ref Environment, Timeout]
  4. D Timeout: !ForEach[EnvironmentData, !Ref Environment, Timeout]
Xem giải thích

📘 Phân tích câu hỏi

Câu hỏi yêu cầu chúng ta tìm ra cách thiết lập giá trị timeout cho một hàm AWS Lambda dựa trên tham số môi trường (Environment) trong một template AWS CloudFormation. Template chứa một tham số Environment và một mapping EnvironmentData với các giá trị timeout tương ứng cho từng môi trường.

Tham số Environment:

Parameters:
  Environment:
    Type: String
    Default: dev
    AllowedValues:
      - dev
      - test
      - prod
    Description: The name của deployment environment.

Mapping EnvironmentData:

Mappings:
  EnvironmentData:
    dev:
      Timeout: 30
    test:
      Timeout: 60
    prod:
      Timeout: 90

Mục tiêu là thiết lập giá trị timeout cho hàm Lambda dựa trên môi trường được chỉ định.

🧩 Phân tích các lựa chọn

Lựa chọn 1: Timeout: !GetAtt [EnvironmentData, !Ref Environment, Timeout]

❌ Sai:

  • !GetAtt thường được sử dụng để truy xuất giá trị từ một tài nguyên (resource) trong CloudFormation, không phải từ một mapping.

Lựa chọn 2: Timeout: !FindInMap [EnvironmentData, !Ref Environment, Timeout]

✅ Đúng:

  • !FindInMap là một hàm trong CloudFormation giúp tìm kiếm giá trị trong một mapping dựa trên khóa (key).
  • Ở đây, !Ref Environment trả về giá trị của tham số Environment (ví dụ: dev, test, prod).
  • !FindInMap sẽ tìm trong mapping EnvironmentData với khóa tương ứng và trả về giá trị Timeout.

Lựa chọn 3: Timeout: !Select [EnvironmentData, !Ref Environment, Timeout]

❌ Sai:

  • !Select được sử dụng để chọn một phần tử từ danh sách (list) dựa trên chỉ mục (index).
  • Ở đây, chúng ta đang làm việc với mapping, không phải danh sách.

Lựa chọn 4: Timeout: !ForEach[EnvironmentData, !Ref Environment, Timeout]

❌ Sai:

  • !ForEach không phải là một hàm hợp lệ trong CloudFormation.
  • Nếu muốn lặp qua một danh sách, bạn có thể sử dụng !Sub hoặc các kỹ thuật khác nhưng không phải !ForEach như thế này.

📘 Kết luận

Lựa chọn đúng là: Timeout: !FindInMap [EnvironmentData, !Ref Environment, Timeout].

Tài liệu tham khảo:

Câu 1265
A company’s AWS accounts are in an organization in AWS Organizations. An application in Account A uses environment variables that are stored as parameters in AWS Systems Manager Parameter Store. A developer is creating a new application in Account B that needs to use the same environment variables.

The application in Account B needs access to the parameters in Account A without duplicating the parameters into Account B.

Which solution will meet these requirements with the LEAST operational overhead?
  1. A Configure the application in Account B to use credentials for an IAM user in AccountA that has access to the parameters.
  2. B Create an assumable IAM role in Account A. Grant the role the permission to access the parameters.
  3. C Configure cross-account resource sharing for the parameters by using AWS Resource Access Manager (AWS RAM).
  4. D Write a script that stores the parameter values in a private Amazon S3 bucket that both accounts can access.
Xem giải thích

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

Câu hỏi tập trung vào quản lý tài nguyên cross-account trong AWS Organizations, cụ thể là chia sẻ các tham số (parameters) lưu trữ trong AWS Systems Manager (SSM) Parameter Store từ Account A sang Account B mà không cần sao chép (duplicate) dữ liệu.

  • Bối cảnh: Các tài khoản AWS thuộc một tổ chức (organization) trong AWS Organizations. Ứng dụng ở Account A sử dụng biến môi trường (environment variables) được lưu dưới dạng parameters trong SSM Parameter Store. Nhà phát triển đang tạo ứng dụng mới ở Account B cần truy cập chính xác cùng các parameters đó.
  • Yêu cầu chính: Account B phải truy cập parameters từ Account A mà không duplicate, và giải pháp phải có operational overhead thấp nhất (least operational overhead) – nghĩa là ít công sức quản lý, vận hành, không cần code/script phức tạp, tận dụng tính năng native của AWS.
  • Mục tiêu: Đảm bảo an toàn, tuân thủ nguyên tắc least privilege, và dễ scale trong môi trường multi-account.

Đây là tình huống phổ biến trong DevOps, nơi cần cross-account access cho shared configuration mà không làm lộ dữ liệu hoặc tăng chi phí quản lý. AWS cung cấp giải pháp native qua AWS Resource Access Manager (RAM) cho SSM parameters (tính năng ra mắt từ 2022 và vẫn là best practice đến 2026).

✅ Đáp án đúng và lý do lựa chọn

Đáp án đúng: Configure cross-account resource sharing for the parameters by using AWS Resource Access Manager (AWS RAM).

Lý do:

  • AWS RAM cho phép chia sẻ tài nguyên SSM Parameter Store cross-account một cách native, trực tiếp và tự động, chỉ cần vài bước config đơn giản: Tạo resource share trong Account A, chọn parameters, invite Account B qua Organizations, và Account B accept share.
  • Least operational overhead: Không cần code, script, quản lý credentials/role phức tạp. Parameters được truy cập qua API SSM thông thường ở Account B (như GetParameter), AWS xử lý authorization tự động. Hỗ trợ cả Standard và Advanced parameters, versioning, và KMS encryption.
  • An toàn & scale: Tích hợp Organizations, audit qua CloudTrail, least privilege. Không duplicate dữ liệu, tránh inconsistency.
  • Đây là best practice chính thức của AWS cho cross-account Parameter Store (cập nhật đến 2026).

📋 Giải thích tất cả các phương án (đúng/sai)

  • ❌ Phương án SAI: Configure the application in Account B to use credentials for an IAM user in AccountA that has access to the parameters.
    Giải thích: Phương án này yêu cầu chia sẻ long-term credentials của IAM user từ Account A sang Account B – rất không an toàn (vi phạm nguyên tắc temporary credentials), dễ bị lộ (như hardcode env vars), và overhead cao vì phải quản lý user, rotate keys thủ công, monitor access. Không scale cho Organizations, dễ bị AWS GuardDuty flag là rủi ro. Không phải giải pháp native.

  • ❌ Phương án SAI: Create an assumable IAM role in Account A. Grant the role the permission to access the parameters.
    Giải thích: Tạo role assumable ở Account A chỉ là bước đầu, thiếu config ở Account B để assume role (như IAM policy trust relationship). App ở B phải dùng STS AssumeRole API, tăng overhead code/logic (xử lý temporary creds, error handling). Không chia sẻ resource trực tiếp như RAM, vẫn cần maintain policy updates nếu parameters thay đổi. Phức tạp hơn RAM cho use case này.

  • ✅ Phương án ĐÚNG: Configure cross-account resource sharing for the parameters by using AWS Resource Access Manager (AWS RAM).
    Giải thích: Như đã nêu ở trên, đây là giải pháp native, least overhead. AWS RAM share SSM parameters như resource (ARN-based), Account B thấy parameters như local nhưng pull từ A. Hỗ trợ Organizations auto-accept, zero-copy data.

  • ❌ Phương án SAI: Write a script that stores the parameter values in a private Amazon S3 bucket that both accounts can access.
    Giải thích: Yêu cầu viết script sync parameters từ SSM sang S3 (cron job Lambda/EC2), config cross-account S3 bucket policy – overhead rất cao (maintain script, handle versioning/encryption, polling changes, error retry). Dễ inconsistency nếu params update ở A mà script fail. Không native cho parameters (mất metadata SSM như type/secure), tăng chi phí và rủi ro data exposure.

📘 Tài liệu tham khảo (cập nhật AWS 2026)

  • AWS Docs SSM Parameter Store Cross-Account Sharing: Sharing parameters between accounts – Hướng dẫn chi tiết RAM cho parameters.
  • AWS RAM User Guide: What is AWS RAM? – Supported resources bao gồm SSM::Parameter.
  • AWS Well-Architected Framework (DevOps Pillar): Nhấn mạnh RAM cho multi-account resource sharing.
  • AWS re:Post & Blogs: Tìm "SSM Parameter Store RAM cross-account" cho case studies thực tế.

🛠️ Lời khuyên DevOps: Trong Organizations, luôn ưu tiên RAM/Resource Share trước khi custom IAM/S3 để giảm toil và tăng security! Nếu cần demo, dùng AWS Console RAM > Create resource share.

Câu 1266
In a move toward using microservices, a company’s management team has asked all development teams to build their services so that API requests depend only on that service’s data store. One team is building a Payments service which has its own database; the service needs data that originates in the Accounts database. Both are using Amazon DynamoDB.

What approach will result in the simplest, decoupled, and reliable method to get near-real time updates from the Accounts database?
  1. A Use AWS Glue to perform frequent ETL updates from the Accounts database to the Payments database.
  2. B Use Amazon ElastiCache in Payments, with the cache updated by triggers in the Accounts database.
  3. C Use Amazon Data Firehose to deliver all changes from the Accounts database to the Payments database.
  4. D Use Amazon DynamoDB Streams to deliver all changes from the Accounts database to the Payments database.
Xem giải thích

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

Câu hỏi tập trung vào kiến trúc microservices trên AWS, nơi các dịch vụ phải độc lập hoàn toàn (API requests chỉ phụ thuộc vào datastore riêng của dịch vụ đó). Cụ thể, Payments service có database riêng (DynamoDB), nhưng cần dữ liệu near-real time từ Accounts database (cũng DynamoDB). Mục tiêu là tìm phương pháp đơn giản nhất (simplest), độc lập (decoupled) và đáng tin cậy (reliable) để truyền cập nhật thay đổi từ Accounts sang Payments, tránh coupling trực tiếp giữa hai database.

🔑 Yêu cầu cốt lõi:

  • Near-real time (gần thời gian thực, độ trễ vài giây).
  • Không làm hai service phụ thuộc lẫn nhau (decoupled: Payments không query trực tiếp Accounts DB).
  • Phù hợp với DynamoDB (NoSQL serverless, scale cao).

✅ Đáp án đúng và lý do lựa chọn

Đáp án đúng: Use Amazon DynamoDB Streams to deliver all changes from the Accounts database to the Payments database.

Lý do chi tiết 🛠️:

  • DynamoDB Streams là tính năng native của DynamoDB, tự động capture tất cả thay đổi (insert/update/delete) trên bảng Accounts dưới dạng ordered stream với độ trễ < 2 giây (near-real time).
  • Decoupled hoàn hảo: Payments service có thể consume stream qua Lambda trigger, Kinesis Client Library hoặc DynamoDB Streams API mà không cần truy cập trực tiếp Accounts DB → Tuân thủ nguyên tắc microservices.
  • Simplest & Reliable: Serverless, auto-scale, durable (lưu stream 24h), không cần ETL phức tạp hay middleware. Hỗ trợ exactly-once delivery với fan-out qua Kinesis Data Streams (tính năng mới nhất 2023+).
  • Phù hợp kiến thức AWS 2026: DynamoDB Streams tích hợp sâu với EventBridge, Lambda cho event-driven architecture.

📋 Giải thích tất cả các phương án (đúng/sai)

Dưới đây là phân tích từng lựa chọn một cách chi tiết:

  • ❌ [SAI] Use AWS Glue to perform frequent ETL updates from the Accounts database to the Payments database.
    AWS Glue là công cụ ETL batch-oriented (chạy theo lịch Crawler/Job), không hỗ trợ near-real time (chỉ hourly/daily). Nó tạo coupling qua schema mapping phức tạp, tốn kém (provisioned capacity), và không reliable cho microservices (duplicate data, lag cao). Không simplest vì cần setup schema, crawler.

  • ❌ [SAI] Use Amazon ElastiCache in Payments, with the cache updated by triggers in the Accounts database.
    DynamoDB không có triggers native như RDS (chỉ Streams/Lambda). Phải dùng Lambda + Streams gián tiếp, nhưng ElastiCache (Redis/Memcached) làm tăng complexity (cache invalidation, consistency issue). Không decoupled vì Payments vẫn phụ thuộc Accounts gián tiếp; không reliable (cache miss, eviction). Không simplest cho DynamoDB.

  • ❌ [SAI] Use Amazon Data Firehose to deliver all changes from the Accounts database to the Payments database.
    Kinesis Data Firehose dành cho streaming vào S3/ES/Kinesis, không native cho DB-to-DB sync. Phải dùng Lambda transform từ Streams → Firehose → buffer → Payments, tạo độ trễ cao (minutes), coupling qua pipeline phức tạp, tốn chi phí buffer/transformation. Không simplest/reliable cho use case DynamoDB thuần (overkill).

  • ✅ [ĐÚNG] Use Amazon DynamoDB Streams to deliver all changes from the Accounts database to the Payments database.
    (Như giải thích ở trên) – Phương pháp optimal cho DynamoDB microservices: Native, low-latency, decoupled, zero-management.

📘 Tài liệu tham khảo (AWS cập nhật mới nhất 2026)

  • AWS DynamoDB Developer Guide: DynamoDB Streams – Chi tiết capture changes & consumers.
  • AWS Well-Architected Framework (Microservices): Event-Driven Integration – Khuyến nghị Streams cho decoupling.
  • AWS re:Invent 2024/2025 Sessions: DOP204 (DynamoDB Best Practices) nhấn mạnh Streams + Lambda cho near-real time sync.
  • Exam Prep DOP-C02: Topic "DynamoDB Advanced Features" – Streams là standard answer cho change data capture (CDC).

Hy vọng phân tích này giúp bạn ôn thi hiệu quả! 🚀 Nếu cần ví dụ code Lambda consumer, hãy hỏi thêm.

Câu 1267 Chọn nhiều đáp án
A developer compiles an AWS Lambda function and packages the result as a .zip file. The developer uses the Functions page on the Lambda console to attempt to upload the local packaged .zip file. When pushing the package ta Lambda, the console returns the following error:

An error occurred (RequestEntityTooLargeException) when calling the UpdateFunctionCode operation


Which solutions can the developer use to publish the code? (Choose two.)
  1. A Upload the package to Amazon 3. Use the Functions page on the Lambda console to upload the package from the S3 location.
  2. B Create an AWS Support ticket to increase the maximum package size.
  3. C Use the update-function-code AWS CLI command. Pass the --publish parameter.
  4. D Repackage the Lambda function as a Docker container image. Upload the image to Amazon Elastic Container Registry (Amazon ECR). Create a new Lambda function by using the Lambda console. Reference the image that is deployed to Amazon ECR.
  5. E Sign the .zip file digitally. Create a new Lambda function by using the Lambda console. Update the configuration of the new Lambda function to include the Amazon Resource Name (ARN) of the code signing configuration.
Xem giải thích

📝 Phân tích câu hỏi

Câu hỏi mô tả tình huống một nhà phát triển muốn tải lên một hàm AWS Lambda đã được biên dịch và đóng gói dưới dạng tệp .zip. Tuy nhiên, khi cố gắng tải lên tệp này thông qua trang Functions trên console AWS Lambda, họ gặp phải lỗi RequestEntityTooLargeException. Lỗi này xảy ra khi kích thước của gói tải lên vượt quá giới hạn cho phép của AWS Lambda.

📝 Giải thích các lựa chọn

Lựa chọn đúng

  1. ✅ Upload the package to Amazon S3. Use the Functions page on the Lambda console to upload the package from the S3 location.

    • Giải thích: Khi tải lên tệp .zip thông qua console AWS Lambda, có giới hạn kích thước tệp là 250MB. Tuy nhiên, nếu tải lên tệp lên Amazon S3 trước, sau đó tải lên từ S3, kích thước tệp có thể lên đến 5TB. Đây là một giải pháp hiệu quả để vượt qua giới hạn kích thước tệp của AWS Lambda.
  2. ✅ Repackage the Lambda function as a Docker container image. Upload the image to Amazon Elastic Container Registry (Amazon ECR). Create a new Lambda function by using the Lambda console. Reference the image that is deployed to Amazon ECR.

    • Giải thích: Kể từ khi AWS Lambda hỗ trợ các hàm dựa trên container (năm 2021), nhà phát triển có thể đóng gói hàm Lambda dưới dạng hình ảnh Docker và tải lên Amazon Elastic Container Registry (ECR). Hình ảnh container có thể có kích thước lớn hơn nhiều so với giới hạn kích thước của tệp .zip, giúp giải quyết vấn đề về kích thước lớn.

Lựa chọn sai

  1. ❌ Create an AWS Support ticket to increase the maximum package size.

    • Giải thích: Không thể yêu cầu tăng kích thước tối đa của gói tải lên thông qua vé hỗ trợ AWS. Giới hạn kích thước của tệp tải lên AWS Lambda đã được thiết lập và không thể thay đổi. Thay vào đó, cần sử dụng các giải pháp khác như đã đề cập ở trên.
  2. ❌ Use the update-function-code AWS CLI command. Pass the --publish parameter.

    • Giải thích: Sử dụng lệnh update-function-code của AWS CLI với tham số --publish không giúp giải quyết vấn đề về kích thước lớn. Lệnh này dùng để cập nhật mã của hàm Lambda, nhưng vẫn bị giới hạn bởi kích thước tối đa cho phép khi tải lên.
  3. ❌ Sign the .zip file digitally. Create a new Lambda function by using the Lambda console. Update the configuration of the new Lambda function to include the Amazon Resource Name (ARN) of the code signing configuration.

    • Giải thích: Việc ký số tệp .zip và cập nhật cấu hình chữ ký mã không giúp vượt qua giới hạn kích thước tệp. Đây là một tính năng liên quan đến bảo mật và không ảnh hưởng đến giới hạn kích thước tải lên.

📘 Tài liệu tham khảo

🧩 Kết luận

Hai giải pháp có thể được sử dụng để giải quyết vấn đề về kích thước lớn khi tải lên hàm AWS Lambda là tải lên thông qua Amazon S3 hoặc đóng gói dưới dạng hình ảnh Docker và tải lên Amazon ECR.

Câu 1268
A company runs an application on Amazon EC2 instances in an Auto Scaling group. The application experiences variable loads throughout each day.

The company needs to collect detailed metrics from the EC2 instances to right-size the instances. The company also wants to monitor custom application metrics to ensure the application is performing efficiently.

Which solution will meet these requirements?
  1. A Install the AWS X-Ray agent on the instances. Configure the agent to collect the EC2 instance metrics and the custom application metrics.
  2. B Install the Amazon CloudWatch agent on the instances. Configure the agent to collect the EC2 instance metrics and the custom application metrics.
  3. C Install the AWS SDK in the application’s cade. Update the application to use the AWS SDK to collect and publish the EC2 instance metrics and the custom application metrics.
  4. D Configure AWS CloudTrail to capture and analyze the EC2 instance metrics and the custom application metrics.
Xem giải thích

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

Câu hỏi xoay quanh một công ty đang chạy ứng dụng trên các instance Amazon EC2 thuộc Auto Scaling Group (ASG), với tải trọng biến đổi suốt ngày. 🔄
Yêu cầu chính:

  • Thu thập detailed metrics từ các EC2 instance để right-size (điều chỉnh kích thước instance phù hợp, tránh lãng phí tài nguyên).
  • Giám sát custom application metrics (metrics tùy chỉnh từ ứng dụng) để đảm bảo ứng dụng hoạt động hiệu quả. 📊

Mục tiêu là chọn giải pháp tích hợp tốt nhất với AWS, hỗ trợ thu thập metrics hệ thống chi tiết (CPU, memory, disk, network...) và metrics tùy chỉnh từ app, đồng thời dễ triển khai trên ASG. 🛠️
(Kiến thức cập nhật AWS 2026: CloudWatch hỗ trợ enhanced metrics cho EC2 với agent mới nhất, tích hợp seamless với ASG qua User Data hoặc SSM).

✅ Đáp án đúng và lý do lựa chọn

Đáp án đúng: Install the Amazon CloudWatch agent on the instances. Configure the agent to collect the EC2 instance metrics and the custom application metrics.

Lý do:
🛠️ Amazon CloudWatch Agent là công cụ chính thức của AWS để thu thập detailed metrics từ EC2 (bao gồm CPU utilization chi tiết, memory, disk I/O, network...) vượt trội hơn CloudWatch mặc định (chỉ basic metrics mỗi 5 phút).

  • Hỗ trợ custom metrics từ ứng dụng qua config file (JSON), thu thập từ logs, processes, hoặc scripts.
  • Tự động scale với ASG (cài qua User Data/Launch Template).
  • Giúp right-size qua CloudWatch Metrics Explorer hoặc Compute Optimizer (recommend instance types dựa trên metrics).
    📈 Hoàn hảo cho variable loads, tiết kiệm chi phí và đảm bảo performance. (Phiên bản mới nhất 2026: Agent hỗ trợ procstat cho processes cụ thể và embed logs/metrics cùng lúc).

📋 Phân tích tất cả các phương án

Dưới đây là phân tích chi tiết từng lựa chọn, với giữ nguyên văn bản gốc và giải thích tại sao đúng/sai bằng tiếng Việt:

  • ❌ SAI: Install the AWS X-Ray agent on the instances. Configure the agent to collect the EC2 instance metrics and the custom application metrics.
    Giải thích: AWS X-Ray chỉ dùng cho tracing (theo dõi request trace trong distributed apps), không thu thập EC2 instance metrics (như CPU/memory) hay custom metrics hệ thống. Nó tập trung vào latency/end-to-end traces, không phù hợp right-size instances. Sử dụng X-Ray agent sẽ không đáp ứng yêu cầu metrics chi tiết. 🚫

  • ✅ ĐÚNG: Install the Amazon CloudWatch agent on the instances. Configure the agent to collect the EC2 instance metrics and the custom application metrics.
    Giải thích: Như đã nêu ở trên, đây là giải pháp chuẩn AWS: Thu thập detailed EC2 metrics (high-resolution, sub-minute) và custom app metrics qua config linh hoạt. Tích hợp trực tiếp với CloudWatch dashboards/alarms, lý tưởng cho ASG. Hoạt động mượt mà trên Linux/Windows. ⭐

  • ❌ SAI: Install the AWS SDK in the application’s cade. Update the application to use the AWS SDK to publish the EC2 instance metrics and the custom application metrics.
    Giải thích: AWS SDK (như Boto3/Python) chỉ dùng để push custom metrics từ code app (qua put_metric_data), nhưng KHÔNG thu thập EC2 instance metrics tự động/detailed (phải code thủ công, phức tạp và dễ lỗi). Không hiệu quả cho right-size (thiếu system metrics chuẩn), tăng tải app và không scale tốt với ASG. Lỗi chính tả "cade" có lẽ là "code". 💻🚫

  • ❌ SAI: Configure AWS CloudTrail to capture and analyze the EC2 instance metrics and the custom application metrics.
    Giải thích: CloudTrail chỉ ghi API calls/audit logs (management events), không capture metrics performance như CPU/disk hay custom app metrics. Nó dùng cho security/compliance, không phải monitoring. Phân tích logs qua Athena/CloudWatch Logs không thay thế được metrics real-time. 🔒🚫

📘 Tài liệu tham khảo (AWS cập nhật 2026)

Hy vọng phân tích này giúp bạn ôn thi DevOps Professional hiệu quả! 🚀 Nếu cần thêm ví dụ config agent, hỏi nhé! 😊

Câu 1269
A developer is creating an application that uses an Amazon DynamoDB table. The developer needs to develop code that reads all records that were added to the table during the previous day, creates HTML reports, and pushes the reports into third-party storage. The item size varies from 1 KB to 4 KB, and the index structure is defined with the date. The developer needs to minimize the read capacity that the application requires from the DynamoDB table.

Which DynamoDB API operation should the developer use in the code to meet these requirements?
  1. A Query
  2. B Scan
  3. C BatchGetItem
  4. D GetItem
Xem giải thích

🧩 Giải thích chi tiết nội dung câu hỏi

Câu hỏi xoay quanh việc một lập trình viên đang phát triển ứng dụng sử dụng bảng Amazon DynamoDB. Yêu cầu chính là đọc tất cả các bản ghi (records/items) được thêm vào bảng trong ngày trước đó, sau đó tạo báo cáo HTML và đẩy lên kho lưu trữ bên thứ ba. Các đặc điểm quan trọng:

  • Kích thước item dao động từ 1 KB đến 4 KB.
  • Cấu trúc chỉ mục (index structure) được định nghĩa với trường date (có lẽ là Global Secondary Index - GSI hoặc Local Secondary Index - LSI sử dụng date làm partition key hoặc sort key).
  • Mục tiêu: Tối thiểu hóa read capacity units (RCU) mà ứng dụng tiêu thụ từ bảng DynamoDB.

Vấn đề cốt lõi là chọn DynamoDB API operation phù hợp để truy vấn hiệu quả các item theo ngày, tránh lãng phí RCU. DynamoDB tính phí dựa trên RCU (1 RCU = 4 KB đọc consistent hoặc 8 KB strongly consistent), nên cần operation hẹp (narrow) chỉ đọc dữ liệu cần thiết thay vì quét toàn bộ. 📘 Tài liệu tham khảo: AWS DynamoDB Developer Guide - Query vs Scan (cập nhật đến 2024-2026, không thay đổi cơ bản).

✅ Đáp án đúng: Query

Lý do lựa chọn:

  • Query là operation lý tưởng vì bảng có index với date (thường là GSI với date làm partition key và timestamp/sort key chi tiết hơn). Developer có thể Query trên index đó với điều kiện date = yesterday, chỉ đọc chính xác các item thêm ngày hôm trước.
  • Tiết kiệm RCU tối đa: Query chỉ scan partition cụ thể, hỗ trợ filter expression, pagination (LastEvaluatedKey), và eventual consistent reads (giảm 50% RCU).
  • Phù hợp quy mô: Item nhỏ (1-4KB), dễ batch nếu cần, và không yêu cầu biết primary key trước. 🛠️ Ví dụ code: Sử dụng query với IndexName và KeyConditionExpression: "#date = :yesterday".

📋 Phân tích tất cả các phương án

Dưới đây là phân tích chi tiết từng lựa chọn, giữ nguyên văn bản gốc bằng tiếng Anh:

  • Query ✅ Đúng:
    Như giải thích trên, Query tận dụng index date để truy vấn chính xác partition/sort key, giảm thiểu RCU bằng cách chỉ đọc dữ liệu khớp (eventual consistent mode). Hiệu quả cao cho pattern "read by date range". Không tốn kém như scan toàn table. 📘 Nguồn: DynamoDB Query API.

  • Scan ❌ Sai:
    Scan quét toàn bộ bảng (hoặc index), áp dụng filter cho ngày hôm trước. Rất tốn RCU vì đọc tất cả item (có thể hàng triệu), đặc biệt nếu table lớn. Không minimize RCU, vi phạm yêu cầu. Chỉ dùng khi không có index phù hợp. 🛠️ Nhược điểm: Filtered attributes vẫn tính RCU đầy đủ.

  • BatchGetItem ❌ Sai:
    BatchGetItem dùng để lấy nhiều item (tối đa 100/lần) bằng primary key đã biết trước. Ở đây, developer không biết keys cụ thể của items ngày hôm trước, nên không áp dụng. Nó tiết kiệm nếu biết keys, nhưng không hỗ trợ query theo date/index. RCU tính theo tổng size items lấy được.

  • GetItem ❌ Sai:
    GetItem chỉ lấy một item duy nhất bằng primary key chính xác. Không phù hợp đọc "tất cả records" theo ngày (cần lặp nhiều lần, tốn kém). Không dùng index date, không minimize RCU cho batch lớn. Chỉ cho single lookup.

🛠️ Lời khuyên thực hành (Best Practice)

  • Thiết kế GSI với date (YYYY-MM-DD) làm partition key để Query nhanh.
  • Sử dụng DynamoDB Streams + Lambda nếu cần real-time processing thay vì poll hàng ngày (tiết kiệm hơn nữa theo cập nhật 2025).
  • Test với AWS Console hoặc SDK để đo RCU thực tế. 🚀 Tài liệu bổ sung: DynamoDB Best Practices.
Câu 1270
A company is launching a feature that uses an HTTP API built with Amazon API Gateway and AWS Lambda. An API Gateway endpoint performs several independent tasks that run in a Lambda function. The independent tasks can take up to 10 minutes in total to finish running.

Users report that the endpoint sometimes returns an HTTP 604 status code. The Lambda function invocations are successful.

Which solution will stop the endpoint from returning the HTTP 504 status cade?
  1. A Increase the Lambda function’s timeout value.
  2. B Increase the reserved concurrency of the Lambda function.
  3. C Increase the memory that is available to the Lambda function.
  4. D Refactor the Lambda function to start an AWS Step Functions state machine.
Xem giải thích

🧩 Giải thích chi tiết nội dung câu hỏi

Câu hỏi xoay quanh một tình huống thực tế trong AWS: Một công ty triển khai tính năng sử dụng HTTP API được xây dựng bằng Amazon API Gateway kết hợp AWS Lambda. Endpoint của API Gateway thực hiện nhiều nhiệm vụ độc lập (independent tasks) bên trong một Lambda function, và tổng thời gian để hoàn thành các nhiệm vụ này có thể lên đến 10 phút.

Người dùng báo cáo rằng endpoint đôi khi trả về mã lỗi HTTP 504 (Gateway Timeout), mặc dù các invocation của Lambda function đều thành công.

🔍 Phân tích vấn đề cốt lõi:

  • HTTP 504 là lỗi Gateway Timeout từ API Gateway, xảy ra khi backend (Lambda) không phản hồi kịp thời trong giới hạn timeout của API Gateway.
  • Với REST API hoặc HTTP API sử dụng synchronous invocation (mặc định), API Gateway có timeout tối đa 29 giây (không thay đổi đến năm 2026 theo tài liệu AWS mới nhất).
  • Lambda function thành công (không lỗi), nghĩa là nó chạy hết 10 phút nhưng response không về kịp API Gateway → API Gateway tự động timeout và trả 504 cho client.
  • Vấn đề không phải ở Lambda (vì invocation OK), mà ở thời gian response quá dài so với giới hạn sync của API Gateway.

Mục tiêu: Tìm giải pháp dừng hoàn toàn lỗi 504 bằng cách xử lý các task dài hạn (long-running) mà không vi phạm timeout.

✅ Đáp án đúng: Refactor the Lambda function to start an AWS Step Functions state machine.

Lý do lựa chọn:

  • Lambda hiện tại chạy sync các task dài 10 phút → timeout 29s của API Gateway.
  • Giải pháp: Refactor Lambda để khởi động một AWS Step Functions state machine (async), sau đó trả response ngay lập tức cho API Gateway (trong <29s). Step Functions sẽ orchestrate các task độc lập bất đồng bộ (async), hỗ trợ execution lên đến 1 năm (execution timeout mặc định 7 ngày, có thể config cao hơn).
  • ✅ Kết quả: API Gateway nhận response nhanh → không 504. User có thể poll status qua Step Functions hoặc dùng callback pattern (như với SQS/SNS).
  • Đây là best practice cho long-running workflows trong AWS (theo Well-Architected Framework).

📋 Giải thích tất cả các phương án (đúng/sai)

  • ❌ [SAI] Increase the Lambda function’s timeout value.
    Giải thích sai: Timeout của Lambda tối đa là 15 phút (900 giây, không thay đổi đến 2026). Tuy nhiên, vấn đề là API Gateway timeout chỉ 29 giây cho sync integration. Tăng timeout Lambda không ảnh hưởng đến API Gateway → vẫn 504. Lambda invocation thành công chứng tỏ timeout Lambda chưa phải vấn đề.

  • ❌ [SAI] Increase the reserved concurrency of the Lambda function.
    Giải thích sai: Reserved concurrency kiểm soát số lượng execution đồng thời (mặc định không giới hạn, có thể set để tránh throttle). Vấn đề ở đây là timeout response, không phải concurrency/throttling (429 lỗi). Tăng concurrency không giảm thời gian chạy 10 phút → vẫn 504.

  • ❌ [SAI] Increase the memory that is available to the Lambda function.
    Giải thích sai: Tăng memory (lên đến 10,240 MB) sẽ tăng CPU/power, có thể làm task chạy nhanh hơn (giảm từ 10 phút xuống vài phút). Nhưng nếu vẫn >29 giây, API Gateway vẫn timeout → không giải quyết triệt để. Không phải root cause (Lambda success).

  • ✅ [ĐÚNG] Refactor the Lambda function to start an AWS Step Functions state machine.
    Giải thích đúng: Như trên, chuyển sang async orchestration với Step Functions (hỗ trợ task dài, retry, parallel execution). Lambda chỉ khởi động state machine và return ngay → API Gateway OK. Hỗ trợ Standard/Express Workflows cho scalability cao (đến 2026).

📘 Tài liệu tham khảo (AWS cập nhật mới nhất đến 2026):

🛠️ Lời khuyên DevOps: Sử dụng async patterns (Step Functions, SQS) cho task >30s để scale serverless hiệu quả! Nếu cần HTTP API polling, integrate với DynamoDB status tracking.