SaveMyCert
Log in
5 of 5 free questions left today·for 30 a day
ACE practice

ACE sample questions — 25 answered and explained

25 ACE sample questions written to the official Google Cloud Associate Cloud Engineer exam guide, grouped by exam domain and weighted like the real exam. Each shows the correct answer, why every other option is wrong, and the lesson that teaches it. None of them repeat the examples on the other ACE practice pages.

On this page
25
answers included
Full bank
470
on the practice page
Domains
4
weighted like the exam
Free, no account
5/day
a free account allows 30 a day

Domain 1: Setting up a cloud solution environment

20% of the ACE exam, so 5 of the 25 questions on this page.

Question 1Setting up a cloud solution environment

While planning where to place workloads, a colleague asks which resource below is zonal, meaning it exists in exactly one zone and becomes unavailable if that zone fails. Which resource do you identify?

Choose one.

  • a
    A VPC network

    VPC networks are global resources: one network spans all regions, and subnets are defined per region.

  • b
    A subnet of a VPC network

    Subnets are regional. A subnet covers every zone in its region, so VMs in different zones of that region can share it.

  • c
    A Compute Engine VM instance Correct

    A VM instance runs in a single zone. If that zone has an outage the instance is unavailable, which is why resilient designs spread instances across zones.

  • d
    A Compute Engine custom image

    Images are global resources. You can create instances from the same image in any zone or region.

The concept

Google Cloud resources have a location scope: global (VPC networks, images, firewall rules), regional (subnets, regional managed instance groups, static external regional IPs) or zonal (VM instances, zonal persistent disks). Scope decides what a zone or region outage takes down.

Why that’s the answer

A Compute Engine VM instance is created in one zone and fails with it. VPC networks and custom images are global, and a subnet is regional, so none of them is lost when a single zone goes down.

How to reason it out
  1. Classify each option as global, regional or zonal.
  2. Remember networks and images are global and subnets are regional.
  3. Pick the only zonal resource: the VM instance.

Exam tip: VM instances and zonal disks are zonal; subnets are regional; VPC networks and images are global.

Setting Up Google Cloud Projects, Resource Hierarchy, and IAM — the lesson that teaches this.

Question 2Setting up a cloud solution environment

Your company manages all employee identities in an external SAML identity provider. It does not want to create or synchronize user accounts in Cloud Identity, but employees must sign in to the Google Cloud console with IAM-controlled access. What should you configure?

Choose one.

  • a
    Workload Identity Federation with a pool that trusts the SAML provider

    Workload Identity Federation lets external workloads such as CI pipelines impersonate service accounts. It is not used for human sign-in to the console.

  • b
    Google Cloud Directory Sync from the directory behind the SAML provider

    GCDS creates and updates user accounts in Cloud Identity, which is exactly the account synchronization the company wants to avoid.

  • c
    Workforce Identity Federation with a pool that trusts the SAML provider Correct

    Workforce Identity Federation lets people authenticate with an external IdP over SAML or OIDC and receive IAM access, with no Cloud Identity user accounts created.

  • d
    Cloud Identity single sign-on with the SAML provider as the third-party IdP

    SSO delegates the password check to the IdP, but each user still needs an account in Cloud Identity, which breaks the stated requirement.

The concept

Workforce Identity Federation trusts an external identity provider (SAML 2.0 or OIDC) for human users. You create a workforce identity pool and provider at the organization level, map IdP attributes, and grant IAM roles to pool principals; no Google Accounts are created or synced.

Why that’s the answer

Only Workforce Identity Federation gives employees console access without Cloud Identity accounts. GCDS and Cloud Identity SSO both still depend on user accounts in Cloud Identity, and Workload Identity Federation is the near-twin for applications rather than people.

How to reason it out
  1. Note the deciding constraint: no accounts created or synced in Cloud Identity.
  2. Remove options that still need Cloud Identity users (GCDS, SSO).
  3. Choose between Workforce (people) and Workload (applications) federation: the users are employees.

Exam tip: Workforce Identity Federation is for people, Workload Identity Federation is for workloads; neither creates Cloud Identity accounts.

Setting Up Google Cloud Projects, Resource Hierarchy, and IAM — the lesson that teaches this.

Question 3Setting up a cloud solution environment

For a compliance review you must list every resource and its IAM policy across all projects in the organization, and show how those IAM policies looked three weeks ago. You want a managed service that provides this with the least effort. What should you use?

Choose one.

  • a
    Admin Activity audit logs queried in Logs Explorer

    Audit logs record individual changes. They do not give a current list of every resource, and rebuilding past policy state from log entries is manual work.

  • b
    IAM role recommendations from the Recommender

    Role recommendations suggest removing unused permissions from existing grants. They do not produce a resource inventory or past policy states.

  • c
    Cloud Asset Inventory searches and asset history Correct

    Cloud Asset Inventory covers resources and IAM policies across the organization and keeps create, update and delete history for 35 days, so three weeks ago is still available.

  • d
    gcloud projects get-iam-policy run in a loop over the projects

    This returns only the current project-level policy at the time it runs, with no other resources and no history.

The concept

Cloud Asset Inventory is a metadata inventory of resources, IAM policies and organization policies across a project, folder or organization. You can search it, export snapshots to BigQuery or Cloud Storage, and query asset history for up to 35 days.

Why that’s the answer

Cloud Asset Inventory is the only option that produces both an organization-wide inventory of resources with their IAM policies and point-in-time history within the last 35 days. Audit logs capture the changes but not a ready inventory; IAM recommendations analyze permission usage; a get-iam-policy loop sees only current, project-level policies.

How to reason it out
  1. List the two needs: an organization-wide inventory and past policy state.
  2. Recall that Cloud Asset Inventory keeps 35 days of asset history.
  3. Reject tools that only see changes (audit logs) or only current project policies (gcloud loop).

Exam tip: Inventory plus history across the organization is Cloud Asset Inventory, within its 35-day history window.

Setting Up Google Cloud Projects, Resource Hierarchy, and IAM — the lesson that teaches this.

Question 4Setting up a cloud solution environment

A developer has the Viewer role on the organization node and, through a Google group, the Editor role on the project web-prod. No deny policies exist. What is the developer's effective access?

