SaveMyCert
Log in
5 of 5 free questions left today·for 30 a day
DEA-C01 practice

DEA-C01 sample questions — 25 answered and explained

25 DEA-C01 sample questions written to the official AWS Certified Data Engineer – Associate 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 DEA-C01 practice pages.

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

Domain 1: Data Ingestion and Transformation

34% of the DEA-C01 exam, so 9 of the 25 questions on this page.

Question 1Data Ingestion and Transformation

When new objects land in an Amazon S3 bucket, a data engineer must start an AWS Glue workflow, invoke an AWS Lambda function and send a message to another team's Amazon SQS queue. Routing must filter on object size and key, and after an outage the team must be able to re-deliver the past day's events. Which configuration meets these requirements with the LEAST operational overhead?

Choose one.

  • a
    S3 Event Notifications on the bucket listing the workflow, function and queue

    S3 Event Notifications deliver only to Lambda, SQS, SNS and EventBridge, cannot send overlapping events to several destinations, filter only on key prefix and suffix, and keep no archive.

  • b
    S3 Event Notifications to an Amazon SQS queue that a Lambda relay routes onward

    A relay function could reach every target, but it is custom code to maintain, filtering stays prefix/suffix only, and consumed messages cannot be re-delivered.

  • c
    S3 Event Notifications to an Amazon SNS topic routing to the three targets

    SNS can fan out to Lambda and SQS, but a Glue workflow is not an SNS subscriber type, and a standard topic keeps no archive to replay.

  • d
    Amazon EventBridge notifications on the bucket, with rules routing to each target Correct

    With EventBridge enabled on the bucket, rules can match on object size and key, send to Glue workflows, Lambda and SQS, and an archive on the bus allows past events to be replayed.

The concept

S3 can publish object events to Amazon EventBridge, which adds content-based filtering on event fields, many targets per event, and archive and replay.

Why that’s the answer

Three requirements point to EventBridge: a Glue workflow target, filtering beyond prefix and suffix (object size), and re-delivering past events (archive and replay). Native S3 notifications cannot target Glue or replay, SNS cannot deliver to a Glue workflow and has no archive on standard topics, and a relay Lambda adds code without solving filtering or replay.

How to reason it out
  1. List the targets: Glue workflow, Lambda, SQS.
  2. List the extras: filtering on object size and re-delivery of past events.
  3. Eliminate S3-notification designs: prefix/suffix filters only and no archive.
  4. Choose EventBridge notifications with rules and an archive.

Exam tip: Many targets, rich filters or replay for S3 events means EventBridge notifications, not plain S3 Event Notifications.

Data Ingestion on AWS: Kinesis, MSK, DMS, Glue, and Batch Patterns — the lesson that teaches this.

Question 2Data Ingestion and Transformation

An AWS Lambda function consumes a 4-shard Amazon Kinesis data stream through an event source mapping. Iterator age keeps growing and CloudWatch shows only 4 concurrent executions. The producers cannot be changed, so the shard count stays at 4, and per-batch duration is already optimized. What should the data engineer change to process records faster?

Choose one.

  • a
    Raise the function's reserved concurrency to 100

    Reserved concurrency only caps or guarantees capacity; the event source mapping still runs one batch per shard at a time, so concurrency stays at 4.

  • b
    Raise the event source mapping's parallelization factor Correct

    The parallelization factor (1 to 10) lets the mapping process up to 10 batches per shard concurrently while keeping order per partition key, so 4 shards can drive up to 40 concurrent invocations.

  • c
    Raise the event source mapping's batching window to 300 seconds

    A longer batching window makes Lambda wait longer to fill each batch, which increases latency instead of adding concurrency.

  • d
    Register the function as an enhanced fan-out consumer

    Enhanced fan-out gives the consumer dedicated read throughput, but the bottleneck is processing concurrency, which stays at one batch per shard.

The concept

For a Kinesis event source mapping, concurrent invocations equal shards multiplied by the parallelization factor (default 1, maximum 10).

Why that’s the answer

Four concurrent executions on four shards shows the mapping is processing one batch per shard. Raising the parallelization factor is the only option that adds concurrency without resharding. Reserved concurrency does not change how the mapping reads shards, enhanced fan-out speeds reads rather than processing, and a longer batching window adds delay.

How to reason it out
  1. Read the symptom: concurrency equals the shard count and iterator age grows.
  2. Recall that the mapping runs one batch per shard unless the parallelization factor is raised.
  3. Since shards cannot be added, raise the parallelization factor.

Exam tip: Kinesis-to-Lambda concurrency = shards x parallelization factor; reserved concurrency does not raise it.

Data Ingestion on AWS: Kinesis, MSK, DMS, Glue, and Batch Patterns — the lesson that teaches this.

Question 3Data Ingestion and Transformation

A Lambda function processing an Amazon Kinesis data stream occasionally receives a malformed record that makes the whole batch fail. The event source mapping retries the batch until the records expire, blocking newer records in that shard. The team must isolate bad records, keep their details for investigation and keep the shard moving. Which event source mapping configuration should they use?

Choose one.

  • a
    Turn on bisect on error, cap retry attempts, and add an on-failure destination Correct

    Bisecting splits the failing batch until the bad record is isolated, the retry cap stops endless retries, and the on-failure destination receives the failed batch details so processing continues.

  • b
    Turn on bisect on error, keep retries unlimited, and add an on-failure destination

    With unlimited retries the isolated bad record is still retried until it expires, so the shard stays blocked and the destination receives nothing until then.

  • c
    Cap retry attempts, add an on-failure destination, and raise the batch size to 1,000

    Without bisecting, every retry fails the whole batch, so the good records in it are discarded to the destination along with the bad one.

  • d
    Turn on bisect on error and set a dead-letter queue on the Lambda function

    A function-level dead-letter queue applies to asynchronous invocations; stream event source mappings invoke synchronously and use their own on-failure destination.

The concept

A failing batch on a stream event source mapping blocks its shard until it succeeds or expires; bisecting, bounding retries and an on-failure destination isolate and divert poison records.

Why that’s the answer

All three controls are needed together. Bisect on error narrows the failure to the bad record, maximum retry attempts (or maximum record age) stops the retries, and an on-failure destination (SQS, SNS or S3) keeps details of what was skipped. Leaving retries unlimited still blocks the shard, skipping bisect discards good records, and a function DLQ does not apply to stream invocations.

How to reason it out
  1. Identify the problem: one poison record blocks the shard through endless retries.
  2. Isolate the record: bisect batch on function error.
  3. Bound the retries: maximum retry attempts or maximum record age.
  4. Keep the evidence: an on-failure destination on the event source mapping, not a function DLQ.

Exam tip: For poison records on a Kinesis-to-Lambda mapping: bisect on error, cap retries, and set an on-failure destination on the mapping.

Data Ingestion on AWS: Kinesis, MSK, DMS, Glue, and Batch Patterns — the lesson that teaches this.

