Skip to main content

AWS · DVA-C03

DVA-C03 practice questions with answers

15 free practice questions for the AWS Certified Developer – Associate (DVA-C03) exam, spread across the exam's domains. Try each one, then open the answer to see why every option is right or wrong.

  1. Question 1 · Development with AWS Services

    A DynamoDB table must stay in provisioned capacity mode so costs remain predictable. Its traffic varies throughout the day in patterns that are hard to predict. The team wants read and write capacity to adjust automatically so that consumed capacity stays near 70% of provisioned capacity, with no manual changes. Which solution meets these requirements?

    • AEnable DynamoDB auto scaling with a target tracking policy whose target utilization is set to 70 percent, plus minimum and maximum capacity bounds
    • BSwitch the table to on-demand capacity mode so that DynamoDB scales throughput based on the incoming request volume
    • CRely on DynamoDB burst capacity and adaptive capacity to absorb traffic above the configured provisioned throughput
    • DCreate Application Auto Scaling scheduled actions that set higher capacity during business hours and lower capacity overnight
    Show answer and explanation

    Answer: A) Enable DynamoDB auto scaling with a target tracking policy whose target utilization is set to 70 percent, plus minimum and maximum capacity bounds

    DynamoDB auto scaling uses an Application Auto Scaling target tracking policy to adjust provisioned capacity so that consumed capacity stays near a chosen target utilization. On-demand mode, burst or adaptive capacity, and scheduled actions do not meet that requirement.

    • ADynamoDB auto scaling uses Application Auto Scaling. Its target tracking algorithm raises or lowers provisioned read and write capacity so that the ratio of consumed to provisioned capacity stays at or near the target utilization. Allowed targets are 20–90%, and the table stays in provisioned mode.
    • BOn-demand mode does handle variable traffic, but it removes provisioned capacity altogether, so there is no utilization target to track. The requirement to stay in provisioned mode rules it out.
    • CBurst capacity covers short spikes, and adaptive capacity rebalances throughput across partitions. Neither one changes the table's provisioned capacity to keep utilization near a target.
    • DScheduled scaling changes capacity at fixed times whatever the actual load is. It cannot follow unpredictable traffic or hold utilization near a target percentage.
  2. Question 2 · Development with AWS Services

    A REST API in Amazon API Gateway receives order submissions through a Lambda function that writes to a database. During flash sales, the function hits its concurrency limit and clients get errors. Clients only need confirmation that the order was received, and processing can finish within minutes. What should the developer do?

    • AIntegrate API Gateway directly with Amazon SQS to enqueue each order, and have a Lambda function process the queue
    • BIncrease the integration timeout so that requests wait for an available Lambda environment
    • CEnable API caching on the POST method so repeated orders return faster
    • DChange the method to invoke Lambda synchronously with provisioned concurrency set to the reserved limit
    Show answer and explanation

    Answer: A) Integrate API Gateway directly with Amazon SQS to enqueue each order, and have a Lambda function process the queue

    When clients only need an acknowledgment, decouple with an API Gateway to SQS integration and process orders asynchronously.

    • ACorrect. An AWS service integration lets API Gateway write to SQS and respond as soon as the message is stored. The queue absorbs the spike, and the consumer processes orders at a controlled rate.
    • BIncorrect. Throttled synchronous invocations are rejected, not queued, and longer waits make clients hold connections during the spike.
    • CIncorrect. Each order is unique and must be processed, so caching POST responses would lose orders.
    • DIncorrect. Provisioned concurrency reduces cold starts but doesn't raise the concurrency limit. The spike still exceeds it.
  3. Question 3 · Development with AWS Services

    A payments service sends messages to an Amazon SQS FIFO queue and sets MessageGroupId to "payments" on every message. A Lambda function consumes the queue through an event source mapping with no concurrency limits. During peak hours the backlog grows, and the ConcurrentExecutions metric stays at 1. Each customer's payments must be processed in order, but customers are independent of each other. What should the developer do to increase throughput?

    • AIncrease the batch size to 10 and add a batching window so that each invocation handles more messages
    • BSet MessageGroupId to the customer ID so that different customers' messages are processed in parallel
    • CSwitch to a standard queue and record processed message IDs in DynamoDB to prevent duplicate payments
    • DConfigure provisioned concurrency of 50 on the function so that more instances are ready to poll the queue at peak
    Show answer and explanation

    Answer: B) Set MessageGroupId to the customer ID so that different customers' messages are processed in parallel

    FIFO consumers scale by message group. Use a group ID that matches the ordering requirement (here, the customer) to get parallelism without losing order.

    • AIncorrect. Larger batches help a little, but one message group can still be processed by only one invocation at a time, so concurrency stays at 1.
    • BCorrect. Lambda scales a FIFO consumer up to the number of active message groups. Per-customer groups keep each customer's order while letting customers run in parallel.
    • CIncorrect. A standard queue doesn't preserve order, so a customer's payments could be processed out of sequence.
    • DIncorrect. More instances don't help. Messages in a single group are delivered in order to one invocation at a time.
  4. Question 4 · Development with AWS Services

    A team wants to describe their REST API's paths, methods, and request/response schemas in a standard, portable file. They want to import that file into Amazon API Gateway to create the API, and also use it to generate client SDKs and documentation. Which format should they use?

    • AAn OpenAPI 2.0 or 3.0 definition file imported through the API Gateway import feature
    • BA WSDL document describing the service's operations and message types
    • CA set of Velocity Template Language (VTL) mapping templates for each method
    • DA JSON Schema model attached to each method's request and response
    Show answer and explanation

    Answer: A) An OpenAPI 2.0 or 3.0 definition file imported through the API Gateway import feature

    API Gateway imports and exports REST API definitions in OpenAPI v2.0/v3.0 format. OpenAPI is a portable standard that also drives documentation and SDK generation. Mapping templates, models, and WSDL can't do this.

    • AAPI Gateway can create or update a REST API by importing OpenAPI v2.0 or v3.0 definition files, and it can export APIs in this format too. OpenAPI is a vendor-neutral standard, so the same file works for documentation tooling and SDK generation.
    • BWSDL describes SOAP web services. API Gateway's REST API import feature supports OpenAPI definition files, not WSDL.
    • CMapping templates transform request and response payloads for integrations. They don't describe the API's paths and methods, and they can't be imported to create an API.
    • DAPI Gateway models use JSON Schema to define the shape of a payload, but they don't describe resources, paths, or methods. A model on its own can't define or import a whole API.
  5. Question 5 · Development with AWS Services

    An S3 bucket sends s3:ObjectCreated:* event notifications for the uploads/ prefix to a Lambda function that creates thumbnails. A second team now needs every object created under uploads/ with the suffix .jpg to start its own Lambda function, and a third team wants the same .jpg events in an Amazon SQS queue. When the developer adds the new notification configurations, the PutBucketNotificationConfiguration call fails with an error that the configuration is ambiguously defined because of overlapping prefixes and suffixes. What should the developer do so that all three consumers receive the events?

    • AAdd the new rules with the event type s3:ObjectCreated:Put instead of s3:ObjectCreated:* so that the event types don't overlap
    • BGive each new rule a unique configuration ID and a separate destination so that S3 can tell the overlapping rules apart
    • CCreate a second bucket that replicates uploads/ and configure the extra notifications on the replica bucket
    • DTurn on Amazon EventBridge for the bucket and create one EventBridge rule per consumer with its own key filter
    Show answer and explanation

    Answer: D) Turn on Amazon EventBridge for the bucket and create one EventBridge rule per consumer with its own key filter

    S3 event notification rules can't have overlapping prefix and suffix filters for the same event types; send events to EventBridge to fan out overlapping matches to several consumers.

    • AIncorrect. s3:ObjectCreated:Put is part of s3:ObjectCreated:*, so the event types still overlap and the configuration is still rejected.
    • BIncorrect. IDs don't resolve overlap. Rules with overlapping prefixes and suffixes for the same event types are invalid whatever their IDs and destinations.
    • CIncorrect. This could work, but it doubles storage, adds replication delay and cost, and doesn't scale to more consumers.
    • DCorrect. S3 notification rules can't overlap for the same event types. EventBridge receives every bucket event, and any number of rules can match the same events with prefix and suffix patterns.
  6. Question 6 · Security

    A developer runs an application in eu-west-1 behind an Amazon CloudFront distribution. They request a public certificate for shop.example.com in AWS Certificate Manager (ACM) in eu-west-1. When they add shop.example.com as an alternate domain name on the distribution, the certificate does not appear in the list of available certificates. What should the developer do?

    • ARequest or import a certificate in ACM in us-east-1 that includes shop.example.com, and attach it to the distribution
    • BShare the eu-west-1 certificate with the CloudFront service principal by using an AWS RAM resource share
    • CAttach the eu-west-1 certificate to the origin's load balancer so CloudFront presents it to viewers
    • DChange the distribution's price class to one that includes European edge locations so eu-west-1 certificates become selectable
    Show answer and explanation

    Answer: A) Request or import a certificate in ACM in us-east-1 that includes shop.example.com, and attach it to the distribution

    For viewer-facing HTTPS on a CloudFront alternate domain name, an ACM certificate must be requested or imported in us-east-1 and must cover the domain name. A certificate in the application's Region won't appear in the list.

    • ACorrect. To use an ACM certificate for HTTPS between viewers and CloudFront, you must request or import it in US East (N. Virginia), us-east-1, no matter where the rest of the application runs. The certificate's SAN field must also cover the alternate domain name.
    • BIncorrect. CloudFront can't use an ACM certificate from another Region through a resource share. For viewer HTTPS, the certificate must be in ACM in us-east-1.
    • CIncorrect. A certificate on an ELB origin (which can be in any Region) secures only the connection between CloudFront and the origin. Viewers connecting to the alternate domain name need a certificate attached to the distribution, issued in us-east-1.
    • DIncorrect. The price class only controls which edge locations serve content. It has no effect on which Region CloudFront reads ACM certificates from, which is always us-east-1.
  7. Question 7 · Security

    A developer is configuring the security group for a fleet of application servers in an Auto Scaling group. Instead of a CIDR range, the inbound rule names the load balancer's security group as the source. What is the main benefit of this approach?

    • AThe rule allows traffic from whatever instances are associated with the referenced group, so it stays valid when their private IP addresses change.
    • BThe rule copies the referenced group's inbound rules into this group, so both groups enforce one shared rule set.
    • CThe rule allows traffic from the referenced group's instances using their public or Elastic IP addresses across the internet.
    • DThe rule can deny traffic from the referenced group's instances, which a rule based on a CIDR range cannot express.
    Show answer and explanation

    Answer: A) The rule allows traffic from whatever instances are associated with the referenced group, so it stays valid when their private IP addresses change.

    When a rule names a security group as the source, it allows traffic from the private IPs of whatever instances belong to that group right now. The rule keeps working as instances scale in, scale out, or get replaced.

    • ACorrect. When a security group is the source, the rule applies to all instances associated with that group and allows traffic from their private IP addresses. You don't need to edit the rule when instances are replaced or get new IPs.
    • BIncorrect. AWS docs state that no rules from the referenced security group are added to the security group that references it.
    • CIncorrect. Security group referencing works with the private IP addresses of the associated instances' network interfaces, not their public or Elastic IP addresses.
    • DIncorrect. Security groups support only allow rules, whatever the source type. You can't write deny rules in a security group.
  8. Question 8 · Security

    An application calls an Amazon Bedrock model through the system-defined US cross-Region inference profile from us-east-1. The profile can route requests to us-east-1, us-east-2 and us-west-2. The application role allows bedrock:InvokeModel on the inference profile ARN and on the foundation model ARN in us-east-1 only. Some requests succeed and others fail with AccessDeniedException. What is the most likely fix?

    • AEnable private DNS on the bedrock-runtime interface endpoint so requests stay in us-east-1
    • BAdd bedrock:InvokeModelWithResponseStream to the statement, because the profile streams across Regions
    • CAllow bedrock:InvokeModel on the foundation model ARN in every Region that the inference profile can route to
    • DCreate an application inference profile and send requests to it, because system-defined profiles can't be used with IAM roles
    Show answer and explanation

    Answer: C) Allow bedrock:InvokeModel on the foundation model ARN in every Region that the inference profile can route to

    A role that invokes a cross-Region inference profile needs permission on the profile ARN and on the foundation model ARN in every destination Region of the profile.

    • AIncorrect. Private DNS controls how the endpoint hostname resolves inside the VPC. It doesn't stop the inference profile from routing a request to another Region, and it isn't related to an IAM AccessDeniedException.
    • BIncorrect. That action is needed only for streaming calls (InvokeModelWithResponseStream or ConverseStream). The failing requests are ordinary invocations, and streaming permissions don't cover other Regions.
    • CCorrect. The Bedrock documentation says that when you allow an inference profile in a policy, you must also allow the foundation model in each Region associated with it. Requests routed to us-east-2 or us-west-2 are denied because only the us-east-1 model ARN is allowed.
    • DIncorrect. System-defined inference profiles work with IAM roles; the documentation gives example policies for them. An application inference profile is used for cost tracking and still needs the same per-Region model permissions.
  9. Question 9 · Security

    A web application stores session tokens and needs to prevent them from being read by client-side JavaScript in the browser, to reduce the impact of a cross-site scripting (XSS) vulnerability. What cookie attribute helps with this?

    • AHttpOnly
    • BSameSite=None with no other restriction
    • CA longer expiration time
    • DStoring the token in localStorage instead of a cookie
    Show answer and explanation

    Answer: A) HttpOnly

    • AThe HttpOnly attribute prevents client-side scripts from accessing the cookie via document.cookie, reducing the risk that an XSS vulnerability could be used to steal the session token.
    • BSameSite controls whether a cookie is sent on cross-site requests, related to CSRF risk, not whether JavaScript can read the cookie's contents.
    • CA longer expiration increases exposure time if the token is stolen; it doesn't prevent JavaScript from reading it.
    • DlocalStorage is fully accessible to JavaScript, making it more vulnerable to theft via XSS than an HttpOnly cookie, not less.
  10. Question 10 · Testing and Deployment

    A team's web front end is hosted with AWS Amplify Hosting and connected to a Git repository. The team wants every pull request to get its own temporary, fully deployed copy of the site for review, which is removed when the pull request is closed. What should the developer enable?

    • AA separate Amplify app for each developer, each connected to the main branch
    • BWeb previews (pull request previews) for the branch that the pull requests target
    • CA custom domain with a subdomain for the main branch only
    • DPassword protection on the production branch so reviewers can test changes there
    Show answer and explanation

    Answer: B) Web previews (pull request previews) for the branch that the pull requests target

    Amplify Hosting web previews deploy each pull request to its own temporary environment and remove it when the pull request closes.

    • AIncorrect. Apps per developer all deploy main. They don't create an environment per pull request or clean up when it closes.
    • BCorrect. Amplify web previews deploy each pull request to a unique preview URL and delete the preview when the pull request is merged or closed.
    • CIncorrect. A custom domain names an existing branch deployment. It doesn't create per-pull-request environments.
    • DIncorrect. This limits who sees production but still makes reviewers test unmerged changes in production, which is what previews avoid.
  11. Question 11 · Testing and Deployment

    A team needs to upgrade a production Amazon RDS for MySQL DB instance to a new major engine version. They want to test the upgraded database against current production data before cutover, keep downtime to a minimum and avoid changing the application's database endpoint. Which approach meets these requirements?

    • ACreate an RDS blue/green deployment, upgrade the engine in the green environment, test it and then switch over
    • BConvert the instance to a Multi-AZ deployment, then modify the engine version and apply the change immediately
    • CRestore the latest snapshot to a new instance, upgrade and test that copy, then point the application to it
    • DTurn on Auto minor version upgrade so RDS applies the new major version during the next maintenance window
    Show answer and explanation

    Answer: A) Create an RDS blue/green deployment, upgrade the engine in the green environment, test it and then switch over

    RDS Blue/Green Deployments keep a green copy in sync with production, so you can upgrade and test the new engine version there. You then switch over, typically in under a minute, with no data loss and no endpoint change.

    • AA blue/green deployment creates a staging (green) environment that RDS keeps in sync with production through replication. You can upgrade the major engine version in green and test it without affecting production. The switchover typically takes under a minute with no data loss, and the green instances take over the production names and endpoints, so the application doesn't need to change.
    • BThis is still an in-place upgrade of the production instance. It gives no separate environment for testing before the change, and RDS documents that engine upgrades require downtime. AWS points to blue/green deployments as the way to minimize that downtime.
    • CThe restored copy stops receiving production writes once the snapshot is taken, so data written afterward would be missing at cutover. The application would also need to change to the new instance's endpoint.
    • DAuto minor version upgrade applies only minor versions. RDS doesn't apply major version upgrades automatically; you must modify the instance yourself, and this option provides no testing environment.
  12. Question 12 · Testing and Deployment

    A team is creating an AWS CodePipeline pipeline whose source is a GitHub repository. Each push to the main branch must start the pipeline automatically. The team wants the integration that AWS currently recommends and does not want to create or rotate GitHub personal access tokens. Which source configuration should the team use?

    • AA GitHub (via GitHub App) source action that uses an AWS CodeConnections connection to the repository
    • BA GitHub (via OAuth app) source action that uses a token stored in AWS Secrets Manager and a webhook
    • CAn Amazon S3 source action that polls a bucket where a scheduled job uploads a zip of the repository
    • DAn AWS CodeCommit source action that points to the GitHub repository's HTTPS clone URL
    Show answer and explanation

    Answer: A) A GitHub (via GitHub App) source action that uses an AWS CodeConnections connection to the repository

    For GitHub sources, CodePipeline recommends the GitHub (via GitHub App) action backed by an AWS CodeConnections connection. It avoids personal access tokens and starts the pipeline on pushes by default. The older OAuth app action is no longer recommended.

    • ACorrect. AWS recommends the GitHub (via GitHub App) action, which is the CodeStarSourceConnection provider backed by a CodeConnections connection. It authenticates through an installed GitHub App, so no personal access token is needed. It starts the pipeline on new commits by default, and the connection manages change detection.
    • BIncorrect. AWS still supports the OAuth app action but no longer recommends it. It depends on OAuth or personal access tokens, which the team wants to avoid, and it uses a separate webhook to detect changes.
    • CIncorrect. This is an indirect workaround, not the recommended GitHub integration. A scheduled upload also does not start the pipeline on each push to main.
    • DIncorrect. A CodeCommit source action can only use CodeCommit repositories. It cannot reference a repository hosted on GitHub.
  13. Question 13 · Troubleshooting and Optimization

    Customers say a single-page web application feels slow on some devices and browsers. The team wants page load times, client-side JavaScript errors, and breakdowns by browser and device. The data must come from actual customer sessions in production, not scripted tests. Which solution meets these requirements?

    • ACreate an Amazon CloudWatch RUM app monitor and add its web client code snippet to the application
    • BCreate Amazon CloudWatch Synthetics canaries that load each page on a schedule from several Regions
    • CEnable AWS X-Ray active tracing on the API Gateway stage and the backend Lambda functions
    • DConfigure Amazon Route 53 health checks with latency measurement against the application endpoint
    Show answer and explanation

    Answer: A) Create an Amazon CloudWatch RUM app monitor and add its web client code snippet to the application

    CloudWatch RUM collects page load times, client-side errors, and device and browser breakdowns from actual user sessions in production. Synthetics, X-Ray, and Route 53 health checks rely on simulated traffic or server-side data.

    • ACloudWatch RUM collects client-side data from actual user sessions, including page load times, client-side errors, and breakdowns by device type and browser. Its web client snippet is added to the application and samples a configurable percentage of sessions.
    • BSynthetics canaries run scripted, simulated traffic. They do not show what actual customers experience on their own devices and browsers.
    • CX-Ray traces requests through backend services. On its own, it does not capture browser page load times or JavaScript errors.
    • DRoute 53 health checks probe endpoints from AWS checker locations. They measure endpoint availability and latency, not the browser experience of actual users.
  14. Question 14 · Troubleshooting and Optimization

    A Lambda function's CloudWatch Logs show "Runtime.ImportModuleError: Cannot find module" immediately on every invocation. What is the most likely cause?

    • AA required dependency wasn't included in the deployment package, or the handler path/module name is misconfigured
    • BThe function's IAM role is missing a permission
    • CThe function's reserved concurrency is set too low
    • DThe DynamoDB table the function reads from doesn't exist
    Show answer and explanation

    Answer: A) A required dependency wasn't included in the deployment package, or the handler path/module name is misconfigured

    • AThis error typically means Lambda can't locate a module the handler code tries to import — either because a dependency was left out of the deployment package/layer, or the configured handler string doesn't correctly point to the actual file/module structure that was deployed.
    • BA permissions issue typically surfaces as an AccessDenied-style error at the point a specific AWS API call is attempted, not as a module-import failure at function startup.
    • CA low concurrency setting would cause throttling errors under load, not a module-import failure that happens on every single invocation regardless of concurrency.
    • DA missing DynamoDB table would cause an error when the function actually tries to query it, not an import error that occurs before the handler code even starts running.
  15. Question 15 · Troubleshooting and Optimization

    An application publishes custom CloudWatch metrics for request count, error rate, and p99 latency. The on-call team wants a persistent, shareable single view that shows graphs of all three metrics next to the current state of the related alarms, so they can check application health quickly during incidents. Which CloudWatch feature should the developer use?

    • AA CloudWatch dashboard containing metric graph widgets and alarm status widgets
    • BA CloudWatch composite alarm whose rule expression combines the three alarms
    • CA saved CloudWatch Logs Insights query that returns the three metrics over time
    • DA CloudWatch Contributor Insights rule that tracks the three metrics by contributor
    Show answer and explanation

    Answer: A) A CloudWatch dashboard containing metric graph widgets and alarm status widgets

    A CloudWatch dashboard is the persistent, shareable single view for graphing several metrics alongside alarm states. Composite alarms combine alarm states, while Logs Insights and Contributor Insights analyze log data.

    • ACloudWatch dashboards give a single, customizable view of selected metrics and alarms, even across Regions. Team members can share them as a common view during operational events, which meets every requirement.
    • BA composite alarm combines the states of other alarms with a rule expression (AND/OR/NOT) and can trigger actions. It produces one alarm state and does not show metric graphs.
    • CLogs Insights queries run against log data in log groups. They do not give a persistent combined view of custom metrics published to CloudWatch Metrics together with their alarm states.
    • DContributor Insights analyzes log data to find top-N contributors, such as the noisiest hosts or IP addresses. It is not a way to arrange several metric graphs and alarm states in one view.

Ready for a full DVA-C03 practice exam?

These are a sample from the CertRidge question bank. Full practice exams match the real exam's length, time limit and domain weights, with every answer explained.

Original questions written from the official exam guide. Not affiliated with AWS; never copied from the real exam.