Choose one.

  • a
    Editor on web-prod; Viewer on every other project in the organization Correct

    Effective access is the union of all bindings. Editor on web-prod includes everything Viewer allows there, and the organization grant gives Viewer everywhere else.

  • b
    Viewer on web-prod; Viewer on every other project in the organization

    A higher-level grant never caps a lower-level one. Allow policies add up, so the project-level Editor grant takes effect on web-prod.

  • c
    Editor on web-prod; no access on the other projects in the organization

    The Viewer grant on the organization node is inherited by every folder and project under it, so the other projects are readable.

  • d
    Editor on web-prod; Editor on every other project in the organization

    Grants do not flow sideways or upward. The Editor binding on web-prod applies only to web-prod and its resources.

The concept

IAM allow policies are additive. The effective permissions on a resource are the union of the bindings on the resource and all bindings inherited from its ancestors, whether granted to a user directly or through a group.

Why that’s the answer

On web-prod the developer has the union of Viewer and Editor, which is Editor; on every other project only the inherited Viewer applies. No allow policy caps another, grants made through a group count fully, and a project-level binding never spreads to sibling projects.

How to reason it out
  1. Collect every binding that applies to each project.
  2. Take the union on web-prod: Viewer plus Editor is Editor.
  3. Take the union elsewhere: only the inherited Viewer.
  4. Remember inheritance flows down only, never sideways.

Exam tip: Effective access is the union of the resource's bindings and its ancestors', and inheritance only flows downward.

Setting Up Google Cloud Projects, Resource Hierarchy, and IAM — the lesson that teaches this.

Question 5Setting up a cloud solution environment

A company with Retail, Finance and Logistics departments is setting up Google Cloud. Each department runs separate dev and prod projects and needs its own administrators. Finance's stricter organization policies must be set in one place and cover all its projects. How should you structure the hierarchy?

Choose one.

  • a
    A separate organization per department, each with dev and prod folders

    Separate organizations split identity, billing and central governance. Folders exist so one organization can delegate administration per department.

  • b
    One organization, a folder per environment, with department subfolders inside each

    This works for environment-wide policies, but Finance's projects are split across two subfolders, so its stricter policies must be set twice.

  • c
    One organization, the projects directly under it, with department labels

    Labels are metadata for filtering and billing reports. They carry no IAM or policy inheritance, so Finance's policies would be set project by project.

  • d
    One organization, a folder per department, dev and prod subfolders inside each Correct

    Department folders give each department one node for its administrators and one place to set Finance's policies, while subfolders keep environments apart.

The concept

Folders are the unit of delegation and policy scoping. Put the dimension that needs its own administrators and policies at the top folder level, so each department's IAM grants and organization policies attach once and inherit to all its projects.

Why that’s the answer

Department folders with dev and prod subfolders let Finance's stricter policies attach once, to the Finance folder, and let each department's administrators be granted on their own folder. Environment-first folders scatter Finance across two subtrees; separate organizations fragment governance; a flat layout with labels has no inheritance at all.

How to reason it out
  1. Find the dimension that needs one policy and admin attachment point: the department.
  2. Make it the top folder level, with environments as subfolders.
  3. Check Finance: one folder, one policy attachment.
  4. Reject labels as a policy boundary and separate organizations as over-fragmented.

Exam tip: Put the dimension that owns policy and delegation at the top of the folder tree.

Setting Up Google Cloud Projects, Resource Hierarchy, and IAM — the lesson that teaches this.

Domain 2: Planning and implementing a cloud solution

30% of the ACE exam, so 8 of the 25 questions on this page.

Question 6Planning and implementing a cloud solution

A Cloud Run service spends most of each request waiting on external API calls. It currently allows one request per instance, and load tests show one instance can safely handle about 80 simultaneous requests. During traffic spikes the service starts hundreds of instances. You want to cut cost without rejecting or delaying requests. What should you do?

Choose one.

  • a
    Lower the service's maximum number of instances to about 10

    Capping instances at 10 with one request each would leave spike traffic waiting or rejected, which breaks the requirement.

  • b
    Raise the maximum concurrent requests per instance to about 80 Correct

    Raising per-instance concurrency lets each instance serve many waiting requests, so spikes need far fewer instances and billed instance time drops.

  • c
    Set a minimum number of instances to keep capacity warm

    Minimum instances reduce cold starts but keep instances running and billed while idle, increasing cost.

  • d
    Increase the CPU and memory allocated to each instance

    Bigger instances do not change how many requests each instance accepts while concurrency stays at 1, so the instance count and cost both rise.

The concept

Cloud Run's maximum concurrency setting controls how many requests one instance handles at once. For a given traffic level, the number of instances, and so the cost, falls as concurrency rises.

Why that’s the answer

An I/O-bound service spends most of each request waiting, so one instance can interleave many requests. Setting concurrency near the tested safe value of 80 lets existing instances absorb spikes. Capping maximum instances is the tempting cost control, but with concurrency at 1 it would queue or reject requests. Minimum instances and bigger instances both raise cost.

How to reason it out
  1. Note the workload: I/O-bound, concurrency currently 1, one instance safely handles about 80.
  2. Apply the constraint: lower cost without rejecting requests.
  3. Raise maximum concurrency to about 80 (gcloud run services update --concurrency=80) and watch latency and instance count.

Exam tip: For I/O-bound Cloud Run services, raise per-instance concurrency to cut instances; capping instances instead turns away traffic.

Choosing and Deploying Compute: Compute Engine, GKE, and Cloud Run — the lesson that teaches this.

Question 7Planning and implementing a cloud solution

You built a container image and pushed it to Artifact Registry. You now want it running as a fully managed, autoscaling HTTPS service, created with a single command and with no cluster or VM to look after. Which command should you use?

Choose one.

  • a
    kubectl create deployment my-service --image=<image> --replicas=3

    kubectl needs an existing Kubernetes cluster to talk to, and a Deployment alone gives no HTTPS endpoint; you would also need a Service or Ingress and the cluster to manage.

  • b
    gcloud compute instances create-with-container my-vm --container-image=<image>

    This launches one Compute Engine VM running the container through the container startup agent, which Google has deprecated: no autoscaling, no managed HTTPS endpoint, and you own the VM.

  • c
    gcloud run deploy my-service --image=<image> --region=us-central1 Correct

    gcloud run deploy creates or updates a Cloud Run service from the image and returns a managed HTTPS URL with autoscaling built in.

  • d
    gcloud builds submit --tag=<image> --region=us-central1 --async

    gcloud builds submit builds and pushes an image with Cloud Build; it does not deploy or serve anything, and the image is already built and pushed.

The concept

Cloud Run deployment is a single gcloud operation: point gcloud run deploy at a container image in Artifact Registry and Google provisions the service, autoscaling, and a TLS-terminated HTTPS URL.

Why that’s the answer