Question 4Data Ingestion and Transformation

An IoT platform sends small telemetry records to an Amazon Kinesis data stream at a modest, steady rate. A Lambda consumer with a batch size of 100 is invoked with only one or two records each time, driving up invocation count and cost. Results may be delayed by up to a minute. Which event source mapping change reduces cost MOST directly?

Choose one.

  • a
    Raise the parallelization factor of the mapping to 10

    More concurrent batches per shard means more invocations, each still carrying a record or two.

  • b
    Raise the batch size to 1,000 and keep the batching window at 0

    With no batching window, Lambda invokes as soon as records are available, so at a low rate batches stay tiny however large the batch size is.

  • c
    Raise the maximum batching window of the mapping to 60 seconds Correct

    A batching window makes Lambda gather records for up to that many seconds (or until the batch size or 6 MB payload is reached) before invoking, so each invocation carries many records.

  • d
    Register the function as an enhanced fan-out consumer

    Enhanced fan-out pushes records with lower latency and adds per-consumer charges; it does not make batches larger.

The concept

A Kinesis event source mapping invokes when the batch size is reached, the batching window expires, or the payload reaches 6 MB; with a window of 0 it invokes as soon as records arrive.

Why that’s the answer

The batch size is already larger than what arrives, so the limiting setting is the batching window. Setting it to 60 seconds (within the allowed delay) lets each invocation carry far more records. Raising the batch size alone changes nothing at a low arrival rate, and parallelization or enhanced fan-out increase invocations or cost.

How to reason it out
  1. Notice that batches are tiny even though batch size allows 100 records.
  2. Recall that with a batching window of 0 Lambda invokes as soon as any records are available.
  3. Use the allowed delay: raise the maximum batching window.

Exam tip: At low record rates, batch size alone does not batch; the batching window does.

Data Ingestion on AWS: Kinesis, MSK, DMS, Glue, and Batch Patterns — the lesson that teaches this.

Question 5Data Ingestion and Transformation

Producers writing to a provisioned Amazon Kinesis data stream with 8 shards receive ProvisionedThroughputExceededException errors, always from the same two shards, while the stream as a whole runs well below its total write capacity. Every record uses the customer's country code as its partition key. What is the MOST likely cause, and the fix?

Choose one.

  • a
    Too few shards overall; double the stream to 16 shards with UpdateShardCount

    Doubling shards raises total capacity, but each country code still hashes to one shard, so the busiest countries keep overloading their shards.

  • b
    Too few distinct keys; use a high-cardinality key such as the customer ID Correct

    A handful of large countries map to the same few shards; a high-cardinality key spreads records evenly across all shards.

  • c
    Slow consumers on those shards; register enhanced fan-out consumers

    This is a write-side error; consumer read throughput does not affect whether producers are throttled.

  • d
    Too many API calls; switch the producers from PutRecord to PutRecords

    PutRecords cuts request overhead, but every record still counts against the same hot shard's write limit.

The concept

Kinesis assigns each record to a shard by hashing its partition key; a low-cardinality key concentrates traffic on a few shards (hot shards).

Why that’s the answer

Throttling on the same shards while total capacity is unused is the signature of a hot shard. Country codes are few and skewed, so the biggest countries hash to the same shards. A high-cardinality key spreads writes. More shards, enhanced fan-out and PutRecords batching all leave the skew in place.

How to reason it out
  1. Read the symptom: throttling on specific shards, aggregate capacity unused.
  2. Inspect the partition key: country codes have low cardinality and skewed volumes.
  3. Fix the distribution with a high-cardinality key, not more capacity.

Exam tip: Throttled shards with spare total capacity point to a low-cardinality partition key; fix the key, not the shard count.

Data Ingestion on AWS: Kinesis, MSK, DMS, Glue, and Batch Patterns — the lesson that teaches this.

Question 6Data Ingestion and Transformation

A pipeline writes ingested events to an Amazon DynamoDB table in provisioned capacity mode; the table must stay provisioned because the company has bought reserved capacity for it. A few times a month an upstream backlog flushes at many times the normal write rate for about ten minutes, writes are throttled and events are lost. Events may be written up to 30 minutes late. Which solution is MOST appropriate?

Choose one.

  • a
    Turn on DynamoDB auto scaling for the table's write capacity

    Auto scaling reacts to CloudWatch alarms over several minutes and scales gradually, so a sudden burst is throttled before capacity catches up.

  • b
    Raise provisioned write capacity to the largest burst observed

    This prevents throttling but pays for peak capacity around the clock for bursts that last minutes a few times a month.

  • c
    Put an Amazon DynamoDB Accelerator (DAX) cluster in front of the table

    DAX is a write-through read cache: every write still goes to the table and consumes write capacity, so it does not absorb write bursts.

  • d
    Buffer the writes in an SQS queue and drain it into the table steadily Correct

    The queue absorbs the burst durably and a consumer writes at the provisioned rate, using the allowed 30-minute delay instead of capacity.

The concept

When bursts exceed a store's write capacity and some delay is acceptable, a durable queue in front of the store levels the load.

Why that’s the answer

The constraints rule out the easy fixes: the table stays provisioned, and peak provisioning wastes money. Auto scaling is too slow for a sudden burst, and DAX does not reduce write consumption because it writes through to the table. An SQS buffer stores the burst and lets a consumer write at a steady rate within the 30-minute tolerance.

How to reason it out
  1. Note the fixed constraints: provisioned mode, short sudden bursts, delay tolerated.
  2. Reject auto scaling (too slow for sudden bursts) and DAX (writes still hit the table).
  3. Reject peak provisioning on cost.
  4. Use the delay tolerance: buffer with SQS and write at a controlled rate.

Exam tip: Short write bursts plus tolerated delay: buffer in SQS and drain at a set rate; DAX does not absorb writes and auto scaling is too slow for spikes.

Data Ingestion on AWS: Kinesis, MSK, DMS, Glue, and Batch Patterns — the lesson that teaches this.

Question 7Data Ingestion and Transformation

Five independent applications read the same Amazon Kinesis data stream with GetRecords polling. Since the fourth and fifth applications were added, all of them see read throttling and their end-to-end latency has climbed to several seconds. Each application needs sub-second delivery without competing with the others. What should the data engineer do?

Choose one.

  • a
    Double the shard count so that each shard carries less data

    More shards reduce data per shard, but polling consumers still share each shard's read limits (five GetRecords calls per second), so contention and latency remain.

  • b
    Register each application as an enhanced fan-out consumer Correct

    Each enhanced fan-out consumer gets its own 2 MB/s per shard, pushed over HTTP/2 with roughly 70 ms latency, so consumers no longer compete.

  • c
    Shorten the polling interval in each application's client

    Polling more often makes the applications hit the shared per-shard GetRecords limit sooner, increasing throttling.

  • d
    Have one reader copy the records into a stream per application

    This separates the applications but adds a hop, more streams to pay for and a copier to run, and it adds latency rather than removing it.

