Ngân hàng đề — Microsoft Azure Developer
Tìm thấy 409 câu.
You must make several minor and non-breaking changes to one of the APIs. The API changes include the following requirements:
•Must not disrupt callers of the API.
•Enable roll back if you find issues.
•Documented to enable developers to understand what is new.
•Tested before publishing.
You need to update the API.
What should you do?
- A Configure and apply header-based versioning.
- B Create and publish a product.
- C Configure and apply a custom policy.
- D Add a new revision to the API.
- E Configure and apply query string-based versioning.
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 cập nhật một API được host trên Azure API Management (APIM) với các thay đổi nhỏ và không gây gián đoạn (minor and non-breaking changes). Các yêu cầu cụ thể bao gồm:
- Không làm gián đoạn (disrupt) các callers hiện tại đang sử dụng API.
- Hỗ trợ rollback nếu phát hiện vấn đề.
- Được documentation để developers hiểu những gì mới.
- Được test trước khi publish chính thức.
📘 Bối cảnh Azure APIM: APIM cho phép quản lý lifecycle của API qua các cơ chế như revisions (phiên bản nội bộ để test và deploy an toàn) và versions (phiên bản công khai cho consumers). Các thay đổi minor cần cơ chế không ảnh hưởng đến production ngay lập tức, phù hợp với revisions để test riêng biệt trước khi promote lên current.
(Kiến thức cập nhật đến 2026: Theo Azure APIM phiên bản mới nhất, revisions vẫn là best practice cho non-breaking changes, hỗ trợ testing, documentation tự động qua changelog, và rollback dễ dàng bằng cách set revision khác làm "current". Không có thay đổi lớn từ docs chính thức.)
✅ Đáp án đúng: Add a new revision to the API
Lý do lựa chọn 🛠️:
- Tạo revision mới (ví dụ: từ rev 1 thành rev 2) cho phép apply thay đổi mà không ảnh hưởng đến callers (họ vẫn dùng revision hiện tại làm "current").
- Rollback dễ dàng: Chỉ cần set revision cũ làm current lại.
- Documentation tự động: APIM ghi changelog chi tiết cho từng revision, giúp developers biết "what's new".
- Test trước publish: Revision mới có thể test riêng (qua subscription test hoặc staging), sau đó promote thành current khi ổn định.
- Hoàn hảo cho minor non-breaking changes, tránh downtime. Đây là recommended practice từ Microsoft.
📋 Giải thích tất cả các phương án (đúng/sai)
🧩 Danh sách phân tích từng lựa chọn (giữ nguyên văn bản gốc, giải thích bằng tiếng Việt):
-
❌ [SAI] Configure and apply header-based versioning.
Lý do sai ❌: Header-based versioning dùng để tạo versions công khai (như Accept: v2), phù hợp cho breaking changes lớn hoặc major releases, không dành cho minor non-breaking. Nó có thể disrupt callers nếu không migrate đúng, thiếu rollback đơn giản, và không tự động document/test như revisions. Phù hợp hơn cho API public với nhiều versions song song. -
❌ [SAI] Create and publish a product.
Lý do sai ❌: Product dùng để group các APIs và assign cho subscribers (như subscription keys), không liên quan đến cập nhật nội dung API. Nó không hỗ trợ test/rollback thay đổi code, không document changes, và có thể disrupt nếu publish product mới mà không manage đúng. -
❌ [SAI] Configure and apply a custom policy.
Lý do sai ❌: Custom policy chỉ để thêm logic runtime (như auth, rate limiting) cho requests/responses, không phải cập nhật toàn bộ API (như thêm endpoints mới). Không hỗ trợ test toàn diện, rollback revision, hay document structural changes. -
✅ [ĐÚNG] Add a new revision to the API.
(Đã giải thích chi tiết ở phần trên – hoàn hảo khớp tất cả yêu cầu! 🎯) -
❌ [SAI] Configure and apply query string-based versioning.
Lý do sai ❌: Tương tự header-based, query string versioning (?version=2) dành cho public versions, dễ expose và disrupt nếu không handle migration. Không hỗ trợ rollback nhanh, test riêng biệt, hay auto-documentation như revisions. Ít an toàn hơn cho minor changes nội bộ.
📚 Tài liệu tham khảo (cập nhật 2026)
- Azure API Management Revisions – Hướng dẫn chính thức về revisions, changelog, testing & promotion.
- API Management Revision vs Version – So sánh rõ ràng revisions (internal/non-breaking) vs versions (external/breaking).
- Best Practices for API Lifecycle – Microsoft khuyến nghị revisions cho minor updates.
Hy vọng phân tích này giúp bạn nắm vững! 🚀 Nếu cần demo code hoặc lab Azure, cứ hỏi nhé! 😊
After you answer a question in this section, you will NOT be able to return to it. As a result, these questions will not appear in the review screen.
You have an Azure App Service web app named WebApp1 and an Azure Functions app named Function1. WebApp1 is associated with an Application Insights instance named appinsights1.
You configure a web test and a corresponding alert for WebApp1 in appinsights1. Each alert triggers a delivery of email to your mailbox.
You need to ensure that each alert also triggers execution of Function1.
Solution: Configure an Azure Monitor Insights workbook.
Does the solution meet the goal?
- A Yes
- B No
Xem giải thích
🧩 Phân tích chi tiết nội dung câu hỏi
Câu hỏi này thuộc dạng case study (phân tích tình huống) trong kỳ thi chứng chỉ Azure, nơi có một kịch bản cố định và nhiều giải pháp khác nhau được đề xuất. Kịch bản cụ thể:
- Bạn có một Azure App Service web app tên WebApp1 và một Azure Functions app tên Function1.
- WebApp1 được liên kết với Application Insights instance tên appinsights1 (Application Insights nay là một phần của Azure Monitor).
- Bạn đã cấu hình web test (kiểm tra web availability) và alert tương ứng cho WebApp1 trong appinsights1. Mỗi alert hiện tại chỉ gửi email đến hộp thư của bạn.
- Mục tiêu (goal): Đảm bảo mỗi alert không chỉ gửi email mà còn kích hoạt thực thi Function1.
Giải pháp đề xuất (Solution): Configure an Azure Monitor Insights workbook (Cấu hình một workbook trong Azure Monitor Insights).
Câu hỏi: Giải pháp này có đạt được mục tiêu không? (Does the solution meet the goal?)
📘 Lưu ý từ câu hỏi gốc: Đây là phần của series câu hỏi cùng kịch bản, không thể quay lại sau khi trả lời, và có thể có nhiều hoặc không có giải pháp đúng.
✅ Đáp án đúng: No
Lý do lựa chọn:
Giải pháp không đạt mục tiêu vì Azure Monitor Insights workbook chỉ là công cụ hiển thị và trực quan hóa dữ liệu (như dashboard tùy chỉnh, biểu đồ, bảng dữ liệu từ logs/metrics), không hỗ trợ kích hoạt action groups hoặc thực thi Azure Functions từ alerts. Để trigger Function1 từ alert, cần sử dụng Action Groups trong Azure Monitor, nơi có thể thêm action kiểu Azure Function (HTTP trigger hoặc webhook). Workbook chỉ dùng cho phân tích thủ công, không tự động hóa trigger. (Cập nhật đến 2026: Tính năng workbook trong Azure Monitor vẫn giữ nguyên vai trò visualize, không thay đổi core functionality cho alerting - theo Azure Monitor docs phiên bản mới nhất).
🛠️ Cách đúng để đạt goal:
- Vào Azure Monitor > Alerts > Action groups (liên kết với appinsights1).
- Tạo hoặc chỉnh sửa Action Group cho alert rule, thêm action Azure Function và chọn Function1 (hỗ trợ đến năm 2026 với các tính năng như intelligent alerting và near-realtime metrics).
📋 Giải thích tất cả các phương án
-
Yes ❌ (SAI):
Phương án này sai vì workbook không liên quan đến việc trigger functions. Workbook chỉ giúp tạo báo cáo tùy chỉnh từ dữ liệu Application Insights (như metrics, logs), nhưng không có cơ chế tự động thực thi code khi alert fire. Nếu chọn Yes, bạn sẽ hiểu lầm vai trò của workbook - nó không thay thế Action Groups hay Logic Apps cho automation. -
No ✅ (ĐÚNG):
Phương án này đúng vì giải pháp đề xuất không đáp ứng yêu cầu. Cụ thể, Azure Monitor Insights workbook (trước đây gọi là workbooks trong Application Insights) chỉ dùng cho exploration và sharing insights (xem dữ liệu, KQL queries), không hỗ trợ outbound actions như invoke Function1. Để trigger Function1, phải dùng alert rules với Action Groups chứa action "Azure Function".
📚 Tài liệu tham khảo (Cập nhật mới nhất đến 2026)
- Azure Monitor Action Groups - Trigger Azure Functions 🛠️ (Hướng dẫn chính thức tạo action invoke Function từ alerts).
- Azure Monitor Workbooks overview 📘 (Xác nhận workbook chỉ cho visualization, không trigger).
- Application Insights Alerts best practices (Phiên bản 2026 hỗ trợ smart detection và multi-resource alerts).
Hy vọng phân tích này giúp bạn ôn thi hiệu quả! 🚀 Nếu cần thêm case study tương tự, hãy hỏi nhé!
The microservices must be deployed to the same virtual network and write logs to the same Log Analytics workspace.
You need to deploy the microservices.
What should you do?
- A Enable single revision mode.
- B Use a separate environment for each container.
- C Use a private container registry image and single image for all containers.
- D Use a single environment for all containers.
- E Enable multiple revision mode.
Xem giải thích
🧩 Phân tích chi tiết nội dung câu hỏi
Câu hỏi này thuộc chủ đề Azure Container Apps (một dịch vụ của Microsoft Azure để triển khai và quản lý các container không cần Kubernetes). Bạn đang phát triển nhiều microservices chạy trên Azure Container Apps, với lưu lượng truy cập HTTP từ bên ngoài đã được kích hoạt (external HTTP ingress traffic).
Yêu cầu chính:
- Các microservices phải được triển khai trong cùng một virtual network (VNet) để đảm bảo kết nối mạng nội bộ an toàn.
- Chúng phải ghi logs vào cùng một Log Analytics workspace để tập trung hóa việc giám sát và phân tích logs.
- Nhiệm vụ: Triển khai các microservices sao cho đáp ứng hai yêu cầu trên.
🛠️ Bối cảnh kỹ thuật (dựa trên tài liệu Azure mới nhất đến 2026):
- Azure Container Apps sử dụng khái niệm Environment (môi trường) làm đơn vị logic chính. Mỗi Environment có thể chia sẻ:
- Virtual Network (VNet): Để các apps kết nối nội bộ.
- Log Analytics workspace: Để thu thập logs thống nhất.
- Nếu dùng nhiều Environment riêng biệt, chúng sẽ không chia sẻ VNet/logs trừ khi cấu hình thủ công phức tạp (không khuyến khích).
- Các tính năng như revision mode (single/multiple) liên quan đến việc quản lý phiên bản deployment, không ảnh hưởng trực tiếp đến sharing VNet/logs.
📘 Tài liệu tham khảo:
- Azure Container Apps Environment (cập nhật 2024-2026).
- Networking in Azure Container Apps – Xác nhận Environment chia sẻ VNet.
- Logging in Azure Container Apps – Logs mặc định vào workspace của Environment.
✅ Đáp án đúng và lý do lựa chọn
Đáp án đúng: Use a single environment for all containers.
Lý do 🧩:
- Azure Container Apps yêu cầu tất cả các container apps (microservices) phải thuộc cùng một Environment để tự động chia sẻ VNet (cho kết nối mạng nội bộ) và Log Analytics workspace (cho logs thống nhất).
- Đây là cách triển khai chuẩn, đơn giản nhất, không cần cấu hình thêm. Nếu dùng nhiều Environment, bạn phải tùy chỉnh VNet peering hoặc logs forwarding – phức tạp và không phải best practice.
📋 Giải thích tất cả các phương án (đúng/sai)
-
❌ Enable single revision mode.
Sai vì: Single revision mode chỉ giới hạn deployment chỉ giữ một phiên bản (revision) hoạt động tại một thời điểm, dùng để tiết kiệm tài nguyên hoặc đơn giản hóa quản lý phiên bản. Nó không liên quan đến việc chia sẻ VNet hay Log Analytics workspace giữa các microservices. (Revision mode là tính năng per-app, không ảnh hưởng Environment-level sharing). -
❌ Use a separate environment for each container.
Sai vì: Mỗi Environment riêng biệt sẽ có VNet và Log Analytics workspace riêng (hoặc cần cấu hình thủ công để share), dẫn đến không đáp ứng yêu cầu chia sẻ. Điều này làm phức tạp hóa networking (cần VNet peering) và logs (cần forwarding rules), trái ngược với best practice của Azure Container Apps. -
❌ Use a private container registry image and single image for all containers.
Sai vì: Sử dụng private registry (như Azure Container Registry) và một image chung chỉ giúp quản lý image an toàn/reuse, nhưng không giải quyết vấn đề chia sẻ VNet/logs. Các microservices vẫn cần cùng Environment để share infrastructure. -
✅ Use a single environment for all containers.
Đúng vì: Như đã giải thích ở trên, đây là cách duy nhất tự động đảm bảo tất cả microservices share cùng VNet (cho ingress/egress nội bộ) và cùng Log Analytics workspace (console logs, DCE logs). Hỗ trợ scaling, monitoring thống nhất. (Khuyến nghị chính thức từ docs Azure). -
❌ Enable multiple revision mode.
Sai vì: Multiple revision mode cho phép giữ nhiều phiên bản deployment song song (blue-green deployment), hữu ích cho traffic splitting/rollback. Nhưng nó không ảnh hưởng đến sharing VNet/logs giữa các apps khác nhau – vẫn cần cùng Environment.
🛡️ Lưu ý cuối: Cách tiếp cận đúng giúp triển khai nhanh, chi phí thấp và tuân thủ nguyên tắc "Environment per workload/environment". Nếu cần tùy chỉnh VNet nâng cao, dùng "external ingress with custom VNet integration" trong cùng Environment!
After you answer a question in this section, you will NOT be able to return to it. As a result, these questions will not appear in the review screen.
You have an Azure App Service web app named WebApp1 and an Azure Functions app named Function1. WebApp1 is associated with an Application Insights instance named appinsights1.
You configure a web test and a corresponding alert for WebApp1 in appinsights1. Each alert triggers a delivery of email to your mailbox.
You need to ensure that each alert also triggers execution of Function1.
Solution: Configure an Application Insights smart detection.
Does the solution meet the goal?
- A Yes
- B No
Xem giải thích
🧩 Phân tích chi tiết câu hỏi trắc nghiệm
📘 Nội dung câu hỏi được giải thích rõ ràng:
Câu hỏi thuộc dạng case study (series of questions với cùng scenario), nơi bạn không thể quay lại sau khi trả lời. Scenario mô tả:
- Bạn có một Azure App Service web app tên WebApp1 và một Azure Functions app tên Function1.
- WebApp1 được liên kết với Application Insights instance tên appinsights1.
- Bạn đã cấu hình một web test (kiểm tra availability/uptime của web app) và một alert tương ứng trong appinsights1. Mỗi alert hiện tại sẽ gửi email đến mailbox của bạn.
- Mục tiêu (goal): Đảm bảo rằng mỗi alert không chỉ gửi email mà còn kích hoạt (trigger) execution của Function1.
- Giải pháp đề xuất (Solution): Cấu hình Application Insights smart detection.
- Câu hỏi: Giải pháp này có đạt được mục tiêu không? (Does the solution meet the goal?)
🛠️ Tình huống thực tế: Đây là yêu cầu tích hợp alerting từ Application Insights với Azure Functions. Web test và alert đã có sẵn (gửi email), giờ cần mở rộng để trigger Function1 – thường dùng Action Groups với webhook/HTTP trigger cho Functions.
✅ Đáp án đúng: No
Lý do lựa chọn (bằng kiến thức Azure cập nhật đến 2026):
Giải pháp "Configure an Application Insights smart detection" KHÔNG đạt mục tiêu.
- Smart Detection là tính năng tự động phát hiện anomalies (như failures, performance issues) trong Application Insights, chủ yếu gửi email notifications hoặc tích hợp cơ bản với ITSM tools. Nó không hỗ trợ trực tiếp trigger Azure Functions qua webhook hoặc HTTP.
- Để trigger Function1 từ alert, cần sử dụng Action Groups (trong Azure Monitor) gắn với alert rule: Chọn action type là Webhook hoặc Logic App để gọi HTTP endpoint của Function1 (HTTP trigger). Smart Detection chỉ là detection engine, không thay thế được alerting pipeline đầy đủ.
- Phiên bản Azure 2026 vẫn giữ nguyên: Smart Detection (nay tích hợp AI anomaly detection) chỉ hỗ trợ email/SMS/ITSM, không native integration với Functions cho custom execution.
🔍 Giải thích tất cả các phương án (giữ nguyên văn bản gốc bằng tiếng Anh):
-
Yes ❌ SAI
Lý do sai: Phương án này cho rằng Smart Detection có thể trigger Function1, nhưng thực tế không thể. Smart Detection chỉ detect và notify (email-based), không có cơ chế execution code như Functions. Sử dụng nó sẽ không mở rộng alert hiện tại (web test alert) để gọi Function1, dẫn đến goal không đạt. -
No ✅ ĐÚNG
Lý do đúng: Như giải thích trên, giải pháp không meet goal vì thiếu integration thực thụ với Functions. Giải pháp đúng phải là tạo Alert Rule trong Azure Monitor > Action Group > Add action "Webhook" trỏ đến Function1 URL (HTTP trigger). Web test alert đã có thể attach Action Group dễ dàng.
📚 Tài liệu tham khảo (cập nhật Azure 2026):
- Azure Monitor Action Groups ✅ (Hướng dẫn attach Functions via Webhook).
- Application Insights Smart Detection ❌ (Chỉ email/anomaly, không Functions).
- Alerting in Application Insights 🛠️ (Chi tiết web test + Action Groups).
- Azure Functions HTTP triggers: Docs.
Hy vọng phân tích này giúp bạn ôn thi Azure hiệu quả! 🚀 Nếu cần giải pháp thay thế chi tiết, hãy hỏi thêm.
The company requires that the microservices must scale based on an Azure Event Hub trigger.
You need to scale the microservices by using a custom scaling rule.
Which two Kubernetes Event-driven Autoscaling (KEDA) trigger fields should you use? Each correct answer presents part of the solution.
NOTE: Each correct selection is worth one point.
- A metadata
- B type
- C authenticationRef
- D name
- E metricType
Xem giải thích
🧩 Phân tích chi tiết câu hỏi
📘 Nội dung câu hỏi:
Câu hỏi thuộc chủ đề phát triển microservices trên Azure Container Apps (một dịch vụ Kubernetes serverless của Azure). Bạn đang triển khai các microservices chạy trên nền tảng này, với TCP ingress traffic từ internet đã được kích hoạt. Yêu cầu chính là scale microservices dựa trên trigger từ Azure Event Hub (dịch vụ xử lý sự kiện streaming lớn của Azure). Để thực hiện, bạn cần sử dụng custom scaling rule thông qua Kubernetes Event-driven Autoscaling (KEDA) – một công cụ mở rộng autoscaling dựa trên sự kiện cho Kubernetes.
Cụ thể, câu hỏi yêu cầu xác định hai trường (fields) trong KEDA trigger cần sử dụng để scale dựa trên Azure Event Hub. Đây là câu hỏi multi-select (mỗi lựa chọn đúng chiếm 1 điểm), kiểm tra kiến thức về cấu trúc YAML của KEDA ScaledObject/ScaleTrigger.
🛠️ Bối cảnh kỹ thuật (cập nhật đến 2026):
Azure Container Apps hỗ trợ KEDA phiên bản mới nhất (v2.14+ tích hợp sẵn), cho phép scale từ 0 instance dựa trên metrics từ Event Hub như số lượng event pending. Trigger Azure Event Hub yêu cầu cấu hình type (loại trigger) và metadata (các thông số kết nối cụ thể). Không cần HPA truyền thống mà dùng KEDA để scale event-driven.
✅ Đáp án đúng và lý do lựa chọn
Hai trường đúng là: metadata và type.
Lý do:
Trong cấu trúc ScaleTrigger của KEDA (YAML spec), mọi trigger bắt buộc phải có:
type: Xác định loại trigger (ví dụ: "azure-eventhub" cho Event Hub). Đây là field đầu tiên và quan trọng nhất để KEDA biết nguồn sự kiện.metadata: Chứa các thông số chi tiết như connection string, consumer group, partition, lag threshold (ví dụ: eventCount để scale dựa trên số event backlog). Không có hai field này, trigger sẽ không hoạt động.
Điều này phù hợp với yêu cầu "scale by using a custom scaling rule" trên Azure Container Apps, nơi KEDA được enable mặc định cho Event Hub scaling (tính năng GA từ 2023, ổn định đến 2026).
🔍 Giải thích tất cả các phương án
Dưới đây là phân tích từng lựa chọn một cách chi tiết. Tôi giữ nguyên nội dung văn bản gốc bằng tiếng Anh, chỉ giải thích bằng tiếng Việt với lý do đúng/sai dựa trên spec KEDA v2.14+ và Azure Container Apps docs (2026).
-
✅
metadata(Đúng):
Đây là field bắt buộc trong mọi KEDA trigger. Nó chứa map các thông số cụ thể cho Azure Event Hub nhưconnectionFromEnv: "EVENTHUB_CONNECTIONSTRING",consumerGroup: "$Default",partition: "-1",lagThreshold: "100". Không có metadata, KEDA không thể kết nối hoặc đo lường metrics từ Event Hub để scale. -
✅
type(Đúng):
Field bắt buộc đầu tiên, định nghĩa loại trigger (ví dụ:type: azure-eventhub). KEDA sử dụng nó để load scaler tương ứng. Với Event Hub, phải dùng chính xác "azure-eventhub" để kích hoạt scaling dựa trên event throughput hoặc backlog. -
❌
authenticationRef(Sai):
Đây là field tùy chọn (không bắt buộc), dùng để reference external authentication (như Azure Managed Identity hoặc Secret) thay vì hardcode connection string trong metadata. Không cần thiết cho scaling rule cơ bản với Event Hub; chỉ dùng khi cần bảo mật cao hơn. -
❌
name(Sai):
Không tồn tại fieldnametrong ScaleTrigger của KEDA.namechỉ dùng ở mức ScaledObject (tên toàn bộ object), không phải trong trigger. Sử dụng sẽ gây lỗi YAML validation. -
❌
metricType(Sai):
Field này không thuộc cấu trúc KEDA trigger cho Event Hub. Nó có thể xuất hiện ở một số scaler cũ (như Prometheus) hoặc HPA native, nhưng KEDA Event Hub dùng metadata để định nghĩa metric (như Average hoặc Total event lag), không cầnmetricTyperiêng.
📚 Tài liệu tham khảo
- Azure Docs (2026): Azure Container Apps Scaling & KEDA on Azure Container Apps.
- KEDA Official Docs: Azure Event Hubs Scaler (spec trigger với type & metadata bắt buộc).
- Ví dụ YAML mẫu:
triggers: - type: azure-eventhub # ✅ Bắt buộc metadata: # ✅ Bắt buộc connectionFromEnv: EVENTHUB_CONNECTIONSTRING consumerGroup: $Default
💡 Lưu ý: Cấu hình này scale từ 0-100+ replicas dựa trên event lag, tối ưu cho microservices event-driven. Nếu deploy, dùng Azure CLI: az containerapp update --scale-rule-named=eventhub --scale-rule-type=Custom --scale-rule-metadata=....
You plan to use the Azure Cosmos DB .NET SDK v3 API for NoSQL to upload the following files:
You receive the following error message when uploading the files: “413 Entity too large”.
You need to determine which files you can upload to the Azure Cosmos DB for NoSQL database.
Which files can you upload?
- A File1, File2, File3, File4, and File5
- B File1 and File2 only
- C File1, File2, and File3 only
- D File1, File2, File3, and File4 only
- E File1 only
Xem giải thích
🧩 Phân tích chi tiết nội dung câu hỏi
Câu hỏi này thuộc chứng chỉ AZ-204 (Developing Solutions for Microsoft Azure), tập trung vào Azure Cosmos DB for NoSQL. Tình huống: Bạn đã tạo một cơ sở dữ liệu Azure Cosmos DB sử dụng API NoSQL, và dự định sử dụng Azure Cosmos DB .NET SDK v3 để tải lên các file từ bảng dữ liệu (hình ảnh đính kèm).
📊 Nội dung hình ảnh (bảng File Name và File Size):
Hình ảnh hiển thị một bảng đơn giản với 5 file có kích thước như sau:
- File1: 1MB
- File2: 2MB
- File3: 3MB
- File4: 4MB
- File5: 5MB
Khi tải lên, bạn gặp lỗi “413 Entity too large” (HTTP 413: Payload quá lớn). Nhiệm vụ là xác định file nào có thể tải lên thành công vào Cosmos DB NoSQL.
🛠️ Nguyên nhân lỗi: Lỗi này xảy ra vì Azure Cosmos DB NoSQL có giới hạn kích thước document/item tối đa là 2MB (chính xác 2,097,152 bytes) cho mỗi request. Mỗi file ở đây được coi là một document riêng lẻ khi upload qua SDK. Nếu file vượt quá 2MB, request sẽ bị từ chối ngay lập tức.
Kiến thức cập nhật đến 2026: Giới hạn này không thay đổi trong các phiên bản mới nhất của Azure Cosmos DB (vẫn giữ 2MB cho NoSQL API, không tính metadata). SDK v3 tuân thủ nghiêm ngặt giới hạn này.
📘 Tài liệu tham khảo:
- Azure Cosmos DB limits and quotas (Item size: Maximum 2 MB).
- Troubleshoot request throttling and 413 errors.
- .NET SDK v3 documentation.
✅ Đáp án đúng và lý do lựa chọn
Đáp án đúng: File1 and File2 only
Lý do:
- File1 (1MB) và File2 (2MB) ≤ 2MB, nên có thể upload thành công qua .NET SDK v3 mà không gặp lỗi 413.
- File3 (3MB), File4 (4MB), File5 (5MB) > 2MB, dẫn đến lỗi "Entity too large".
Đây là giới hạn cứng của Cosmos DB NoSQL, áp dụng cho mọi request (bao gồm CreateItemAsync). Giải pháp thay thế: Chia nhỏ document hoặc dùng Blob Storage kết hợp Cosmos DB.
📋 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. Nội dung phương án giữ nguyên bản tiếng Anh, chỉ giải thích bằng tiếng Việt:
-
❌ [SAI] File1, File2, File3, File4, and File5
Sai vì bao gồm tất cả file, trong đó File3 (3MB), File4 (4MB), File5 (5MB) vượt quá giới hạn 2MB của Cosmos DB NoSQL. Upload sẽ thất bại với lỗi 413 cho các file lớn. -
✅ [ĐÚNG] File1 and File2 only
Đúng vì chỉ File1 (1MB) và File2 (2MB) nằm trong giới hạn 2MB. Các file còn lại quá lớn, khớp chính xác với quy định của Azure Cosmos DB (tính đến 2026). -
❌ [SAI] File1, File2, and File3 only
Sai vì File3 (3MB) > 2MB, sẽ gây lỗi 413 ngay lập tức. Không thể upload dù các file nhỏ hơn ok. -
❌ [SAI] File1, File2, File3, and File4 only
Sai vì cả File3 (3MB) và File4 (4MB) đều vượt giới hạn 2MB. Chỉ 2 file đầu mới hợp lệ. -
❌ [SAI] File1 only
Sai vì bỏ sót File2 (2MB), vốn đúng bằng giới hạn tối đa và có thể upload thành công (Cosmos DB hỗ trợ exactly 2MB, trừ overhead nhỏ từ metadata).
🧠 Lưu ý thêm: Trong thực tế, kích thước thực tế có thể hơi nhỏ hơn 2MB do overhead (indexing, partitioning). Luôn kiểm tra qua SDK logs để debug! Nếu cần upload file lớn, dùng Azure Blob Storage thay thế. 😊
After you answer a question in this section, you will NOT be able to return to it. As a result, these questions will not appear in the review screen.
You have an Azure App Service web app named WebApp1 and an Azure Functions app named Function1. WebApp1 is associated with an Application Insights instance named appinsights1.
You configure a web test and a corresponding alert for WebApp1 in appinsights1. Each alert triggers a delivery of email to your mailbox.
You need to ensure that each alert also triggers execution of Function1.
Solution: Configure an Azure Monitor action group.
Does the solution meet the goal?
- A Yes
- B No
Xem giải thích
🧩 Phân tích chi tiết nội dung câu hỏi
Câu hỏi thuộc dạng series questions trong kỳ thi chứng chỉ Azure (như AZ-104 hoặc AZ-204), nơi mỗi câu trình bày một tình huống giống nhau nhưng giải pháp khác nhau. Người dùng KHÔNG THỂ quay lại câu hỏi sau khi trả lời, và không xuất hiện trong màn hình review.
Tình huống cụ thể 📋:
- Bạn có một Azure App Service web app tên WebApp1 và một Azure Functions app tên Function1.
- WebApp1 được liên kết với Application Insights instance tên appinsights1.
- Đã cấu hình web test (kiểm tra availability/uptime của web app) và alert tương ứng trong appinsights1. Mỗi alert hiện tại chỉ gửi email đến hộp thư của bạn.
- Mục tiêu (goal): Đảm bảo mỗi alert không chỉ gửi email mà còn kích hoạt thực thi (execution) của Function1.
Giải pháp đề xuất 🛠️: Configure an Azure Monitor action group (Cấu hình một action group trong Azure Monitor).
Câu hỏi chính: Giải pháp này có đạt được mục tiêu không? (Does the solution meet the goal?)
(Lưu ý: Đây là kiến thức Azure cập nhật đến năm 2026, dựa trên Azure Monitor v2 alerts và Application Insights integration mới nhất. Application Insights alerts nay fully integrated vào Azure Monitor, hỗ trợ action groups linh hoạt hơn bao gồm HTTP actions và serverless invocations.)
✅ Đáp án đúng và lý do lựa chọn
Đáp án đúng: Yes
Lý do 🎯:
Giải pháp hoàn toàn đạt mục tiêu vì Azure Monitor action groups cho phép gắn nhiều hành động (actions) vào một alert rule từ Application Insights. Cụ thể:
- Action group có thể bao gồm email notification (đã có) + Azure Function invocation (action type "Azure Function").
- Khi alert từ web test fires (ví dụ: web app down), action group sẽ tự động trigger Function1 mà không cần code thêm.
- Đây là cách best practice và native của Azure, hỗ trợ scalability cao, không phụ thuộc webhook hay Logic Apps phức tạp.
📝 Giải thích tất cả các phương án trả lời
-
Yes ✅:
Đúng vì Azure Monitor action groups (từ năm 2019 trở đi, cập nhật 2025-2026 vẫn giữ nguyên) hỗ trợ trực tiếp "Azure Function" làm action type. Bạn chỉ cần:- Tạo action group mới hoặc edit existing.
- Thêm action "Azure Function" → chọn subscription, function app (Function1), và method (GET/POST).
- Gắn action group vào alert rule của web test trong appinsights1.
Kết quả: Alert fires → gửi email + chạy Function1 ngay lập tức. Hoàn hảo cho mục tiêu!
-
No ❌:
Sai vì không phản ánh đúng khả năng của Azure Monitor. Nếu chọn No, bạn đang bỏ qua integration mạnh mẽ giữa Application Insights alerts và action groups. Các lý do sai thường gặp:- Nghĩ rằng action groups chỉ hỗ trợ email/SMS (sai, hỗ trợ 10+ action types).
- Nhầm lẫn với legacy alerts (classic alerts đã deprecated từ 2023, nay chỉ dùng unified Azure Monitor).
Không có hạn chế nào ngăn cản trigger Functions từ action groups trong phiên bản mới nhất.
📘 Tài liệu tham khảo chính thức (Microsoft Learn, cập nhật 2026)
- Action groups overview: https://learn.microsoft.com/en-us/azure/azure-monitor/alerts/action-groups 🛠️ (Chi tiết Azure Function action).
- Application Insights alerts với action groups: https://learn.microsoft.com/en-us/azure/azure-monitor/app/alerts 📊.
- Web tests & availability alerts: https://learn.microsoft.com/en-us/azure/azure-monitor/app/monitor-web-app-availability 🔍.
- Azure Functions integration: https://learn.microsoft.com/en-us/azure/azure-functions/functions-monitor-log-analytics (Phần trigger từ Monitor).
Hy vọng phân tích này giúp bạn ôn thi hiệu quả! 🚀 Nếu cần ví dụ ARM template hoặc demo, hãy hỏi thêm nhé!
App testing and incorrect code have frequently corrupted data. Development of the app must allow data to be restored to a previous day for testing.
You need to configure the storage account to support point-in-time restore.
What should you do?
- A Enable the change feed on the storage account to begin capturing and recording changes.
- B Configure object replication and specify replication rules.
- C Create a snapshot of the blob in the hot tier.
- D Configure an immutability policy that is scoped to a blob version.
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ả tình huống phát triển một ứng dụng lưu trữ dữ liệu phân tán toàn cầu trong nhiều Azure Blob Storage containers. Mỗi container chứa nhiều blobs, và mỗi instance của app sẽ lưu dữ liệu vào đó. Bạn đã enable versioning (phiên bản hóa) và soft delete (xóa mềm) cho blobs để bảo vệ dữ liệu.
📍 Vấn đề chính: Trong quá trình testing và code lỗi, dữ liệu thường bị corrupt (hỏng). Yêu cầu phát triển app phải hỗ trợ khôi phục dữ liệu về một ngày trước (point-in-time restore - PITR) để testing.
🎯 Nhiệm vụ: Cấu hình storage account để hỗ trợ point-in-time restore. Đây là tính năng Azure Blob Storage (cập nhật mới nhất đến 2026) cho phép khôi phục dữ liệu blobs/container/account về trạng thái tại một thời điểm cụ thể trong quá khứ (lên đến 360 ngày), dựa trên change feed và versioning/soft delete.
✅ Đáp án đúng và lý do lựa chọn
Đáp án đúng: Enable the change feed on the storage account to begin capturing and recording changes.
🛠️ Lý do chi tiết:
- Blob Change Feed là dịch vụ capture và ghi lại tất cả thay đổi (create, update, delete, versioning) trên blobs theo thứ tự thời gian trong storage account.
- Khi enable change feed (tính năng GA từ 2021, cập nhật đầy đủ PITR đến 2024-2026), nó lưu trữ dữ liệu thay đổi dưới dạng JSON events, cho phép replay changes để khôi phục point-in-time.
- Kết hợp với versioning/soft delete (đã enable), PITR hỗ trợ khôi phục toàn account/container/blob về thời điểm bất kỳ trong retention period (mặc định 7-360 ngày).
- Đây là cách chính thức của Microsoft để implement PITR cho Azure Blob Storage, phù hợp với dữ liệu globally distributed và testing corrupt data.
📋 Giải thích tất cả các phương án (đúng và sai)
Dưới đây là phân tích từng lựa chọn, giữ nguyên văn bản gốc bằng tiếng Anh. Phần giải thích sử dụng kiến thức Azure Blob Storage mới nhất (phiên bản 2024-2026).
-
Enable the change feed on the storage account to begin capturing and recording changes.
✅ Đúng: Như đã giải thích ở trên, change feed là nền tảng cho PITR, capture sequential changes để replay và restore dữ liệu về ngày trước. Không có change feed, PITR không hoạt động. -
Configure object replication and specify replication rules.
❌ Sai: Object replication (Azure Blob replication) chỉ dùng để sao chép dữ liệu giữa các storage accounts/regions theo quy tắc (rules), hỗ trợ disaster recovery nhưng không hỗ trợ PITR (không khôi phục về thời điểm cụ thể). Nó replicate changes real-time/one-way/bi-directional, không replay lịch sử để restore ngày cũ. -
Create a snapshot of the blob in the hot tier.
❌ Sai: Blob snapshot chỉ tạo point-in-time copy cho một blob cụ thể (read-only), lưu ở hot tier để tiết kiệm chi phí. Nó không áp dụng cho toàn account/containers, không tự động cho globally distributed data, và phải tạo thủ công mỗi lần (không phù hợp testing frequent corrupt). -
Configure an immutability policy that is scoped to a blob version.
❌ Sai: Immutability policy (WORM - Write Once Read Many) dùng để ngăn chặn xóa/sửa blobs trong thời gian giữ (retention), scoped đến version/container/account. Nó bảo vệ dữ liệu khỏi thay đổi nhưng không hỗ trợ restore PITR (không replay changes để khôi phục về ngày trước).
📘 Tài liệu tham khảo (cập nhật mới nhất đến 2026)
- Azure Blob Storage Point-in-Time Restore – Hướng dẫn chính thức về PITR với change feed.
- Blob Change Feed – Chi tiết capture changes cho restore.
- Azure Blob Features Matrix – So sánh versioning, soft delete, snapshots, replication, immutability (cập nhật 2024).
- Microsoft Ignite 2024 announcements: Xác nhận PITR hỗ trợ lên 360 ngày với change feed cho hierarchical namespace.
Hy vọng phân tích này giúp bạn hiểu rõ! 🚀 Nếu cần thêm ví dụ code Azure SDK, hãy cho tôi biết.
You need to configure a Maxmemory policy to increase the amount of cache available for read operations.
How should you configure the Maxmemory policy?
- A Decrease the value of maxmemory-reserved.
- B Increase the value of maxmemory-reserved.
- C Set the Maxmemory policy to noeviction.
- D Set the Maxmemory policy to volatile-lru.
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 Azure Cache for Redis (dịch vụ bộ nhớ đệm Redis được quản lý bởi Microsoft Azure), cụ thể là một instance thuộc Standard tier có tên redis1 với cài đặt mặc định.
Mục tiêu: Cấu hình Maxmemory policy để tăng lượng cache khả dụng cho các hoạt động đọc (read operations).
📘 Giải thích ngữ cảnh:
- Trong Azure Cache for Redis, maxmemory là giới hạn bộ nhớ tối đa dành cho dữ liệu cache. Tuy nhiên, một phần bộ nhớ được dành riêng (reserved) cho các hoạt động hệ thống như replication, fork, v.v., thông qua tham số maxmemory-reserved.
- Bộ nhớ khả dụng cho cache = maxmemory - maxmemory-reserved.
- Để tăng cache available cho read, cần tối ưu hóa bộ nhớ dành cho dữ liệu người dùng bằng cách điều chỉnh maxmemory-reserved hoặc eviction policy (chính sách xóa dữ liệu khi đầy bộ nhớ).
- Standard tier hỗ trợ các tùy chỉnh nâng cao này qua Azure Portal hoặc CLI, và kiến thức dựa trên phiên bản mới nhất (cập nhật đến 2026 từ tài liệu Azure Cache for Redis Premium/Enterprise/Standard).
🛠️ Yêu cầu hành động: Chọn cách cấu hình phù hợp nhất để tăng trực tiếp lượng bộ nhớ cache khả dụng, không làm gián đoạn read operations.
✅ Đáp án đúng: Decrease the value of maxmemory-reserved
Lý do lựa chọn:
Giảm giá trị maxmemory-reserved sẽ giải phóng bộ nhớ hệ thống dành riêng, từ đó tăng lượng bộ nhớ khả dụng cho dữ liệu cache (maxmemory hiệu quả lớn hơn). Điều này trực tiếp tăng cache available cho read operations mà không ảnh hưởng đến eviction hay các hoạt động khác.
- Mặc định, maxmemory-reserved là ~25% maxmemory ở Standard tier. Giảm nó (ví dụ: từ 25% xuống 10%) có thể tăng cache lên đến 15% mà vẫn an toàn cho hệ thống.
- Đây là cách tối ưu nhất theo best practices của Azure (không yêu cầu thay đổi eviction policy).
📘 Nguồn tham khảo:
- Azure Docs: Configure maxmemory-reserved (cập nhật 2024-2026).
- Redis official: maxmemory-reserved.
📋 Giải thích tất cả các phương án
-
✅ Decrease the value of maxmemory-reserved
🟢 Đúng: Như đã giải thích, giảm giá trị này tăng trực tiếp bộ nhớ cache khả dụng, giúp nhiều dữ liệu hơn lưu trữ và sẵn sàng cho read operations. Phù hợp với Standard tier, dễ cấu hình qua Azure Portal > Redis > Advanced settings. -
❌ Increase the value of maxmemory-reserved
🔴 Sai: Tăng giá trị sẽ giảm bộ nhớ cache khả dụng (vì reserved nhiều hơn), dẫn đến ít cache hơn cho read, thậm chí gây OOM (Out of Memory) sớm hơn. Trái ngược hoàn toàn mục tiêu. -
❌ Set the Maxmemory policy to noeviction
🔴 Sai: noeviction là eviction policy không xóa key nào khi bộ nhớ đầy, dẫn đến lỗi khi write mới. Nó không tăng cache available mà chỉ ngăn eviction, làm cache dễ đầy và read kém hiệu quả hơn (không giải phóng bộ nhớ cũ). -
❌ Set the Maxmemory policy to volatile-lru
🔴 Sai: volatile-lru eviction policy xóa key có TTL theo LRU (Least Recently Used) khi đầy. Nó quản lý eviction tốt hơn nhưng không tăng lượng cache available (vẫn giới hạn bởi maxmemory-reserved), chỉ ảnh hưởng đến việc giữ dữ liệu cũ cho read.
🧩 Kết luận: Phương án đúng tập trung vào tối ưu bộ nhớ hệ thống, không phải eviction. Nếu áp dụng thực tế, kiểm tra metrics qua Azure Monitor trước khi giảm maxmemory-reserved để tránh overhead hệ thống! 🚀
The company requires that data in the Blob Storage is only in the archive tier.
You need to ensure data copied to the Blob Storage is moved to the archive tier.
What should you do?
- A Use a Put Block List operation with a request header of x-ms-immutability-policy-mode.
- B Create a lifecycle policy with an action of tierToArchive and configure daysAfterModificationGreaterThan for 0.
- C Use a Put Blob operation with a request header of x-ms-immutability-policy-until-date.
- D Create a lifecycle policy with an action of tierToArchive and configure a filter for blobIndexMatch.
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 Azure Blob Storage (không phải AWS như đề cập ban đầu, có thể là nhầm lẫn), cụ thể là cách đảm bảo dữ liệu được sao chép vào Blob Storage chỉ nằm ở Archive tier để lưu trữ lâu dài và tiết kiệm chi phí.
- Bối cảnh: Công ty sử dụng Azure Blob Storage cho mục đích lưu trữ lưu trữ (archiving). Yêu cầu là tất cả dữ liệu mới copy vào phải tự động chuyển sang Archive tier ngay lập tức, tránh lưu ở Hot/Cool tier mặc định.
- Mục tiêu: Cần một cơ chế tự động hóa để di chuyển dữ liệu sang Archive tier mà không cần can thiệp thủ công mỗi lần upload/copy.
- Kiến thức cốt lõi (cập nhật đến 2026): Azure Blob Storage hỗ trợ Lifecycle Management để quản lý vòng đời blob tự động, bao gồm chuyển tier (Tier to Archive). Phiên bản mới nhất (Azure Storage Lifecycle v2) cho phép set
daysAfterModificationGreaterThan = 0để áp dụng ngay sau khi blob được tạo/sửa 📘.
Nguồn tham khảo:
- Azure Storage lifecycle management overview (Microsoft Docs, cập nhật 2024-2026).
- Storage lifecycle management best practices 🛠️.
✅ Đáp án đúng và lý do lựa chọn
Đáp án đúng: Create a lifecycle policy with an action of tierToArchive and configure daysAfterModificationGreaterThan for 0.
Lý do:
- Đây là cách chuẩn và tự động nhất trong Azure Blob Storage. Lifecycle policy cho phép định nghĩa rule áp dụng lên tất cả blob mới, với action
tierToArchiveđể chuyển sang Archive tier. SetdaysAfterModificationGreaterThan = 0đảm bảo chuyển ngay lập tức sau khi blob được tạo/modify (không chờ ngày nào). Điều này phù hợp hoàn hảo với yêu cầu "data copied to the Blob Storage is moved to the archive tier" – dữ liệu copy vào sẽ tự động archive mà không ở tier khác 🏆.
📋 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, giữ nguyên văn bản gốc bằng tiếng Anh. Mỗi phương án được đánh giá dựa trên tính khả thi, tính chính xác và liên quan đến yêu cầu tự động hóa cho tất cả dữ liệu mới:
-
✅ Create a lifecycle policy with an action of tierToArchive and configure daysAfterModificationGreaterThan for 0.
Giải thích đúng: Phương án này sử dụng Azure Storage Lifecycle Management (phiên bản mới nhất hỗ trợ rule linh hoạt). ActiontierToArchivechuyển blob sang Archive tier, vàdaysAfterModificationGreaterThan = 0áp dụng ngay lập tức cho mọi blob mới copy vào container/storage account. Hoàn toàn khớp yêu cầu, không cần code thủ công, và hiệu quả chi phí cho archiving. Áp dụng toàn cục qua policy 🛡️. -
❌ Use a Put Block List operation with a request header of x-ms-immutability-policy-mode.
Giải thích sai:Put Block Listlà API để upload blob lớn theo block, headerx-ms-immutability-policy-modedùng cho Immutability Policy (bảo vệ blob khỏi xóa/sửa, như WORM - Write Once Read Many). Không liên quan đến việc chuyển tier storage (Hot → Archive). Chỉ áp dụng thủ công cho từng blob, không tự động cho tất cả dữ liệu copy vào 🚫. -
❌ Use a Put Blob operation with a request header of x-ms-immutability-policy-until-date.
Giải thích sai:Put Bloblà API upload blob đơn giản, headerx-ms-immutability-policy-until-dateset thời hạn cho Immutability Policy (khóa blob đến ngày cụ thể). Tương tự option trên, đây là tính năng bảo mật dữ liệu, không kiểm soát tier (Archive/Cool/Hot). Phải thực hiện thủ công mỗi lần upload, không giải quyết yêu cầu tự động hóa cho toàn bộ storage ❌. -
❌ Create a lifecycle policy with an action of tierToArchive and configure a filter for blobIndexMatch.
Giải thích sai: Lifecycle policy đúng hướng vớitierToArchive, nhưng filterblobIndexMatchdùng để lọc dựa trên Blob Index Tags (metadata tùy chỉnh). Không áp dụng cho tất cả dữ liệu mới (chỉ blob có tag khớp), và không set thời gian ngay lập tức (cần kết hợp daysAfterModification). Không đảm bảo "only in the archive tier" cho mọi blob copy vào, chỉ lọc có điều kiện chọn lọc 🔍.
Kết luận khuyến nghị 🛠️: Nên triển khai Lifecycle Policy qua Azure Portal, CLI hoặc ARM Template để test ngay. Nếu cần tùy chỉnh nâng cao (như prefix/suffix), thêm rule filter phù hợp nhưng giữ daysAfterModificationGreaterThan = 0 cho archiving tức thì! 🚀