The requirement is a fully managed, autoscaling HTTPS service from an existing image in one command. gcloud run deploy does exactly that. kubectl needs a cluster to exist first, create-with-container gives a single unmanaged VM (and relies on the deprecated container startup agent), and gcloud builds submit only produces images.

How to reason it out
  1. Push the container image to Artifact Registry (already done).
  2. Run gcloud run deploy with the image URL, choosing a region and allowing unauthenticated access if the service is public.
  3. Use the HTTPS URL that Cloud Run returns; autoscaling and TLS are handled automatically.

Exam tip: gcloud run deploy turns a pushed container image into an autoscaling HTTPS service in one command.

Choosing and Deploying Compute: Compute Engine, GKE, and Cloud Run — the lesson that teaches this.

Question 8Planning and implementing a cloud solution

Each time a user uploads an image to a Cloud Storage bucket, a small Python handler must create a thumbnail within seconds. The developers want to supply only their Python source code and an entry point, without building or maintaining container images, and the company wants no charges while no uploads occur. What should you do?

Choose one.

  • a
    Run a Compute Engine VM with a cron job that polls the bucket each minute

    A polling VM bills continuously, adds up to a minute of delay and replaces a managed trigger with code you maintain.

  • b
    Deploy a Cloud Run function with a trigger on the bucket's finalize events Correct

    A Cloud Run function is deployed from source with an entry point; Google builds the container, invokes it on each object finalize event and scales it to zero between uploads.

  • c
    Deploy a Cloud Run service from a container image with an Eventarc trigger

    This would react to uploads and scale to zero, but the team would build and maintain the container image, which they want to avoid.

  • d
    Create a Cloud Scheduler job that runs the handler against new uploads hourly

    A scheduled hourly run misses the within-seconds requirement and needs custom logic to find new objects.

The concept

Cloud Run functions are the source-code-first serverless option: you deploy a function and an entry point with an event trigger, such as a Cloud Storage object finalize event, and the platform builds, scales and invokes it.

Why that’s the answer

A Cloud Run function triggered by the bucket's finalize event meets all three requirements: source only, near-immediate reaction to each upload, and scale to zero. The Cloud Run service with Eventarc is the near-twin and also event-driven, but it is deployed here from a container image the team would have to maintain. Polling VMs and hourly schedules are not event-driven and miss the latency requirement.

How to reason it out
  1. Identify the trigger: each completed object upload (finalize event).
  2. Apply the constraints: source code only, seconds of latency, no idle charges.
  3. Deploy a Cloud Run function with a Cloud Storage finalize trigger, for example gcloud functions deploy ... --trigger-bucket=BUCKET.

Exam tip: Small source-only code reacting to Cloud Storage uploads is the Cloud Run functions use case; choose a Cloud Run service when you ship your own container.

Choosing and Deploying Compute: Compute Engine, GKE, and Cloud Run — the lesson that teaches this.

Question 9Planning and implementing a cloud solution

Your security team has a Cloud Run service that reviews firewall changes. It must run within a few minutes whenever someone creates, updates, or deletes a VPC firewall rule in the project; those changes are recorded in Admin Activity audit logs. You want a working solution with the fewest resources to create and manage. What should you do?

Choose one.

  • a
    Create a Cloud Scheduler job that calls the service to check for rule changes

    Scheduled polling needs custom change-detection code, wastes invocations and adds delay; it is not event delivery.

  • b
    Route the audit entries through a log sink to a Pub/Sub topic that pushes to the service

    A log sink, topic and push subscription would work, but it is three resources you create and manage yourself where one trigger does the same job.

  • c
    Export the audit logs to a Cloud Storage bucket and notify the service of new files

    Log sinks to Cloud Storage write files in hourly batches, so the service would hear about changes far later than a minute, and it is more resources to manage.

  • d
    Create an Eventarc trigger for the firewall audit log events with the service as target Correct

    An Eventarc Cloud Audit Logs trigger filters on the Compute Engine service and the firewall methods and delivers matching events to the Cloud Run service; Eventarc manages the transport for you.

The concept

Eventarc routes events from Google Cloud sources, including Cloud Audit Logs entries filtered by service and method name, to destinations such as Cloud Run, in CloudEvents format, and manages the underlying transport.

Why that’s the answer

Both the Eventarc trigger and a hand-built log sink to Pub/Sub with a push subscription would deliver the events within a few minutes, so the constraint decides: Eventarc needs one trigger, while the sink route needs a sink, a topic and a subscription you manage. A Cloud Storage export is batched hourly, and scheduled polling is not event-driven.

How to reason it out
  1. Identify the event source: Admin Activity audit log entries for firewall changes.
  2. List workable delivery routes: an Eventarc audit-log trigger, or a log sink to Pub/Sub with push.
  3. Apply the constraint (fewest resources to manage) and choose the Eventarc trigger.
  4. Filter on serviceName compute.googleapis.com and the firewall insert, patch and delete methods.

Exam tip: To invoke Cloud Run from Google Cloud admin actions, create an Eventarc Cloud Audit Logs trigger; a sink to Pub/Sub works but is more to manage.

Choosing and Deploying Compute: Compute Engine, GKE, and Cloud Run — the lesson that teaches this.

Question 10Planning and implementing a cloud solution

A research team trains very large language models written in JAX. Training runs for weeks, is dominated by large dense matrix multiplications, and does not depend on CUDA libraries. The team wants the best price-performance for this sustained, large-scale training on Google Cloud. Which compute should they use?

Choose one.

  • a
    Compute Engine A3 VMs with attached NVIDIA H100 GPUs

    GPUs would run the job and suit CUDA-dependent or mixed workloads, but for JAX training dominated by dense matrix math at very large scale, TPUs usually give better price-performance.

  • b
    Cloud TPU VMs provisioned as a multi-host TPU slice Correct

    TPUs are Google's ASICs built for large-scale tensor operations; JAX runs natively on them, and multi-host slices scale out sustained training.

  • c
    Compute-optimized C3 VMs with the most vCPUs available

    CPUs are far slower than accelerators for dense deep-learning training; more vCPUs cannot close the gap at a reasonable cost.

  • d
    GKE Standard node pools with attached NVIDIA L4 GPUs

    L4 GPUs target inference and graphics-style workloads; running them in GKE changes the orchestration, not the accelerator's fit for very large training.

The concept

GPUs are the general-purpose accelerator (CUDA ecosystem, broad framework support, graphics and inference). TPUs are Google-designed ASICs optimised for large-scale tensor operations in frameworks such as JAX, TensorFlow and PyTorch/XLA.