The concept

Standard (shared-throughput) consumers share each shard's 2 MB/s and five GetRecords calls per second; enhanced fan-out gives each registered consumer a dedicated 2 MB/s per shard via push.

Why that’s the answer

Throttling that started as consumers were added shows the shared per-shard read limits are the bottleneck. Enhanced fan-out gives every application its own throughput and push delivery. More shards leave the per-shard call limit shared, faster polling worsens throttling, and copying to per-application streams adds hops and operations.

How to reason it out
  1. Read the trigger: throttling began as more polling consumers were added.
  2. Recall that polling consumers share per-shard read limits.
  3. Give each consumer dedicated throughput: enhanced fan-out.

Exam tip: Several low-latency consumers on one stream means enhanced fan-out, not more shards.

Data Ingestion on AWS: Kinesis, MSK, DMS, Glue, and Batch Patterns — the lesson that teaches this.

Question 8Data Ingestion and Transformation

A nightly AWS Glue Python shell job uses eight worker threads to page through a partner's REST API, which allows 10 requests per second per API key. Workers intermittently receive HTTP 429 responses, and the job currently fails on the first one. How should the data engineer make the ingestion resilient?

Choose one.

  • a
    Retry each 429 at once, up to five times per page, then fail the job

    Immediate retries arrive while the limit is still exceeded, so they mostly fail again and add load.

  • b
    Retry each 429 after the same one-second pause in each worker thread

    Identical fixed pauses make the eight workers retry in lockstep, so they collide with the limit again together.

  • c
    Retry each 429 with exponential backoff, without jitter, up to a cap

    Backoff helps, but without jitter the workers that failed together retry together at each step, keeping the bursts.

  • d
    Pace requests to the limit and retry 429s with backoff and jitter Correct

    Client-side pacing keeps the eight workers under 10 requests per second, and exponential backoff with random jitter spreads any retries apart.

The concept

Consuming a rate-limited data API means pacing requests below the limit and retrying throttled calls with capped exponential backoff and jitter.

Why that’s the answer

HTTP 429 means "too many requests", a transient condition. Pacing the workers to the documented rate prevents most 429s, and exponential backoff with jitter spreads the rest so parallel workers do not retry together. Immediate retries and fixed pauses keep hitting the limit, and backoff without jitter keeps the workers synchronised.

How to reason it out
  1. Classify HTTP 429 as transient throttling, not a fatal error.
  2. With parallel workers, add jitter so retries do not synchronise.
  3. Pace requests to the documented limit so throttling is the exception.

Exam tip: For rate-limited APIs: pace to the limit, then retry with exponential backoff plus jitter.

Data Ingestion on AWS: Kinesis, MSK, DMS, Glue, and Batch Patterns — the lesson that teaches this.

Question 9Data Ingestion and Transformation

A data engineering team is designing an event pipeline. After fixing a bug in a consumer, they must be able to re-read events from up to five days earlier, including events the consumer already processed, using native features of the ingestion service. Which TWO services meet this requirement? (Select TWO.)

Choose TWO.

  • a
    An Amazon SQS standard queue with a 14-day message retention period

    Retention applies only to messages not yet deleted; once a consumer processes and deletes a message it is gone, so processed events cannot be re-read.

  • b
    An Amazon SNS standard topic with an SQS queue subscribed for the consumer

    SNS standard topics do not store messages after delivery, so there is nothing to replay.

  • c
    Amazon Kinesis Data Streams with a seven-day retention period Correct

    Records stay in the stream for the retention period whether or not they were read, and a consumer can restart from a timestamp or sequence number.

  • d
    An Amazon Data Firehose stream with a five-minute buffering interval

    Firehose buffers and delivers; it keeps no readable history in the stream itself.

  • e
    Amazon MSK topics with a seven-day retention period Correct

    Kafka keeps records for the topic's retention period, and a consumer group can reset its offsets to reprocess them.

The concept

Replay needs a service that retains records after they are consumed: Kinesis Data Streams (retention up to 365 days) and Kafka on Amazon MSK (per-topic retention with consumer offsets).

Why that’s the answer

Kinesis and MSK both decouple retention from consumption, so a fixed consumer can rewind to a timestamp or offset. SQS retention covers only undeleted messages, SNS standard topics keep nothing, and Firehose only delivers.

How to reason it out
  1. Define the need: re-read already processed events from days ago.
  2. Separate retention-until-consumed (SQS) from retention-regardless-of-consumption (Kinesis, Kafka).
  3. Select the two log-style services: Kinesis Data Streams and Amazon MSK.

Exam tip: Replay requires a retained log: Kinesis Data Streams or Kafka on MSK, not a queue, topic or delivery stream.

Data Ingestion on AWS: Kinesis, MSK, DMS, Glue, and Batch Patterns — the lesson that teaches this.

Domain 2: Data Store Management

26% of the DEA-C01 exam, so 7 of the 25 questions on this page.

Question 10Data Store Management

Several AWS Glue jobs insert, update and delete records in the same large dataset in Amazon S3 at overlapping times, and analysts query it with Amazon Athena. Analysts sometimes see half-written results, and auditors want to query the dataset as it was on earlier dates. Which change meets both requirements?

Choose one.

  • a
    Keep plain Parquet files and enable S3 Versioning on the bucket

    S3 Versioning keeps old object versions, but there is no table-level snapshot tying files together and no atomic commit, so readers can still see partial writes and Athena cannot query "the table as of a date".

  • b
    Use a Hive-style Parquet table with AWS Glue job bookmarks enabled

    Job bookmarks track which input a job has already processed. They do not make writes atomic or keep table history.

  • c
    Convert the dataset to an Apache Iceberg table in the Data Catalog Correct

    Correct. Iceberg commits each write atomically as a new snapshot with optimistic concurrency, so readers always see a complete snapshot, and Athena can query earlier snapshots with time travel.

  • d
    Keep Parquet files and run the writer jobs one at a time in order

    Serializing writers avoids writer conflicts, but readers can still see a job's partial output and there is no way to query earlier states.

The concept

Apache Iceberg gives S3 data-lake tables atomic, isolated commits through snapshot metadata, so concurrent writers and readers stay consistent, and every snapshot can be queried later.

Why that’s the answer

Both symptoms point to missing table semantics: no atomic commit (half-written results) and no table history (point-in-time audit queries). Iceberg supplies both through its snapshot metadata layer, and Athena supports Iceberg reads, DML and time travel. S3 Versioning works per object, bookmarks track job input, and serialized writers still expose partial output.

How to reason it out
  1. Read the two symptoms: partial results during writes, and a need for historical queries.
  2. Recognize that both require table-level snapshots, not object-level or job-level features.
  3. Match snapshot-based ACID tables to Apache Iceberg.
  4. Convert the dataset to an Iceberg table that Athena and Glue both support.

