ACE sample questions, mock-exam practice, and simulator access with detailed explanations in IT Mastery on web, iOS, and Android.
ACE is Google Cloud’s Associate Cloud Engineer certification for candidates who need practical Google Cloud deployment, IAM, networking, operations, and troubleshooting judgment. If you are searching for ACE sample questions, a practice test, mock exam, or exam simulator, this is the main IT Mastery page to start on web and continue on iOS or Android with the same account.
Start a practice session for Google Cloud Associate Cloud Engineer (ACE) below, or open the full app in a new tab. For the best experience, open the full app in a new tab and navigate with swipes/gestures or the mouse wheel—just like on your phone or tablet.
Open Full App in a New TabA small set of questions is available for free preview. Subscribers can unlock full access by signing in with the same account used on mobile.
Prefer to practice on your phone or tablet? Download the IT Mastery – AWS, Azure, GCP & CompTIA exam prep app for iOS or IT Mastery app on Google Play (Android) and then sign in with the same account on web to continue your sessions on desktop.
ACE questions usually reward the answer that fixes the real control boundary first: project, IAM role, service account, network path, or operational signal. The best option is usually the simplest Google-managed service or scope that satisfies the requirement without overbuilding.
| Skill area | What to train |
|---|---|
| Set up a cloud solution environment (10%) | resource hierarchy, billing, projects, gcloud, and initial IAM setup |
| Plan and configure a cloud solution (15%) | compute, storage, networking, databases, and service-fit decisions |
| Deploy and implement a cloud solution (30%) | workload deployment, managed-service rollout, configuration, and execution choices |
| Ensure successful operation of a cloud solution (25%) | logging, monitoring, reliability, backup, recovery, and troubleshooting |
| Configure access and security (20%) | least privilege, service accounts, IAM scope, and network controls |
Over the weekend, your organization’s primary Cloud Billing account was suspended because of a failed payment. On Monday you see that production Compute Engine VMs and Cloud SQL instances in a linked project have stopped, and you cannot create new resources. You must restore services quickly while avoiding unnecessary data migration or resource recreation. What should you do first?
Options:
Best answer: B
Explanation: The option that updates the payment method and reactivates the existing Cloud Billing account, then restarts resources, is correct because it:
This matches Google Cloud’s documented behavior: restoring billing typically allows you to bring your workloads back online without losing resources.
Your team runs a small internal web app on a single Compute Engine VM in a Google Cloud project that is linked to your company’s primary billing account. Last month a misconfigured script caused unexpected charges. Finance now requires automated email alerts if this project’s monthly charges exceed $200, but they do not want a separate billing account, and the app must remain available at all times. What should you do to optimize the current setup?
Options:
Best answer: B
Explanation: Setting a budget on the existing billing account, scoped to the specific project, directly addresses all requirements: it provides automated alerts at the $200 spend level, does not require a new billing account, and keeps billing active so the VM and app continue to run. This approach optimizes operations and cost visibility using standard Google Cloud billing features without changing the current deployment.
You are designing the data layer for a new mobile game running on Google Cloud. You must:
Which of the following actions/solutions will meet these requirements? (Select TWO.)
Options:
Correct answers: B and D
Explanation: Both correct options choose Firestore for player profiles and Cloud Bigtable for telemetry:
In both cases, the workload that needs flexible queries uses Firestore, and the workload that needs massive scale and ultra-low-latency key-based access uses Cloud Bigtable, which is the core differentiation the question is testing.
You configured a Compute Engine VM with all required software and ran the following command:
1gcloud compute disks snapshot appserver-1 \
2 --snapshot-names=appserver-base \
3 --zone=us-central1-a
You want to standardize this OS and software configuration for new VMs in multiple zones. Based only on the exhibit, what should you do next?
Options:
Best answer: C
Explanation: The choice to create a custom image from the appserver-base snapshot and then use that image for new VMs aligns exactly with the goal of standardizing VM OS and software configurations. The exhibit confirms that a snapshot already exists, so the appropriate follow‑up is to convert that snapshot into a reusable golden image, which is how Compute Engine is designed to provide consistent templates.
Your company has just created a new Google Cloud organization and wants to regularly analyze all projects for IAM and policy misconfigurations. You plan to use Cloud Asset Inventory together with Gemini Cloud Assist. Which of the following actions is NOT an appropriate part of this setup?
Options:
roles/owner on every project, download its JSON key, and share the key file with all engineers so they can run Gemini Cloud Assist analysis from their laptops.roles/cloudasset.viewer at the organization level, and have them use Gemini Cloud Assist in the Cloud Console to review IAM and policy recommendations.Best answer: B
Explanation: The choice that creates a highly privileged service account with roles/owner on every project and then shares its downloaded JSON key with all engineers is the incorrect action.
This approach violates multiple best practices:
Because it is both unnecessary and unsafe, this option is the one action that is not appropriate for setting up Cloud Asset Inventory and Gemini Cloud Assist analysis.
You manage several microservices running on GKE Autopilot in a single project. All Pods use the same Google Cloud service account shared-app-sa@project-id.iam.gserviceaccount.com via Workload Identity. After the security team removed the roles/pubsub.publisher role from this service account to follow least privilege, one microservice started logging 403 PERMISSION_DENIED errors when publishing to Pub/Sub, while other services still work. You want a long-term fix that avoids this type of conflict and follows least privilege. What should you do?
Options:
roles/pubsub.publisher to the user account that deployed the failing microservice so it can publish messages through that user’s credentials instead of the service account.roles/editor to the existing shared service account so all microservices have enough permissions, and rely on audit logs to detect misuse.Best answer: D
Explanation: The choice to create a dedicated Google Cloud service account for each microservice, grant only needed roles, and update each Kubernetes service account binding directly addresses both the immediate problem and the long-term design.
It resolves the 403 error by allowing you to give roles/pubsub.publisher only to the service account used by the Pub/Sub–publishing microservice. At the same time, other microservices can continue using their own service accounts with more limited roles. This follows recommended patterns for service account strategy on Google Cloud: use workload-specific service accounts to balance manageability and least privilege.
Your team is creating a new Google Cloud project for a microservices application on Cloud Run. A “developers” Google Group will build and deploy Cloud Run services and needs to view application logs for troubleshooting. They must not be able to modify IAM policies, manage billing, or delete the project. Which IAM configuration BEST follows the principle of least privilege?
Options:
Best answer: C
Explanation: Granting the “developers” group Cloud Run Developer and Logs Viewer on the project gives them:
These roles are applied at the project scope, which matches the requirement to work only in that project, and they avoid the overly broad permissions of basic roles like Owner and Editor. This is the clearest application of least privilege for the described developer persona.
You run a nightly batch Dataflow job that loads data into BigQuery. When there is an incident, the on-call engineer currently searches Cloud Logging to infer whether the job succeeded or failed. You want to simplify operations while following least privilege. What should you do?
Options:
Best answer: A
Explanation: Granting the on-call group the Dataflow Viewer role and directing them to the Dataflow Jobs page uses Dataflow’s built-in visibility into job state. It lets them quickly see whether a job is running, failed, or succeeded and inspect errors, while keeping permissions read-only and narrow at the project level, satisfying both simplification and least-privilege goals.
Your company uses Cloud NGFW to control traffic between Compute Engine app VMs and database VMs across several projects. Current rules list many individual VM IPs, and VMs are sometimes moved between subnets and projects. You want rules that refer to logical app and db groups instead of IPs and continue working after such moves. Which of the following actions/solutions will meet these requirements? (Select TWO.)
Options:
Correct answers: B and D
Explanation: The options that define and use secure tags for app and database tiers directly satisfy the requirement to avoid IP-based rules and instead base Cloud NGFW policies on logical groups. In both cases, Cloud NGFW rules match traffic using secure tags assigned to VMs, so the policy remains correct even if VM IP addresses, subnets, or projects change, as long as the tags correctly represent the VM’s role.
You are auditing IAM on a project that hosts several Cloud Storage buckets. The current project-level IAM policy is shown below.
| Principal | Role | Level |
|---|---|---|
| group:dev-team@example.com | roles/editor | Project |
| group:sec-admins@example.com | roles/owner | Project |
Developers in dev-team@example.com only need to read objects from a single bucket, gcs-logs-dev. To better follow least-privilege access control, what is the most appropriate change?
Options:
roles/editor from dev-team@example.com at the project level and grant roles/storage.objectViewer on bucket gcs-logs-dev to dev-team@example.com.dev-team@example.com role from roles/editor to roles/viewer at the project level so they cannot modify resources.roles/editor for dev-team@example.com at the project level and also grant roles/storage.admin on bucket gcs-logs-dev so they can manage objects there.Best answer: A
Explanation: The choice to remove roles/editor from dev-team@example.com at the project level and grant roles/storage.objectViewer on bucket gcs-logs-dev is best because it:
roles/editor at the project level, which is overly broad.This change both narrows the permissions (from edit to read-only) and narrows the scope (from project to a single bucket).
You must implement a small background service that processes Pub/Sub messages. The team wants a fully managed Google Cloud compute option where developers only write and deploy function source code and do not build container images or manage servers. Which platform should you choose?
Options:
Best answer: D
Explanation: Cloud Run functions (2nd gen) is designed for event-driven or HTTP-triggered workloads where you only provide function source code. Google Cloud builds and manages the container image, handles autoscaling, and abstracts away servers and Kubernetes. This directly matches the requirement that the team wants a fully managed option without building containers or managing servers.
Your company must retain all Cloud Audit Logs from several Google Cloud projects for 7 years to meet regulatory requirements. The logs are accessed only during rare compliance investigations (about once per year), and manual review is acceptable. The team wants to minimize ongoing storage cost and avoid managing additional databases. How should you export the logs?
Options:
Best answer: B
Explanation: The choice to export logs to a Cloud Storage bucket and use lifecycle rules aligns perfectly with the scenario:
This directly meets the requirements: 7-year retention, rare access, cost minimization, and avoiding additional databases.
You run a public web application on Cloud Run behind a global HTTP(S) load balancer. During a recent incident, the service returned many HTTP 500 responses for several minutes, but no one was paged. You already see detailed request logs in Cloud Logging. You want an automated alert when the rate of 5xx responses exceeds 5% of all responses over a 5‑minute window. What should you do?
Options:
Best answer: D
Explanation: The choice to configure a metric-based alert policy in Cloud Monitoring using built-in HTTP request and 5xx metrics is correct because it:
A company hosts static website assets in a Cloud Storage bucket located in the us-central1 regional location. During a recent us-central1 regional outage, the website became unavailable worldwide. Management now requires that the static content remain stored only in the United States but stay available even if a single U.S. region fails. What should you do to address the root cause?
Options:
europe-west1 and configure the website to read from either bucket.US multi-region and update the website to use this bucket as the origin.us-central1 bucket but enable Cloud CDN with cache keys distributed across multiple edge locations worldwide.us-central1 bucket’s storage class to Nearline to improve durability during outages.Best answer: B
Explanation: Migrating to a Cloud Storage bucket in the US multi-region provides built-in cross-region redundancy within the United States. If one U.S. region fails, other regions in the multi-region still serve the data, maintaining website availability. At the same time, data residency is preserved because all replicas stay within U.S. regions.
In Cloud SQL and AlloyDB, which feature is specifically designed to analyze query workloads and provide recommendations to create or drop indexes to improve performance?
Options:
Best answer: A
Explanation: The option describing index advisor is correct because index advisor is explicitly designed to analyze query patterns for Cloud SQL and AlloyDB and then recommend indexes to create or drop to improve performance.
Which TWO of the following statements about adopting infrastructure as code (IaC) for an existing, manually created Google Cloud environment are INCORRECT and should NOT be followed? (Select TWO.)
Options:
gcloud, because those changes can cause configuration drift between the code and the actual resource.import or Config Connector to start managing existing resources without recreating them, as long as the IaC configuration matches the current live settings.Correct answers: A and D
Explanation: The statement claiming that you must delete and recreate a Compute Engine VM to bring it under Terraform management is incorrect because Terraform supports importing existing resources into state, allowing you to manage them without downtime or data loss. The statement suggesting that it is safe and recommended for both Terraform and Deployment Manager to manage the same resource is also incorrect, as dual control of a single resource by different IaC tools is a known anti‑pattern that leads to conflicting updates, broken plans, and potential service disruption.
You scheduled a BigQuery query to populate a reporting table. The table was not updated, so you open the job details shown in the following exhibit.
Using only the information in the exhibit, how should you interpret the status of this job?
1BigQuery job details
2
3Job ID: daily_report_2025_01_15_00_00
4Job type: Query
5Start time: 2025-01-15 00:00:02 UTC
6End time: 2025-01-15 00:00:09 UTC
7Status: Failed
8
9Error:
10 Reason: invalidQuery
11 Location: line 5, column 12
12 Message: Unrecognized name: revenue_total at [5:12]
Options:
Best answer: B
Explanation: The choice stating that the query failed because the SQL references a column name that BigQuery does not recognize matches both the job status and the error details. The Status: Failed line confirms the job did not succeed, and the Error message Unrecognized name: revenue_total with Reason: invalidQuery clearly points to an invalid reference in the SQL text as the cause of the failure.
You are troubleshooting a Cloud SQL for PostgreSQL instance that users report is frequently slow. You want to use built-in Google Cloud tools to find and optimize the most expensive queries. Which of the following actions is NOT an appropriate approach for this task?
Options:
Best answer: A
Explanation: The choice that disables Query Insights and relies only on high-level CPU utilization is incorrect for this scenario. CPU charts can confirm that the instance is under load but do not reveal which specific queries are responsible. Query Insights and the index advisor are explicitly designed to provide query-level visibility and tuning recommendations, so turning them off goes against best practice when investigating slow queries.
A team enables Cloud Profiler on their production microservices to continuously capture CPU and memory profiles and identify hot code paths that waste resources. They plan to refactor the code paths that consume the most CPU to reduce the number of vCPUs required. Which primary cloud principle does this practice most directly support?
Options:
Best answer: A
Explanation: The choice that describes performance and cost optimization through more efficient resource usage matches both the stated use of Cloud Profiler and the outcome the team wants:
This is exactly how Cloud Profiler supports performance efficiency and cost optimization: by enabling code-level improvements that reduce resource consumption while maintaining or improving throughput and latency.
Your team is troubleshooting intermittent 500 errors from a Cloud Run service. The application writes structured JSON logs with custom fields and labels. You want to inspect the full JSON payload and relevant labels for specific failing requests. Which action is NOT a recommended way to view this detailed context in Cloud Logging?
Options:
jsonPayload.error.code="INTERNAL" and resource.labels.service_name to focus on failing requests.jsonPayload and labels sections to see all nested fields.jsonPayload.user_id and labels.cloud_run_service to quickly see context per row.Best answer: D
Explanation: The option that exports logs to Cloud Storage and relies on a custom script to parse every entry is not a recommended approach for basic troubleshooting. It introduces extra steps, storage, and maintenance when Cloud Logging already provides a rich UI and query language that understands structured JSON fields and labels. For quickly viewing detailed context for specific 500 errors, you should use Logs Explorer directly, not build your own parser.
You run a stateless web API on GKE that sometimes sees CPU spikes during traffic peaks. You want Kubernetes to automatically handle scaling while you keep managing only the Deployment and Service manifests. Which of the following configuration ideas is INCORRECT for this scenario?
Options:
Auto mode for the Deployment with the goal of increasing or decreasing the number of pod replicas based on CPU utilization.Best answer: A
Explanation: The option that proposes using a Vertical Pod Autoscaler in Auto mode to increase or decrease the number of pod replicas based on CPU utilization is incorrect. VPA does not manage replica counts; it manages CPU and memory requests/limits for individual pods.
Replica scaling is the job of HPA. Treating VPA as a mechanism to add or remove pods conflates horizontal and vertical scaling responsibilities and indicates a wrong mental model, which is why this configuration idea is the one that should be avoided.
Your team runs a public web application behind an external HTTP(S) load balancer. To improve security, you plan to use Cloud Armor. Which of the following actions is NOT an appropriate use of Cloud Armor in this scenario?
Options:
Best answer: B
Explanation: The choice that disables Cloud Armor and relies only on VPC firewall rules is incorrect because it misunderstands their roles. Cloud Armor is designed as a WAF and DDoS protection layer integrated with HTTP(S) load balancers, providing edge filtering, preconfigured WAF rules, rate limiting, and geo/IP-based controls. VPC firewalls alone cannot replicate these capabilities and operate deeper in the network, not at the global edge in front of the load balancer.
By removing Cloud Armor under the assumption that VPC firewall rules are equivalent, you violate defense-in-depth and lose important protections specifically targeted at HTTP(S) traffic, which is an unsafe configuration for a public web application.
Your company runs most workloads in a single Google Cloud project. The finance team currently uses the Cloud Billing console cost charts but now wants to analyze costs by SKU, label, and project resource over time to identify optimization opportunities. They are comfortable using standard SQL and BI tools but do not want to manually download reports every month.
What should you do to best meet this requirement?
Options:
Best answer: A
Explanation: Enabling Cloud Billing export of detailed usage cost data to BigQuery creates an automated, continuously updated dataset for the entire billing account. This dataset includes SKU‑level and resource‑level information and supports filtering and grouping by labels and other attributes.
Because the finance team is comfortable with SQL and BI tools, they can immediately use the BigQuery dataset for analysis and reporting. There is no need for recurring manual CSV exports, and the solution scales as usage grows. This directly satisfies the requirements: detailed analysis (by SKU and resource), queryable data, and no manual monthly downloads.
You have a small GKE Autopilot cluster exposing a stateless HTTP webhook service to the public internet via an external HTTP(S) load balancer. An on-premises billing system sends infrequent but sometimes very bursty webhook requests, and during spikes the service returns 503 errors and your team struggles with Kubernetes tuning and operations. You want to handle burst traffic reliably while minimizing cluster management. What should you do?
Options:
Best answer: A
Explanation: Deploying the webhook container to Cloud Run and exposing it via a public HTTPS URL directly addresses all the requirements: it keeps the container-based implementation, supports public HTTP integration from the on-prem billing system, scales quickly to handle burst traffic, and greatly reduces operational burden by removing Kubernetes cluster management. This aligns with using Cloud Run for stateless, HTTP-based, bursty workloads where you want serverless autoscaling and minimal ops.
If you want concept-first reading before heavier simulator work, use the companion guide at TechExamLexicon.com .