Why that’s the answer

The workload ticks every TPU box: very large models, dense matrix multiplication, a TPU-native framework, no CUDA dependency and sustained training where price-performance matters. High-end GPUs are the tempting choice and would work, but nothing in the scenario needs what GPUs uniquely offer. CPUs do not address the bottleneck.

How to reason it out
  1. Identify the computation: very large, dense matrix-multiply training.
  2. Check the framework and dependencies: JAX, no CUDA.
  3. Choose TPUs for sustained large-scale training; choose GPUs when CUDA, graphics or framework breadth is required.

Exam tip: Very large JAX/TensorFlow training without CUDA dependence points to TPUs; CUDA, graphics or mixed workloads point to GPUs.

Choosing and Deploying Compute: Compute Engine, GKE, and Cloud Run — the lesson that teaches this.

Question 11Planning and implementing a cloud solution

A self-managed PostgreSQL database runs on one Compute Engine VM. If the VM's zone fails, the business requires that no committed transactions are lost and that the database runs again on a standby VM in another zone of the same region within minutes. Which disk configuration should you use for the data?

Choose one.

  • a
    Regional Persistent Disk replicated to a second zone Correct

    Regional Persistent Disk writes synchronously to two zones, so no committed data is lost, and you can force-attach it to a standby VM in the replica zone.

  • b
    Zonal Persistent Disk with an hourly snapshot schedule

    Snapshots are point-in-time copies; restoring from an hourly snapshot can lose up to an hour of transactions and takes longer than a force-attach.

  • c
    Local SSD in a RAID 0 array on the database VM

    Local SSD is attached to one host and is not replicated; the data is lost with the host, let alone the zone.

  • d
    Persistent Disk Asynchronous Replication to another region

    Asynchronous replication can lose the most recent writes and targets a different region, so it fails the zero-loss, same-region requirement.

The concept

Regional Persistent Disk (and Hyperdisk Balanced High Availability) replicate every write synchronously across two zones in one region, so a stateful VM can fail over to the other zone without data loss.

Why that’s the answer

Zero lost transactions plus fast failover in the same region means synchronous cross-zone replication, which is regional Persistent Disk: on zone failure you force-attach the disk to the standby VM. Asynchronous Replication is the tempting option because it also replicates, but it is asynchronous and cross-region. Snapshots lose recent writes, and Local SSD is not replicated at all.

How to reason it out
  1. Translate the requirement: RPO of zero, failover in minutes, same region.
  2. Zero data loss requires synchronous replication; asynchronous and snapshot-based options fail.
  3. Use regional Persistent Disk and force-attach it to the standby VM in the replica zone on failure.

Exam tip: Zero data loss across zones in one region means regional Persistent Disk (or Hyperdisk Balanced HA); snapshots and async replication are backup and DR, not synchronous HA.

Choosing and Deploying Compute: Compute Engine, GKE, and Cloud Run — the lesson that teaches this.

Question 12Planning and implementing a cloud solution

A self-managed database on Compute Engine needs about 250,000 sustained random IOPS on a single volume. The team wants to raise IOPS later without paying for extra capacity, and the data must survive a host failure. The VM's machine series supports both Persistent Disk and Hyperdisk. Which disk should you attach?

Choose one.

  • a
    Hyperdisk Balanced with provisioned IOPS

    Hyperdisk Balanced does let you provision IOPS separately from capacity, but its per-volume ceiling (160,000 IOPS) is below the 250,000 required.

  • b
    Hyperdisk Extreme with provisioned IOPS Correct

    Hyperdisk Extreme provisions IOPS independently of capacity, supports up to 350,000 IOPS per volume, and is durable network storage that survives a host failure.

  • c
    Extreme Persistent Disk (pd-extreme)

    pd-extreme offers provisioned IOPS but tops out around 120,000 IOPS per disk, well short of the requirement.

  • d
    Local SSD disks attached to the VM

    Local SSD reaches very high IOPS, but it comes in fixed 375 GiB disks, so performance grows only by adding capacity, and its data is lost if the host fails.

The concept

Hyperdisk provisions IOPS and throughput independently of capacity, and each Hyperdisk type has its own ceiling: Balanced for general workloads (up to 160,000 IOPS), Extreme for the highest-IOPS databases (up to 350,000), Throughput for sequential throughput.

Why that’s the answer

Three requirements decide: about 250,000 IOPS on one volume, performance adjustable without buying capacity, and durability through a host failure. Hyperdisk Extreme meets all three. Hyperdisk Balanced is the near-twin with the same independent provisioning model, but its per-volume ceiling is lower. pd-extreme also caps far lower, and Local SSD scales only by adding fixed-size disks and loses data when the host fails.

How to reason it out
  1. Quantify the need: about 250,000 IOPS on one volume, durable data.
  2. Prefer Hyperdisk, which provisions performance separately from capacity.
  3. Compare per-volume ceilings: Balanced 160,000, Extreme 350,000.
  4. Attach Hyperdisk Extreme and set its provisioned IOPS.

Exam tip: Highest-IOPS durable block storage tuned independently of size is Hyperdisk Extreme; Hyperdisk Balanced caps lower and Local SSD is tied to the host.

Choosing and Deploying Compute: Compute Engine, GKE, and Cloud Run — the lesson that teaches this.

Question 13Planning and implementing a cloud solution

You are creating a Compute Engine VM with attached NVIDIA GPUs for a multi-day training job that checkpoints to Cloud Storage every 30 minutes and resumes from the latest checkpoint at boot. Host maintenance events will happen during the job, and the job should continue after them with no one intervening. Which scheduling flags should you use?

Choose one.

  • a
    --maintenance-policy=MIGRATE --restart-on-failure

    VMs with attached GPUs do not support live migration, so MIGRATE is not a valid maintenance policy for this VM.

  • b
    --provisioning-model=SPOT --instance-termination-action=STOP

    Spot does not avoid host maintenance; it adds preemption at any time, and a stopped Spot VM is not restarted for you.

  • c
    --maintenance-policy=TERMINATE --no-restart-on-failure

    TERMINATE is right for a GPU VM, but with automatic restart disabled the VM stays stopped after maintenance until someone starts it.

  • d
    --maintenance-policy=TERMINATE --restart-on-failure Correct

    GPU VMs must terminate for host maintenance, and automatic restart brings the VM back afterwards so the job resumes from its checkpoint.

The concept

A VM's availability policy sets its host-maintenance behaviour (MIGRATE to live-migrate, or TERMINATE) and whether Compute Engine restarts it automatically after it is stopped by maintenance or a failure. VMs with attached GPUs cannot live-migrate.