Exam tip: Concurrent writers, consistent readers and as-of queries on S3 data: an Apache Iceberg table.

Choosing an AWS Data Store: Redshift, DynamoDB, Aurora, S3, and MemoryDB — the lesson that teaches this.

Question 11Data Store Management

An auditor asks a data engineering team to reproduce a monthly report exactly as it was before last week's corrections were applied. The data is an Apache Iceberg table in Amazon S3 queried with Amazon Athena, and snapshots are kept for 30 days. Other teams must keep seeing the corrected data while the audit runs. What should the team do?

Choose one.

  • a
    Query the table FOR TIMESTAMP AS OF a time before the fix Correct

    Correct. Athena time-travel queries read an earlier Iceberg snapshot by timestamp (or FOR VERSION AS OF a snapshot ID) without changing the table, so the report is reproduced while everyone else still sees current data.

  • b
    Roll the table back to the snapshot from before the fix

    An Iceberg rollback makes the earlier snapshot the current table state, so every team would lose the corrections until someone rolls forward. It breaks the requirement that others keep seeing corrected data.

  • c
    Restore the S3 data objects to versions from before the fix

    Iceberg table state is defined by its metadata files, not by individual object versions. Restoring data objects does not produce a consistent earlier table and would disturb current readers.

  • d
    Query the earlier table version kept in the Data Catalog

    Glue Data Catalog table versions record changes to the table definition and metadata pointer; Athena does not query data through a previous catalog table version. Iceberg history lives in its snapshots.

The concept

Every Iceberg commit creates a snapshot. Time travel (FOR TIMESTAMP AS OF / FOR VERSION AS OF in Athena) reads an old snapshot without changing anything; rollback changes the current table state.

Why that’s the answer

The snapshot from before the corrections still exists (snapshots are kept 30 days and the corrections were last week), so a time-travel query reproduces the report exactly. Rollback is the tempting near-twin because it also returns to the old snapshot, but it changes what every reader sees. Object version restores and catalog table versions do not represent Iceberg table state.

How to reason it out
  1. Confirm the old snapshot still exists: last week is inside the 30-day retention.
  2. Separate reading history from changing the table: other teams must keep the corrections.
  3. Choose a read-only time-travel query by timestamp or snapshot ID.
  4. Reject rollback, which rewrites the current state.

Exam tip: Read the past with time travel; rollback changes the present for everyone.

Choosing an AWS Data Store: Redshift, DynamoDB, Aurora, S3, and MemoryDB — the lesson that teaches this.

Question 12Data Store Management

A nightly ALTER TABLE on an Amazon Redshift table has waited for an hour. A data engineer finds that an ETL session opened a transaction, wrote to the table, and has been idle without committing since. Other dashboards and loads are running on the cluster and must not be interrupted. What should the engineer do?

Choose one.

  • a
    Reboot the cluster so the locks held on the table are released

    A reboot does release the lock, but it ends every session on the cluster, interrupting the dashboards and loads that must keep running.

  • b
    Find the blocking pid in STV_LOCKS and run PG_CANCEL_BACKEND

    PG_CANCEL_BACKEND cancels a running query. The blocking session is idle with no running query, so cancelling does nothing and its open transaction keeps holding the lock.

  • c
    Raise statement_timeout so the ALTER TABLE can wait much longer

    A longer timeout only lets the ALTER TABLE wait longer. The idle transaction never commits, so the lock is never released.

  • d
    Find the blocking pid in STV_LOCKS and run PG_TERMINATE_BACKEND Correct

    Correct. The lock views (STV_LOCKS, SVV_TRANSACTIONS) identify the session holding the lock. PG_TERMINATE_BACKEND ends that one session, rolling back its open transaction and releasing the lock without touching other workloads.

The concept

Redshift DDL such as ALTER TABLE needs an AccessExclusiveLock, so it waits behind any open transaction on the table. You find the holder in the lock and transaction system views and end its session with PG_TERMINATE_BACKEND.

Why that’s the answer

Two facts combine. First, the blocker is an idle, uncommitted transaction, and the lock views identify its process ID. Second, cancelling and terminating differ: PG_CANCEL_BACKEND stops a running query, and an idle session has none, while PG_TERMINATE_BACKEND ends the session and rolls back its transaction. Rebooting releases the lock too but interrupts everything, which the stem forbids.

How to reason it out
  1. Recognize that the ALTER TABLE needs an exclusive lock and waits for open transactions.
  2. Identify the blocking process ID in STV_LOCKS or SVV_TRANSACTIONS.
  3. Note the blocker is idle in a transaction, so cancelling a query will not help.
  4. Terminate that one session with PG_TERMINATE_BACKEND, leaving the rest of the cluster running.

Exam tip: Idle transaction holding a Redshift lock: find its pid in the lock views and terminate the session; cancel only stops running queries.

Choosing an AWS Data Store: Redshift, DynamoDB, Aurora, S3, and MemoryDB — the lesson that teaches this.

Question 13Data Store Management

Hundreds of external business partners must upload daily CSV files into a company's Amazon S3 data lake. The partners' legacy systems can only push files over SFTP using SSH keys, and each upload should start an AWS Glue job. The company wants a fully managed service and does not want to run file servers. Which service should land the files?

Choose one.

  • a
    AWS DataSync with agents at partner sites

    DataSync runs transfer tasks between storage locations you configure, using agents you deploy. It does not give partners an SFTP endpoint to push files to, and installing agents at hundreds of external partners is impractical.

  • b
    Amazon S3 Transfer Acceleration upload endpoints

    Transfer Acceleration speeds up HTTPS uploads to S3 through edge locations. Partners would need S3 API clients and AWS credentials; it does not accept SFTP.

  • c
    AWS Storage Gateway with an S3 File Gateway

    S3 File Gateway lands files in S3, but clients connect over NFS or SMB to a gateway appliance the company runs. It does not provide an SFTP endpoint for external partners.

  • d
    AWS Transfer Family with an S3-backed endpoint Correct

    Correct. Transfer Family is a fully managed SFTP (and FTPS, FTP, AS2) endpoint that authenticates users with SSH keys and writes files straight into S3, where an S3 event can start the Glue job.

The concept

AWS Transfer Family provides managed SFTP, FTPS, FTP and AS2 endpoints backed by S3 or EFS, so partners keep their file-transfer protocol while files land directly in the data lake.

Why that’s the answer

The deciding constraint is the protocol: partners can only push over SFTP. Transfer Family is the managed SFTP endpoint backed by S3. DataSync, Transfer Acceleration and File Gateway all move data into S3, but over agents, HTTPS or NFS/SMB respectively. Once files land, S3 Event Notifications or EventBridge start the Glue job.

How to reason it out
  1. Note the protocol constraint: SFTP with SSH keys, pushed by external partners.
  2. Note the operations constraint: fully managed, no file servers.
  3. Match a managed SFTP endpoint backed by S3 to AWS Transfer Family.
  4. Trigger the Glue job from the S3 upload event.