Why that’s the answer

Two facts combine. First, GPU VMs cannot live-migrate, so the maintenance policy must be TERMINATE. Second, only automatic restart brings the VM back without a person, and the checkpoint-on-boot design then resumes the job. TERMINATE without restart is the near-twin that leaves the VM stopped, and Spot adds interruptions instead of avoiding them.

How to reason it out
  1. Note the GPU: live migration is not supported, so MIGRATE is out.
  2. Set the maintenance policy to TERMINATE.
  3. Keep automatic restart enabled so Compute Engine restarts the VM after maintenance.
  4. Rely on the boot-time checkpoint resume for the job itself.

Exam tip: GPU VMs cannot live-migrate: use TERMINATE with automatic restart, and checkpoint the workload.

Choosing and Deploying Compute: Compute Engine, GKE, and Cloud Run — the lesson that teaches this.

Domain 3: Ensuring the successful operation of a cloud solution

30% of the ACE exam, so 7 of the 25 questions on this page.

Question 14Ensuring the successful operation of a cloud solution

A batch reporting job runs every weekend on a dedicated node pool named batch-pool in a zonal GKE Standard cluster. Ahead of a quarter-end run, the team asks you to grow that node pool from 3 nodes to 8 nodes now, before the job starts. Which command achieves this?

Choose one.

  • a
    kubectl scale nodes batch-pool --replicas=8

    kubectl scale changes replica counts of workload objects such as Deployments and StatefulSets; nodes are infrastructure that GKE manages.

  • b
    gcloud compute instance-groups managed resize batch-pool --size=8

    The pool is backed by a managed instance group, but resizing that group directly goes around GKE, and GKE can undo or conflict with the change.

  • c
    gcloud container clusters resize CLUSTER_NAME --node-pool=batch-pool --num-nodes=8 Correct

    clusters resize with --node-pool sets that pool to the requested node count through the GKE API.

  • d
    gcloud container node-pools update batch-pool --cluster=CLUSTER_NAME --enable-autoscaling --max-nodes=8

    Autoscaling sets bounds but adds nodes only when Pods are unschedulable, so it would not have 8 nodes ready before the job starts.

The concept

Manual node pool scaling in GKE is done with gcloud container clusters resize, which changes the node count of a named pool through the GKE control plane.

Why that’s the answer

gcloud container clusters resize CLUSTER --node-pool=batch-pool --num-nodes=8 tells GKE to bring that pool to 8 nodes straight away. kubectl cannot scale nodes, resizing the underlying managed instance group bypasses GKE's ownership of it, and autoscaling only reacts to Pending Pods, so it would not pre-provision capacity. In a regional or multi-zonal cluster, --num-nodes is per zone, which is why the stem specifies a zonal cluster.

How to reason it out
  1. Run gcloud container clusters resize CLUSTER_NAME --node-pool=batch-pool --num-nodes=8 --zone=ZONE.
  2. Watch the new nodes register with kubectl get nodes until 8 batch-pool nodes are Ready.
  3. After quarter-end, resize back to 3 (or enable autoscaling) to stop paying for idle nodes.

Exam tip: Scale a node pool manually with gcloud container clusters resize --node-pool --num-nodes, never by resizing its managed instance group; in regional clusters the count is per zone.

Managing Compute Engine, GKE, and Cloud Run: Day-2 Operations — the lesson that teaches this.

Question 15Ensuring the successful operation of a cloud solution

During business hours, Pods in your zonal GKE Standard cluster sit in Pending because the single node pool has no free capacity; at night most nodes are nearly idle. You want capacity to follow demand between 2 and 10 nodes without anyone running commands. What should you configure?

Choose one.

  • a
    Create a HorizontalPodAutoscaler with minReplicas=2 and maxReplicas=10 for the node pool's workloads.

    An HPA changes Pod replica counts, not nodes; extra replicas on a full pool simply join the Pending queue.

  • b
    Configure a VerticalPodAutoscaler in Auto mode for the workloads on the node pool.

    VPA resizes Pod requests; it neither adds nodes for Pending Pods nor removes idle nodes.

  • c
    Create a Cloud Scheduler job that resizes the node pool between 2 and 10 nodes.

    A timed resize follows the clock, not demand, and it is a job someone has to maintain.

  • d
    Enable autoscaling on the node pool with --min-nodes=2 and --max-nodes=10. Correct

    The cluster autoscaler adds nodes when Pods are unschedulable and removes underused nodes, within the min/max bounds.

The concept

GKE's cluster autoscaler works per node pool: it adds nodes when Pods cannot be scheduled and removes nodes whose Pods fit elsewhere, within configured bounds.

Why that’s the answer

Node pool autoscaling reacts to exactly the signals described: Pending Pods trigger scale-up during the day and idle nodes are consolidated away at night. HPA and VPA act on Pods, not nodes, and a scheduled resize is a guess rather than demand-driven scaling.

How to reason it out
  1. Enable it: gcloud container node-pools update POOL --cluster=CLUSTER --enable-autoscaling --min-nodes=2 --max-nodes=10 --zone=ZONE.
  2. Make sure workloads declare resource requests, because the autoscaler simulates scheduling from requests.
  3. Watch scale events and kubectl get nodes over a daily cycle.

Exam tip: Pending Pods plus idle off-peak nodes call for node pool autoscaling; HPA and VPA only change Pods.

Managing Compute Engine, GKE, and Cloud Run: Day-2 Operations — the lesson that teaches this.

Question 16Ensuring the successful operation of a cloud solution

You are deploying a three-member clustered database on GKE. Each member must keep its own persistent volume across restarts, be reachable at a stable, predictable DNS name (db-0, db-1, db-2), and start only after the previous member is ready. Which configuration should you apply?

Choose one.

  • a
    A Deployment with 3 replicas, one PersistentVolumeClaim and a headless Service.

    Deployment Pods get random names, share the one claim instead of each having its own, and start in parallel.

  • b
    A Deployment with 3 replicas, volumeClaimTemplates and a LoadBalancer Service.

    volumeClaimTemplates is a StatefulSet field, not a Deployment field, and a LoadBalancer Service gives one external IP rather than per-Pod DNS names.

  • c
    A StatefulSet with 3 replicas, volumeClaimTemplates and a headless Service. Correct

    StatefulSets give ordinal Pod names, a claim per replica from volumeClaimTemplates, per-Pod DNS through the headless Service, and ordered startup.

  • d
    A StatefulSet with 3 replicas, one PersistentVolumeClaim and a ClusterIP Service.

    Names and ordering are right, but a single shared claim does not give each member its own volume, and a ClusterIP Service load-balances instead of giving per-Pod DNS records.

The concept

StatefulSets run workloads where identity matters: each replica gets a sticky ordinal name, its own PersistentVolumeClaim from volumeClaimTemplates, a DNS record through a headless Service, and ordered creation.

Why that’s the answer

The three requirements map to three StatefulSet pieces: volumeClaimTemplates create one claim per member that follows it across rescheduling; the headless Service (clusterIP: None) publishes db-0.db, db-1.db and so on; and the default OrderedReady policy starts each Pod after the previous one is Ready. The near-twin StatefulSet with one shared claim and a ClusterIP Service gets the names but not per-member storage or per-Pod DNS. Deployments treat replicas as interchangeable and have no volumeClaimTemplates field.

How to reason it out
  1. Map each requirement: own volume, stable DNS name, ordered start.
  2. Own volume per replica means volumeClaimTemplates, which only StatefulSets have.
  3. Stable per-Pod DNS means a headless Service named in the StatefulSet's serviceName.
  4. Apply and watch db-0 become Ready before db-1 starts with kubectl get pods -w.

Exam tip: Own volume + stable name + ordered start = StatefulSet with volumeClaimTemplates and a headless Service.

Managing Compute Engine, GKE, and Cloud Run: Day-2 Operations — the lesson that teaches this.

Question 17Ensuring the successful operation of a cloud solution

A stateless API Deployment on GKE runs a fixed 4 replicas. At lunchtime traffic triples and the Pods saturate their CPU, while overnight 4 copies are wasteful. You want the number of running Pods to follow load so that average CPU stays near 60% of what each Pod requests. What should you create?

Choose one.

  • a
    A HorizontalPodAutoscaler with a 60% CPU utilization target. Correct

    An HPA adds or removes replicas to keep average CPU, measured against Pod requests, near the target.

  • b
    A VerticalPodAutoscaler in Auto mode for the Deployment's CPU requests.

    VPA changes each Pod's requests and evicts Pods to apply them; it does not change the replica count.

  • c
    Node pool autoscaling with --min-nodes=2 and --max-nodes=12.

    The cluster autoscaler adds nodes for unschedulable Pods; with a fixed 4 replicas nothing becomes unschedulable, so nothing scales.

  • d
    A PodDisruptionBudget with minAvailable set to 60% of replicas.

    A PDB limits voluntary evictions during maintenance; it plays no part in scaling with load.

The concept

The HorizontalPodAutoscaler scales a workload's replica count to hold a metric, most often CPU utilisation as a percentage of Pod requests, near a target.

Why that’s the answer

An HPA with a 60% CPU target adds replicas as lunchtime load pushes utilisation up and removes them overnight, within minReplicas and maxReplicas. VPA right-sizes requests instead of adding Pods, node autoscaling only reacts to Pending Pods, and a PodDisruptionBudget governs evictions.

How to reason it out
  1. Check the containers declare CPU requests; HPA percentages are computed against them.
  2. Create it: kubectl autoscale deployment api --cpu-percent=60 --min=2 --max=12.
  3. Watch kubectl get hpa under load to confirm scale-out and scale-in.

Exam tip: Replica count that follows load = HPA, and its CPU percentage is measured against Pod requests.

Managing Compute Engine, GKE, and Cloud Run: Day-2 Operations — the lesson that teaches this.

Question 18Ensuring the successful operation of a cloud solution

Your GKE workloads run with guessed CPU and memory requests: some containers are over-provisioned, others are throttled. You want usage-based request values for each container. Production policy says automation must never evict Pods, and every change to a request must ship as a reviewed manifest through the CI/CD pipeline. What should you do?

Choose one.

  • a
    Create VPA objects with updateMode "Off" and copy the recommendations into the manifests. Correct

    Off mode runs the recommender and publishes targets in the VPA status but never evicts or mutates Pods, so the only changes are the ones you ship.

  • b
    Create VPA objects with updateMode "Auto" and copy the recommendations into the manifests.

    Auto mode applies recommendations itself by evicting and recreating Pods, which the policy forbids.

  • c
    Create VPA objects with updateMode "Initial" and copy the recommendations into the manifests.

    Initial never evicts, but it rewrites requests at Pod admission, so running Pods get values that never went through the reviewed manifest.

  • d
    Create a HorizontalPodAutoscaler on memory and copy its target into the manifests.

    An HPA changes replica counts; it produces no per-container request values.

The concept

The VerticalPodAutoscaler recommends per-container requests from observed usage. Its updateMode decides what it does with them: Off only recommends, Initial applies them when Pods are created, Auto (or Recreate) evicts Pods to apply them.

Why that’s the answer

Two constraints decide this. No evictions rules out Auto. Requests changing only through reviewed manifests rules out Initial, the tempting choice: it does not evict, but its admission webhook overwrites the manifest's requests whenever a Pod is created, so production would run unreviewed values. Off mode gives the same recommendations (kubectl describe vpa) with no mutation at all, and the pipeline applies them.

How to reason it out
  1. List what each mode does: Off recommends, Initial mutates at creation, Auto evicts and mutates.
  2. Apply the no-eviction rule: Auto is out.
  3. Apply the reviewed-manifest rule: Initial changes requests outside the pipeline, so it is out.
  4. Use Off, read the targets with kubectl describe vpa, and ship them through CI/CD.

Exam tip: VPA Off = recommendations only; Initial still changes Pods (at creation) and Auto evicts.

Managing Compute Engine, GKE, and Cloud Run: Day-2 Operations — the lesson that teaches this.

Question 19Ensuring the successful operation of a cloud solution

A team moved a service from GKE Standard to an Autopilot cluster using the same manifests. Each container requests 2 vCPU and 8 GiB of memory, but Cloud Monitoring shows steady use of about 0.4 vCPU and 1.5 GiB. Finance asks you to lower the service's compute cost without reducing the number of replicas. What should you do?

Choose one.

  • a
    Edit the cluster's node pool to use a smaller machine type for these Pods.

    Autopilot manages nodes for you; there is no node pool to edit, and you are not billed per node for these Pods.

  • b
    Enable cluster autoscaling with a lower --max-nodes value on the cluster.

    Autopilot provisions capacity itself from Pod requests; node autoscaling bounds are a Standard-mode control.

  • c
    Lower each container's CPU and memory requests toward the observed usage. Correct

    Autopilot bills general-purpose Pods for what they request, so requests close to real use (plus headroom) cut the bill directly.

  • d
    Lower each container's CPU and memory limits to observed usage, keeping the requests.

    Autopilot bills general-purpose Pods on requests, not limits, so the bill would not change; and a limit below its request is invalid in Kubernetes, so the Pods would be rejected.