Exam tip: Partners that only speak SFTP into S3, no servers: AWS Transfer Family.

Choosing an AWS Data Store: Redshift, DynamoDB, Aurora, S3, and MemoryDB — the lesson that teaches this.

Question 14Data Store Management

A company is building the checkout system for an online store. Each request reads and writes a few rows across orders, inventory and payments tables. The workload needs ACID transactions that span tables, foreign-key constraints across a normalized schema, and ad hoc multi-table SQL for support staff. Which data store is most appropriate?

Choose one.

  • a
    Amazon DynamoDB using TransactWriteItems

    DynamoDB transactions are ACID across items and tables, but DynamoDB has no foreign-key constraints or joins, so the normalized schema and ad hoc multi-table SQL are not available.

  • b
    Amazon Aurora MySQL with an Aurora Replica Correct

    Correct. Aurora MySQL is a relational OLTP engine: multi-table ACID transactions, enforced foreign keys and full SQL joins, with low-latency row reads and writes. The cluster has one writer; an Aurora Replica in another AZ is the failover target.

  • c
    Amazon Redshift Serverless with a workgroup

    Redshift is a columnar analytics warehouse. It does not enforce foreign keys and is not designed for many small, latency-sensitive transactional writes.

  • d
    Apache Iceberg tables on S3 queried by Athena

    Iceberg adds ACID commits to data-lake tables, but each commit writes files and metadata to S3; it suits batch analytics, not per-request checkout writes, and it has no foreign keys.

The concept

Transactional (OLTP) workloads with normalized schemas, foreign keys and multi-table transactions belong in a relational engine such as RDS or Aurora.

Why that’s the answer

Every requirement is relational: multi-table ACID transactions, enforced foreign keys, and ad hoc joins on small, frequent reads and writes. Aurora MySQL provides all of them. DynamoDB transactions and Iceberg commits are both ACID, which makes them tempting, but neither enforces foreign keys or serves relational OLTP; Redshift is analytical.

How to reason it out
  1. Classify the workload: many small reads and writes per request, so OLTP.
  2. List the relational requirements: cross-table ACID, foreign keys, joins.
  3. Reject stores that offer ACID but no relational constraints.
  4. Choose a relational engine such as Aurora MySQL.

Exam tip: ACID plus foreign keys plus joins on small transactional writes is a relational OLTP database; "ACID" alone does not mean relational.

Choosing an AWS Data Store: Redshift, DynamoDB, Aurora, S3, and MemoryDB — the lesson that teaches this.

Question 15Data Store Management

A data platform team is converting raw Parquet datasets in Amazon S3 into Apache Iceberg tables in the AWS Glue Data Catalog. Which TWO capabilities does the Iceberg format add compared with querying the plain Parquet files directly? (Select TWO.)

Choose TWO.

  • a
    Per-column indexes that make point lookups fast on any field

    Iceberg keeps file-level column statistics for pruning, but it does not build per-column indexes; point lookups on arbitrary columns are still scans.

  • b
    Adding or renaming columns as a metadata-only table change Correct

    Correct. Iceberg tracks columns by ID in its metadata, so adding, renaming, dropping or reordering columns changes metadata only and existing data files are not rewritten.

  • c
    Small files merged on write so compaction is not needed

    Iceberg does not merge small files on write; frequent small commits accumulate small files, which is why compaction (for example Athena OPTIMIZE or automatic compaction) remains a maintenance task.

  • d
    Row expiry after a set age, like a DynamoDB TTL attribute

    Iceberg has no per-row TTL. Old rows are removed with DELETE statements, and snapshot expiry removes old table versions, not aged rows.

  • e
    Atomic commits so readers never see a half-written batch Correct

    Correct. Each write commits atomically as a new snapshot, giving ACID transactions with snapshot isolation for concurrent readers and writers.

The concept

Apache Iceberg adds table semantics to S3 files through a snapshot metadata layer: atomic commits with snapshot isolation, row-level changes, metadata-only schema evolution, hidden partitioning and time travel. It still needs maintenance such as compaction and snapshot expiry.

Why that’s the answer

Schema evolution and atomic commits are both delivered by Iceberg's metadata layer. The distractors are common misconceptions: Iceberg uses column statistics for pruning but not indexes, does not remove the need for compaction, and has no row TTL.

How to reason it out
  1. Recall what plain Parquet lacks: atomic commits, safe schema changes, row-level changes, history.
  2. Map Iceberg's snapshot metadata to atomic commits and column-ID-based schema evolution.
  3. Reject features Iceberg does not provide: indexes, automatic compaction, row TTL.
  4. Select metadata-only schema evolution and atomic commits.

Exam tip: Iceberg = ACID snapshots, schema evolution, row-level changes and time travel on S3; it is not an index, and it still needs compaction.

Choosing an AWS Data Store: Redshift, DynamoDB, Aurora, S3, and MemoryDB — the lesson that teaches this.

Question 16Data Store Management

A solutions review board is deciding which new workloads to place on Amazon DynamoDB. Which TWO workloads fit DynamoDB's strengths? (Select TWO.)

Choose TWO.

  • a
    A shopping cart read and written by user ID at very high request rates Correct

    Correct. Every request targets a known key (user ID), and DynamoDB keeps single-digit-millisecond latency as request volume grows.

  • b
    A reporting tool where analysts filter on whichever attribute they choose

    DynamoDB queries need a partition key (or a pre-built index). Arbitrary attribute filters become full-table scans; ad hoc filtering fits a SQL engine.

  • c
    Current state of each IoT device, read and updated by its device ID Correct

    Correct. One item per device, accessed by device ID, is a key/value pattern DynamoDB serves at any scale.

  • d
    Raw 50 MB sensor capture files, each retrieved later by its file name

    A DynamoDB item is limited to 400 KB. Large files belong in S3, with at most a pointer stored in DynamoDB.

  • e
    A billing ledger joined to customers and invoices with foreign keys

    DynamoDB has no joins or foreign-key constraints; a relational ledger fits RDS or Aurora.

The concept

DynamoDB fits access by a known key at high scale. It is a poor fit for ad hoc attribute filtering, joins and foreign keys, and objects larger than its 400 KB item limit.

Why that’s the answer

The shopping cart and device state are both accessed by a known key at scale, DynamoDB's core pattern. Each distractor hits one specific limit: ad hoc filters need scans, large files exceed the item size limit, and relational ledgers need joins and foreign keys.

How to reason it out
  1. For each workload, ask whether every access uses a known key.
  2. Check item size against the 400 KB limit.
  3. Check for joins, foreign keys or arbitrary filters.
  4. Select the two known-key workloads.

Exam tip: DynamoDB: known-key access at scale; not ad hoc filters, joins, or large objects.