The concept

In GKE Autopilot, Google provisions and manages nodes, and general-purpose Pods are billed for their CPU, memory and ephemeral-storage requests. Autopilot applies defaults when requests are missing and adjusts values outside its allowed ranges.

Why that’s the answer

The service is paying for 2 vCPU and 8 GiB per container while using a fraction of it, and in Autopilot the request is what you pay for. Lowering requests toward observed use (with headroom) is the cost lever. Node pools and node autoscaling are Standard-mode controls that Autopilot does not expose. Lowering limits while keeping requests is the tempting near-twin, but billing follows requests, and Kubernetes rejects a limit set below its request.

How to reason it out
  1. Recall the Autopilot cost model: you pay for Pod requests, not nodes.
  2. Compare requests to observed usage from Cloud Monitoring or VPA recommendations.
  3. Set new requests with headroom and redeploy; check the admitted Pod spec for any Autopilot adjustment.

Exam tip: In Autopilot, Pod requests are the bill: right-size the requests, not the limits, because there are no nodes to resize.

Managing Compute Engine, GKE, and Cloud Run: Day-2 Operations — the lesson that teaches this.

Question 20Ensuring the successful operation of a cloud solution

Your production API runs on Cloud Run, and the service is set to send all traffic to the latest revision. You must ship version 2 so it is fully deployed and reachable for QA at its own URL, but it must receive no production traffic until QA approves. What should you do?

Choose one.

  • a
    Run gcloud run deploy with --tag=qa, then run update-traffic after QA approves.

    A tag gives the revision its own URL, but because the service follows the latest revision, the deploy still moves 100% of production traffic to version 2 straight away.

  • b
    Deploy version 2 as a new service named api-v2 and repoint DNS after QA approves.

    This keeps production safe but duplicates the service and loses revision-level traffic control and one-command rollback.

  • c
    Run gcloud run deploy as usual and leave the new revision at its default 0% share.

    There is no default 0% share: a normal deploy to a service that follows the latest revision sends it all traffic.

  • d
    Run gcloud run deploy with --no-traffic --tag=qa, then run update-traffic later. Correct

    --no-traffic creates the revision at 0% while the current revision keeps serving, --tag=qa gives QA a dedicated URL, and update-traffic performs the release.

The concept

Every Cloud Run deployment creates an immutable revision, and the service's traffic settings decide each revision's share. --no-traffic separates deploying a revision from releasing it.

Why that’s the answer

Deploying with --no-traffic --tag=qa stands up version 2 at a tag URL such as https://qa---api-HASH-REGION.a.run.app while the current revision keeps 100% of production traffic. After QA, gcloud run services update-traffic api --to-latest (or a percentage split) releases it. The tempting near-twin uses --tag alone: the tag URL appears, but the deploy still shifts all traffic because the service follows the latest revision. A separate service works but forfeits revision traffic control.

How to reason it out
  1. Deploy: gcloud run deploy api --image=IMAGE --no-traffic --tag=qa.
  2. QA tests the qa--- tag URL.
  3. Release: gcloud run services update-traffic api --to-latest, or --to-revisions for a gradual split.
  4. Roll back by sending traffic to the previous revision.

Exam tip: A tag only adds a URL; --no-traffic is what keeps a new Cloud Run revision at 0%.

Managing Compute Engine, GKE, and Cloud Run: Day-2 Operations — the lesson that teaches this.

Domain 4: Configuring access and security

20% of the ACE exam, so 5 of the 25 questions on this page.

Question 21Configuring access and security

Your data science team of 12 people needs the same three predefined roles on a project, and team membership changes monthly. Following Google-recommended practices, how should you manage their access?

Choose one.

  • a
    Grant the three predefined roles to each of the 12 users and update the bindings as membership changes

    This works but creates 36 bindings and forces an IAM policy edit for every joiner and leaver, which is what group-based access avoids.

  • b
    Grant the three predefined roles to a Google group and add or remove people through group membership Correct

    Correct. Joiners and leavers change only the group's membership; the project's IAM policy stays the same, and access reviews read one binding per role.

  • c
    Create a custom role combining the three predefined roles and grant it to each of the 12 people

    Bundling the roles reduces the number of bindings but still binds individuals, so every membership change is still an IAM policy edit, and the custom role must now be maintained by hand.

  • d
    Grant the three predefined roles to the company's domain:example.com principal on the project

    domain: grants the roles to every account in the company, far more than the 12 people on the team.

The concept

Google recommends granting roles to Google groups that represent job functions rather than to individual users.

Why that’s the answer

When the same access goes to a changing set of people, the group is the stable principal. Binding roles to the group means membership changes happen in Google Groups or Cloud Identity, not in IAM. Per-user bindings and a per-user custom role both keep individuals in the policy. The domain principal avoids churn but grants access to the whole company.

How to reason it out
  1. Notice the same roles for many people and frequent membership changes.
  2. Choose a principal that stays constant: a Google group.
  3. Reject options that bind individuals or widen access to the whole domain.

Exam tip: Same access for a changing team: grant to a group, manage people through membership.

Managing Cloud IAM: Roles, Policies, and Inheritance — the lesson that teaches this.

Question 22Configuring access and security

A teammate proposes granting roles/storage.objectViewer to allAuthenticatedUsers on a Cloud Storage bucket so that only signed-in company staff can download its files. No organization policy restricts public access on the bucket. Who would actually be able to read the objects?

Choose one.

  • a
    Only accounts in your company's Cloud Identity or Google Workspace domain that are signed in

    allAuthenticatedUsers is not limited to your domain. To limit access to company accounts you would grant the role to domain:example.com or a group.

  • b
    Only principals that already hold another IAM role somewhere in the bucket's project

    The special principal does not check for other bindings in the project; it matches every authenticated Google identity.

  • c
    Anyone on the internet, including visitors who are not signed in to any account

    That describes allUsers. allAuthenticatedUsers does require the caller to be authenticated.

  • d
    Anyone signed in with any Google account or service account, including personal accounts Correct

    Correct. allAuthenticatedUsers matches every authenticated Google identity worldwide, so it is effectively public for anyone with a free Google account.

The concept

allUsers and allAuthenticatedUsers are special principals. allUsers is anyone; allAuthenticatedUsers is any authenticated Google identity, not just your organization.