Choosing an AWS Data Store: Redshift, DynamoDB, Aurora, S3, and MemoryDB — the lesson that teaches this.

Domain 3: Data Operations and Support

22% of the DEA-C01 exam, so 5 of the 25 questions on this page.

Question 17Data Operations and Support

A data engineer must start an AWS Step Functions state machine from changes captured in an Amazon DynamoDB stream. Only records whose eventName is INSERT may be delivered, each batch must be enriched by an existing AWS Lambda function before it reaches the state machine, and the team wants a managed source-to-target integration with no forwarding code of its own. Which solution meets these requirements?

Choose one.

  • a
    Create an EventBridge rule on the default event bus that matches INSERT stream records and targets the state machine

    DynamoDB Streams records are not published to the default event bus, so a rule matching them never fires.

  • b
    Add the DynamoDB stream as an event source mapping on the state machine, filtered to INSERT records

    Event source mappings that poll DynamoDB streams belong to Lambda; a state machine cannot be the function side of an event source mapping.

  • c
    Create an EventBridge pipe from the stream with an INSERT filter, the Lambda enrichment, and the state machine target Correct

    Correct. EventBridge Pipes reads the stream, applies an event filter on eventName, sends each batch through the Lambda function as the enrichment step, and starts the state machine as the target, all without custom forwarding code.

  • d
    Create a Lambda event source mapping filtered to INSERT whose function enriches records and starts the state machine

    This works technically, but the function would have to call StartExecution itself, which is the custom forwarding code the team wants to avoid.

The concept

EventBridge Pipes connects a point-to-point source such as a DynamoDB stream, Kinesis stream or SQS queue to a target, with optional filtering and an enrichment step in between.

Why that’s the answer

Two facts combine. DynamoDB Streams is a polled source, not a publisher to the event bus, so an EventBridge rule cannot see its records; and event source mappings are a Lambda feature, so a state machine cannot consume the stream directly. A Lambda event source mapping would work, but the function would need code to start the state machine. A pipe does the polling, filtering on eventName, Lambda enrichment and delivery to Step Functions as managed configuration.

How to reason it out
  1. Note the source: a DynamoDB stream, which must be polled rather than published to a bus.
  2. Rule out a bus rule (stream records never reach the bus) and a state-machine event source mapping (Lambda only).
  3. Compare the Lambda event source mapping with a pipe against the no-forwarding-code constraint.
  4. Choose an EventBridge pipe with a filter, the Lambda enrichment and the state machine target.

Exam tip: Stream or queue source, filter, enrich, then deliver to a target with no glue code: that is EventBridge Pipes.

Automate Data Processing on AWS: Step Functions, MWAA, Lambda & EventBridge — the lesson that teaches this.

Question 18Data Operations and Support

A data team runs a long-lived Amazon EMR cluster that analysts also use during the day. Each night, three Spark applications must run on it in order, each starting only after the previous one succeeds. If one fails, the remaining applications must not run and the cluster must stay up. Step concurrency is left at its default of 1. How should the applications be submitted?

Choose one.

  • a
    Submit the applications as steps with ActionOnFailure set to CONTINUE

    With CONTINUE, a failed step is ignored and the next step starts, so later applications run after a failure.

  • b
    Submit the applications as steps with ActionOnFailure set to TERMINATE_CLUSTER

    This stops further work after a failure by shutting the cluster down, which breaks the requirement that the cluster stays up for analysts.

  • c
    Submit the applications as steps with ActionOnFailure set to CANCEL_AND_WAIT Correct

    Correct. Steps run one after another at a step concurrency of 1, and CANCEL_AND_WAIT cancels the remaining pending steps when one fails while leaving the cluster running.

  • d
    Run spark-submit for each application from cron jobs on the primary node

    Cron fires on time, not on the previous application's success, so a failure would not stop the later runs, and there is no step history to inspect.

The concept

Steps are Amazon EMR's native unit of automated work. With the default step concurrency of 1 they run in order, and each step's ActionOnFailure decides what happens to the remaining steps and to the cluster.

Why that’s the answer

Submitting the applications as steps gives ordered execution and a recorded status for each. The failure behaviour picks the setting: CONTINUE runs the next step anyway, TERMINATE_CLUSTER stops the work by shutting down a cluster that analysts need, and CANCEL_AND_WAIT cancels the pending steps and keeps the cluster waiting. Cron on the primary node has no dependency on success at all.

How to reason it out
  1. Use EMR steps for ordered, tracked work on an existing cluster.
  2. List the failure requirements: stop later applications and keep the cluster running.
  3. Map them to ActionOnFailure values: CONTINUE (keeps going), TERMINATE_CLUSTER (shuts down), CANCEL_AND_WAIT (cancels pending steps, cluster stays).
  4. Choose CANCEL_AND_WAIT.

Exam tip: On a shared EMR cluster, chain steps with ActionOnFailure CANCEL_AND_WAIT to stop the chain on failure without terminating the cluster.

Automate Data Processing on AWS: Step Functions, MWAA, Lambda & EventBridge — the lesson that teaches this.

Question 19Data Operations and Support

A data engineer adds a new Python library to requirements.txt and uploads the file to an Amazon MWAA environment's S3 bucket. The library is imported inside task functions, so the DAGs still appear in the Airflow UI, but their tasks fail with ModuleNotFoundError. Which TWO actions should the engineer take to diagnose and fix the problem? (Select TWO.)

Choose TWO.

  • a
    Read the requirements_install log streams in the scheduler log group for pip errors Correct

    Correct. MWAA writes the pip install output for requirements.txt to requirements_install_<ip> log streams in the Airflow scheduler log group in CloudWatch Logs, which shows whether the package failed to install, for example because of a version conflict.

  • b
    Point the environment at the new requirements.txt object version and apply the update Correct

    Correct. The environment references requirements.txt by S3 object version, so uploading a new file changes nothing until the environment is updated to that version and its workers reinstall packages.

  • c
    Copy requirements.txt into the dags/ prefix so the DAG processor installs it on its next parse

    Files under dags/ are parsed as DAG code. Placing requirements.txt there does not install anything; MWAA installs packages from the requirements file configured on the environment.

  • d
    Re-upload the DAG files so the scheduler re-parses them against the new library

    The DAGs already parse; the failure is a missing package on the workers at run time. Re-parsing does not install the library.

  • e
    Move the environment to a larger class so workers have the memory to load the library

    ModuleNotFoundError means the package is not installed, not that memory ran out; a larger class would install the same packages.

The concept

MWAA installs Python dependencies from a requirements.txt file referenced by its S3 object version, when workers and schedulers start. The pip output is published to CloudWatch Logs.

Why that’s the answer

Two separate facts produce this symptom. Uploading a new requirements.txt does not change a running environment, because the environment is pinned to an object version; it must be updated to the new version, which restarts components and reinstalls packages. Even after that, pip can fail (for example a version conflict with Airflow's constraints), and the requirements_install log streams in the scheduler log group show it. Placing the file under dags/, re-parsing DAGs or resizing the environment does not install a missing module.

How to reason it out
  1. Read the symptom: DAGs parse, tasks fail with ModuleNotFoundError, so the package is missing on the workers.
  2. Check that the environment references the newly uploaded requirements.txt object version, and update it if not.
  3. Open the scheduler log group's requirements_install log streams to confirm pip installed the package without errors.
  4. Fix any reported conflict, test in a staging environment, and rerun a failed task.

Exam tip: A new MWAA dependency needs an environment update to the new requirements.txt version, and the install logs tell you whether pip succeeded.

Automate Data Processing on AWS: Step Functions, MWAA, Lambda & EventBridge — the lesson that teaches this.

Question 20Data Operations and Support

A data team triggers its jobs with scheduled Amazon EventBridge rules and is deciding whether new schedules should use Amazon EventBridge Scheduler instead. Which TWO capabilities does EventBridge Scheduler offer that scheduled rules do not? (Select TWO.)

Choose TWO.

  • a
    A schedule that fires once at a set date and time and can delete itself afterward Correct

    Correct. Scheduler supports one-time at() schedules, and a completed one-time schedule can be deleted automatically. Scheduled rules only express recurring cron or rate schedules.

  • b
    A schedule that invokes an AWS Lambda function or a Step Functions state machine

    Both scheduled rules and EventBridge Scheduler can invoke Lambda functions and Step Functions state machines, so this is not a difference.

  • c
    A trigger that matches events emitted by other AWS services using an event pattern

    Event-pattern matching is what EventBridge rules do on an event bus. Scheduler is time-based only and does not match events.

  • d
    A cron expression evaluated in a named time zone, following daylight saving shifts Correct

    Correct. Scheduler evaluates cron expressions in a time zone you choose and adjusts for daylight saving time. Scheduled rules evaluate cron in UTC only.

  • e
    A rule that sends matched events to an event bus in another AWS account or Region

    Cross-account and cross-Region delivery to another event bus is a feature of EventBridge rules, not something Scheduler adds.

The concept

EventBridge Scheduler is a dedicated scheduling service that adds one-time schedules, time zones with daylight saving handling, flexible time windows, and per-schedule retry policies and dead-letter queues on top of what scheduled rules offer.

Why that’s the answer

Scheduled rules evaluate cron and rate expressions in UTC and only recur. Scheduler adds one-time at() schedules (which can delete themselves after running) and time-zone-aware cron that follows daylight saving changes. Invoking Lambda or Step Functions is common to both, while event-pattern matching and delivery to another account's event bus belong to rules.

How to reason it out
  1. Separate the two jobs: rules match events on a bus; Scheduler runs things on a timetable.
  2. Recall the scheduled-rule limits: UTC cron and rate, recurring only.
  3. Pick what Scheduler adds: one-time schedules and named time zones.
  4. Discard features both share (Lambda and Step Functions targets) and features of rules (patterns, cross-account buses).

Exam tip: Use EventBridge Scheduler when a schedule needs a local time zone or should run only once; rules are for matching events.

Automate Data Processing on AWS: Step Functions, MWAA, Lambda & EventBridge — the lesson that teaches this.

Question 21Data Operations and Support

A team is replacing JDBC connections from its AWS Lambda functions to an Amazon Redshift cluster with calls to the Amazon Redshift Data API. Which TWO behaviours of the Data API must the team design for? (Select TWO.)

Choose TWO.

  • a
    ExecuteStatement returns a statement ID; status and result rows come from later calls Correct

    Correct. The Data API is asynchronous: ExecuteStatement returns an Id, and the caller uses DescribeStatement for status and GetStatementResult for rows, or reacts to the completion event.

  • b
    The function keeps a warm connection pool between invocations to avoid reconnects

    There is no connection to pool; each call is an HTTPS request to the Data API endpoint, which manages connections to the cluster.

  • c
    Callers authenticate with IAM temporary credentials or a Secrets Manager secret Correct

    Correct. The Data API authorizes the call with IAM and connects to the database using either temporary database credentials or a secret stored in AWS Secrets Manager, so no driver connection string or password lives in code.

  • d
    The Data API accepts SELECT statements alone, so COPY loads still need a JDBC connection

    The Data API runs any SQL the database user may run, including COPY, INSERT, DDL and stored procedure calls.

  • e
    The function runs in the cluster's VPC subnets so that it can reach the Data API

    The Data API is a public AWS endpoint called over HTTPS. The caller does not need to be in the cluster's VPC.

The concept

The Amazon Redshift Data API lets serverless code run SQL against Redshift over HTTPS: asynchronous, authenticated through IAM with temporary credentials or a Secrets Manager secret, and with no driver, connection or VPC networking on the caller's side.

Why that’s the answer

Moving from JDBC changes two things in the design. Calls are asynchronous, so code must keep the statement Id and poll DescribeStatement or react to the completion event before fetching results. Authentication moves to IAM, with database access through temporary credentials or a Secrets Manager secret. The other statements describe JDBC-era concerns (connection pools, VPC placement) or an invented restriction on statement types.

How to reason it out
  1. Remember that Data API calls return immediately with a statement Id.
  2. Plan for status checks (DescribeStatement) or completion events before reading results (GetStatementResult).
  3. Grant the function IAM permission and choose temporary credentials or a Secrets Manager secret for database access.
  4. Drop the JDBC-only concerns: drivers, connection pools and VPC attachment.

Exam tip: The Redshift Data API is asynchronous and IAM-authenticated: keep the statement Id, and forget drivers, pools and VPC wiring.

Automate Data Processing on AWS: Step Functions, MWAA, Lambda & EventBridge — the lesson that teaches this.

Domain 4: Data Security and Governance

18% of the DEA-C01 exam, so 4 of the 25 questions on this page.

Question 22Data Security and Governance

An Amazon Redshift cluster in a private subnet must accept connections only from an application tier of EC2 instances in an Auto Scaling group. The instances share their subnets with unrelated batch servers and change private IP addresses as they scale. How should the Redshift security group be configured?

Choose one.

  • a
    Add an inbound rule on the Redshift port whose source is the application tier's security group. Correct

    A security-group source matches whichever instances carry that group, whatever their IPs, and excludes the batch servers that do not.

  • b
    Add an inbound rule on the Redshift port whose source is the CIDR range of the application subnets.

    This keeps working as IPs change, but it also admits the unrelated batch servers in the same subnets.

  • c
    Add an inbound rule on the Redshift port whose source is the Redshift cluster's own security group.

    A self-referencing rule admits only resources that carry the Redshift security group, not the application instances.

  • d
    Add an outbound rule on the application tier's security group whose destination is the Redshift port.

    Outbound rules on the clients do not open the cluster; the Redshift security group still needs an inbound rule.

The concept

Security group rules can name another security group as the source instead of an IP range. The rule then matches any network interface that carries that group, so membership, not addresses, decides access.

Why that’s the answer

Two requirements decide: IPs change constantly, and the subnets contain other servers. Referencing the application tier's security group handles both. A subnet CIDR survives IP churn but admits the batch servers; a self-referencing rule admits the wrong group; and an outbound rule on the client side does not create the inbound permission the cluster needs.

How to reason it out
  1. Note the two constraints: changing IPs and shared subnets.
  2. Rule out IP-based sources: per-instance IPs churn and subnet CIDRs over-admit.
  3. Use the application tier's security group as the inbound source on the Redshift port.

Exam tip: Reference a security group, not IPs, when the clients scale or share subnets with others.

Applying Authentication Mechanisms: IAM, Secrets Manager, and Networks — the lesson that teaches this.

Question 23Data Security and Governance

A data engineer removes the default outbound rule from an EC2 instance's security group, leaving no outbound rules, and adds an inbound rule that allows HTTPS from a partner's CIDR range. The partner's HTTPS requests to the instance still receive responses. Why?

Choose one.

  • a
    The subnet's network ACL allows outbound traffic to 0.0.0.0/0, and the network ACL is evaluated before the security group.

    Network ACLs and security groups are both evaluated; an ACL allow cannot override the security group. The responses pass for a different reason.

  • b
    The inbound rule creates a hidden matching outbound rule for the partner's CIDR range on port 443 as well.

    No hidden rule is created. Responses are allowed because the security group tracks the connection, and they go to the partner's ephemeral ports, not to port 443.

  • c
    Security groups are stateful, so responses to a connection allowed by an inbound rule are allowed back out. Correct

    Connection tracking lets reply traffic for an allowed inbound connection leave regardless of outbound rules.

  • d
    Traffic to the partner leaves through the network interface's default security group, which allows outbound traffic.

    An interface uses the security groups attached to it; there is no fallback to the default security group.

The concept

Security groups are stateful: once a connection is allowed in one direction, its return traffic is allowed automatically. Network ACLs are stateless and need rules for both directions.

Why that’s the answer

Removing every outbound rule stops connections the instance starts, but not replies to connections someone else started and an inbound rule allowed. Connection tracking handles those replies. A permissive network ACL does not override the security group, no hidden outbound rule is created, and an interface never falls back to the default security group.

How to reason it out
  1. Note who started the connection: the partner (inbound).
  2. Recall that security groups track connections and permit their return traffic.
  3. Contrast with network ACLs, which are stateless and need explicit return rules.

Exam tip: Security group: stateful, replies allowed. Network ACL: stateless, replies need a rule.

Applying Authentication Mechanisms: IAM, Secrets Manager, and Networks — the lesson that teaches this.

Question 24Data Security and Governance

A central data lake bucket holds hundreds of datasets read by dozens of teams, several of them in other AWS accounts. The single bucket policy is near its size limit, and every access change means editing it. The platform team wants each team to have its own entry point to the shared data with its own separately managed policy, without copying any data. What should the platform team do?

Choose one.

  • a
    Remove the team statements from the bucket policy and grant each team's access through that team's IAM role policies instead.

    Identity policies are enough within one account, but teams in other accounts also need a grant on the bucket side, so this breaks cross-account access.

  • b
    Create an S3 access point per team with its own policy, and have the bucket policy delegate access control to access points. Correct

    Each access point has its own name and policy, so teams are managed independently, and one delegation statement keeps the bucket policy small.

  • c
    Create an S3 Multi-Region Access Point for each team and grant the team access in that access point's policy.

    Multi-Region Access Points route requests across buckets in several Regions; they are not a per-team policy layer for one bucket.

  • d
    Create a bucket for each team and use S3 Replication to copy the shared datasets into the team's bucket.

    This splits the policy but copies the data, which the requirement rules out, and adds storage and replication cost.

The concept

S3 Access Points are named network endpoints attached to a bucket, each with its own access point policy. The bucket policy delegates access control to the access points, so each application or team gets an independently managed policy.

Why that’s the answer

The requirements are separate per-team policies, cross-account consumers, and no copies. Access points meet all three: each team gets an access point and policy, and the bucket policy needs only one statement delegating to access points owned by the account. Identity policies alone fail for the other accounts, Multi-Region Access Points solve multi-Region routing rather than per-team policy, and per-team buckets copy data.

How to reason it out
  1. List the constraints: per-team policy, cross-account teams, no data copies.
  2. Pick the S3 feature that adds a separate policy per consumer on one bucket: access points.
  3. Delegate access control from the bucket policy to the access points.

Exam tip: One bucket, many consumers, separate policies: an access point per consumer with bucket-policy delegation.

Applying Authentication Mechanisms: IAM, Secrets Manager, and Networks — the lesson that teaches this.

Question 25Data Security and Governance

A data engineer deploys an AWS Lambda function that reads items from an Amazon DynamoDB table in the same account. The function code creates a DynamoDB client with the SDK defaults and passes no credentials. Which configuration gives the function permission for the DynamoDB calls?

Choose one.

  • a
    Set environment variables on the function with an IAM user's access key that is allowed dynamodb:GetItem on the table.

    The SDK would pick these up, but they are long-term user keys stored in the function configuration, which a role makes unnecessary.

  • b
    Store an IAM user's access key in AWS Secrets Manager and load it into the DynamoDB client at cold start.

    This protects the key at rest but still authenticates with a long-term IAM user credential, and the code must change to load it.

  • c
    Add a statement to the function's resource-based policy that allows dynamodb:GetItem on the table.

    A function's resource-based policy controls who may invoke the function; it grants the function nothing.

  • d
    Attach an execution role to the function with a policy that allows dynamodb:GetItem on the table. Correct

    Lambda assumes the execution role for each invocation and exposes temporary credentials that the SDK default provider uses.

The concept

A Lambda function acts with the permissions of its execution role. Lambda assumes the role and supplies temporary credentials to the runtime, where the SDK default credential provider finds them.

Why that’s the answer

The function needs an identity that can call DynamoDB. The execution role is that identity: the SDK picks up its temporary credentials with no code change. The resource-based policy is the tempting near-twin, but it works in the other direction, deciding who may invoke the function. The access-key options would work technically but use long-term user credentials where a role is the designed mechanism.

How to reason it out
  1. Ask which identity the function runs as: its execution role.
  2. Distinguish the execution role (what the function can do) from the resource-based policy (who can invoke it).
  3. Grant dynamodb:GetItem on the table to the execution role.

Exam tip: Execution role = what the function can call; resource-based policy = who can call the function.

Applying Authentication Mechanisms: IAM, Secrets Manager, and Networks — the lesson that teaches this.

Keep going with DEA-C01

DEA-C01 practice by domain

DEA-C01 sample questions: your questions

No. Real exam questions are confidential. These are original questions written to the skills in the official DEA-C01 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 DEA-C01 exam guide.