Why that’s the answer

The name suggests 'our logged-in users', but allAuthenticatedUsers covers every Google account and service account, including personal Gmail accounts. That makes it public in practice. To limit access to company staff, grant the role to the company's domain: principal or, better, a group. The allUsers twin differs only in also allowing unauthenticated callers.

How to reason it out
  1. Read the principal literally: all authenticated Google identities.
  2. Recall that this is not scoped to a domain or project.
  3. Distinguish it from allUsers, which includes unauthenticated callers.
  4. Use domain: or group: to limit access to staff.

Exam tip: allAuthenticatedUsers is anyone with a Google account: treat it as public.

Managing Cloud IAM: Roles, Policies, and Inheritance — the lesson that teaches this.

Question 23Configuring access and security

An internal security auditor must review the allow policies and security-relevant configuration on every project, folder and resource in your organization. They need the least privilege necessary and must not be able to change anything or read application data. Which grant best fits?

Choose one.

  • a
    roles/iam.securityReviewer on the organization Correct

    Correct. Security Reviewer lets a principal list resources and read the allow policies on them, without permission to change policies or read data. Granted on the organization, it is inherited by every folder, project and resource.

  • b
    roles/iam.securityAdmin on the organization

    Security Admin can get and also set any IAM policy, which gives the auditor the power to change access.

  • c
    roles/viewer on the organization

    The basic Viewer role is read-only but spans nearly every service, including reading much application data, which is more than an audit of policies needs.

  • d
    roles/iam.organizationRoleViewer on the organization

    Organization Role Viewer reads the custom role definitions in the organization; it does not cover listing resources and reading the allow policies attached to them.

The concept

IAM has dedicated roles for administering and reviewing access; choosing between them is a least-privilege decision.

Why that’s the answer

The auditor's job is to read who has access to what across the organization. Security Reviewer is built for that: it lists resources and reads their allow policies, and it cannot change them. Granting it on the organization covers every descendant through inheritance. Security Admin adds write access, basic Viewer reads application data across services, and Organization Role Viewer reads role definitions rather than policies.

How to reason it out
  1. Identify the job: read policies and security settings everywhere, change nothing.
  2. Pick the role made for read-only access review: Security Reviewer.
  3. Grant it at the organization so inheritance covers everything.
  4. Reject roles that can write, that read data, or that cover only role definitions.

Exam tip: Read-only access review across an org: roles/iam.securityReviewer on the organization.

Managing Cloud IAM: Roles, Policies, and Inheritance — the lesson that teaches this.

Question 24Configuring access and security

You want a teammate to be able to grant and revoke IAM roles for other users on the project billing-api. They must not be able to change IAM on other projects or on individual resources such as service accounts, must not create custom roles, and must not get the full powers of Owner. Which grant meets these requirements with least privilege?

Choose one.

  • a
    roles/iam.roleAdmin on the billing-api project

    Role Administrator creates and edits custom role definitions in the project; it does not include permission to set the project's allow policy.

  • b
    roles/resourcemanager.folderIamAdmin on the folder that contains billing-api

    Folder IAM Admin administers the folder's allow policy, which then applies to every project in the folder, not only billing-api.

  • c
    roles/resourcemanager.projectIamAdmin on the billing-api project Correct

    Correct. Project IAM Admin grants getIamPolicy and setIamPolicy on the project, which is exactly what granting and revoking roles there needs.

  • d
    roles/iam.securityAdmin on the billing-api project

    Security Admin can get and set any IAM policy, including those on individual resources and service accounts, which is broader than the project-level access required.

The concept

Administering who has access is separate from using services. Project IAM Admin is the narrow role for managing a project's allow policy.

Why that’s the answer

Three options would let the teammate change access on billing-api, so least privilege and scope decide. Project IAM Admin holds the project getIamPolicy and setIamPolicy permissions and nothing else significant. Security Admin works too but can set IAM policies on any resource, which is broader. Folder IAM Admin on the parent changes the folder's policy, which reaches every project in the folder. Role Administrator manages role definitions, not who holds them.

How to reason it out
  1. Identify the action: change the project's allow policy.
  2. List the roles that can do it: projectIamAdmin, securityAdmin, folderIamAdmin on the parent.
  3. Apply scope: only billing-api, so not the folder.
  4. Apply least privilege: projectIamAdmin over securityAdmin.

Exam tip: To let someone manage a project's access only, grant roles/resourcemanager.projectIamAdmin on that project.

Managing Cloud IAM: Roles, Policies, and Inheritance — the lesson that teaches this.

Question 25Configuring access and security

Six months ago you copied the permission list of a predefined role into an organization-level custom role. Google has since added new features to the service. Users holding the custom role cannot use the new features, while users holding the predefined role can. What is the cause?

Choose one.

  • a
    The new permissions are at the TESTING support level, which IAM ignores in custom roles

    TESTING permissions can be included in custom roles and do take effect; the level warns that their behaviour may change. It does not explain a role that never received the permissions.

  • b
    The custom role keeps only the permissions it was created with until someone edits it Correct

    Correct. Google adds new permissions to its predefined roles as services evolve, but a custom role is a fixed list that changes only when you update it.

  • c
    The custom role's launch stage is BETA, so IAM withholds permissions added after creation

    Launch stages are informational except DISABLED; a BETA role grants everything in its list, and there is no rule about permissions added after creation.

  • d
    Organization-level custom roles receive new permissions only after the next weekly IAM sync

    No such sync exists. A custom role's permission list is changed only by an explicit update.

The concept

Predefined roles are maintained by Google; custom roles are maintained by you.

Why that’s the answer

A custom role is a static list. Copying a predefined role takes a snapshot of its permissions at that moment, and IAM never links the two afterwards. When Google adds permissions for new features, the predefined role gets them and the custom role does not. Support levels and launch stages are real custom-role properties, which is why they make tempting distractors, but neither explains a snapshot falling behind.

How to reason it out
  1. Compare the two roles: the predefined one works, the custom one does not.
  2. Recall who maintains each: Google versus you.
  3. Conclude the custom role lacks the new permissions until you add them.

Exam tip: Copied custom roles go stale: you must add new permissions yourself.

Managing Cloud IAM: Roles, Policies, and Inheritance — the lesson that teaches this.

Keep going with ACE

ACE practice by domain

ACE sample questions: your questions

No. Real exam questions are confidential. These are original questions written to the skills in the official ACE exam guide, so they test the same knowledge in the same style without being copies of the exam.

Source

The domains and weights on this page come from the official ACE exam guide.