The answer is that the missing s3:ListBucket permission is the most likely cause of the Access Denied error. This occurs because while the policy grants s3:GetObject to read the specific object, many SDK operations and the AWS Console first perform a ListObjects API call to resolve the object key path, which requires the s3:ListBucket permission on the bucket itself. Without it, the request fails even though the GetObject permission is present. On the AWS Certified Machine Learning Specialty MLS-C01 exam, this tests your understanding of how S3 permissions interact with common data access workflows, particularly when loading training data from S3. A common trap is assuming that GetObject alone is sufficient for all read operations, but the exam often hides this nuance in scenarios involving SDK calls or console access. Remember the mnemonic: “To get a file, you must first see the shelf”—ListBucket is the “shelf view” needed before you can grab the object.
MLS-C01 Exploratory Data Analysis Practice Question
This MLS-C01 practice question tests your understanding of exploratory data analysis. The scenario asks you to isolate a root cause — eliminate options that address a different problem before choosing. After answering, compare your reasoning against the explanation and wrong-answer breakdown below. Once you have made your selection, read the full explanation to reinforce the concept and understand why each distractor is designed to mislead on exam day.
A data scientist is trying to read a CSV file from S3 bucket 'my-bucket' with key 'training/data.csv' using an IAM role with the attached policy shown in the exhibit. The read operation fails with an Access Denied error. What is the most likely cause?
Clue words in this question
Noticing these words before you look at the options changes how you read each choice.
Clue: "most likely"
Why it matters: Probability qualifier — the question wants the most probable cause or outcome, not a guaranteed one. Eliminate low-probability options.
The policy does not include the s3:ListBucket permission, which is required to access the object.
To read an S3 object, the principal needs both s3:GetObject on the object and s3:ListBucket on the bucket (or at least the bucket-level permission to allow access). The policy only grants object-level permissions, not bucket-level ListBucket.
B
The object is encrypted with SSE-KMS and the role does not have kms:Decrypt permission.
Why wrong: The error message is Access Denied, not a KMS-related error. If KMS was the issue, the error would mention KMS.
C
The resource ARN in the first statement should be 'arn:aws:s3:::my-bucket/training' without the wildcard.
Why wrong: The resource ARN 'arn:aws:s3:::my-bucket/training/*' is correct for granting access to all objects under the 'training/' prefix.
D
The policy explicitly denies s3:GetObject because of the second statement with the trailing slash.
Why wrong: The second statement grants s3:GetObject on a resource that ends with a trailing slash, which is invalid for objects, but it does not deny access. The first statement still grants s3:GetObject on 'training/*'.
Answer the question above first, then reveal the full breakdown to understand why each option is right or wrong.
Correct answer & explanation
✓
The policy does not include the s3:ListBucket permission, which is required to access the object.
The s3:GetObject permission alone is insufficient to read an object from S3 when the request is made via the AWS Console or certain SDK operations that first list the bucket's contents. The s3:ListBucket permission is required for the ListObjects API call, which is often implicitly invoked to resolve the object key path. Without it, the read operation fails with an Access Denied error even if the GetObject permission is granted.
Key principle: Answer the scenario, not the keyword: identify the specific constraint before choosing the most familiar-sounding option.
Answer analysis
Option-by-option breakdown
For each option: why learners choose it and why it is or isn't the right answer here.
✓
The policy does not include the s3:ListBucket permission, which is required to access the object.
Why this is correct
To read an S3 object, the principal needs both s3:GetObject on the object and s3:ListBucket on the bucket (or at least the bucket-level permission to allow access). The policy only grants object-level permissions, not bucket-level ListBucket.
Clue confirmation
The clue word "most likely" in the question point toward this answer.
Related concept
Read the scenario before looking for a memorised answer.
✗
The object is encrypted with SSE-KMS and the role does not have kms:Decrypt permission.
Why it's wrong here
The error message is Access Denied, not a KMS-related error. If KMS was the issue, the error would mention KMS.
✗
The resource ARN in the first statement should be 'arn:aws:s3:::my-bucket/training' without the wildcard.
Why it's wrong here
The resource ARN 'arn:aws:s3:::my-bucket/training/*' is correct for granting access to all objects under the 'training/' prefix.
✗
The policy explicitly denies s3:GetObject because of the second statement with the trailing slash.
Why it's wrong here
The second statement grants s3:GetObject on a resource that ends with a trailing slash, which is invalid for objects, but it does not deny access. The first statement still grants s3:GetObject on 'training/*'.
Common exam traps
Common exam trap: answer the scenario, not the keyword
Cisco often tests the subtle distinction between object-level permissions (GetObject) and bucket-level permissions (ListBucket), where candidates mistakenly assume that granting GetObject alone is sufficient for all read operations, ignoring that many S3 interactions implicitly require ListBucket to resolve the object path.
Detailed technical explanation
How to think about this question
S3 authorization evaluates both identity-based policies and resource-based policies, and the s3:ListBucket permission is required for the ListObjects API call, which is often used by the AWS SDK or CLI to validate bucket existence and prefix resolution before performing GetObject. Even when using direct GetObject calls (e.g., via presigned URLs), some SDK clients may still issue a HEAD request that requires s3:ListBucket if the bucket is not already known to the client. In practice, this is a common misconfiguration when granting read access to a specific prefix without including ListBucket on the bucket itself.
KKey Concepts to Remember
Read the scenario before looking for a memorised answer.
Find the constraint that changes the correct option.
Eliminate answers that are true in general but not in this case.
TExam Day Tips
→Watch for words such as best, first, most likely and least administrative effort.
→Review why wrong options are wrong, not only why the correct option is correct.
Key takeaway
Answer the scenario, not the keyword: identify the specific constraint before choosing the most familiar-sounding option.
Real-world example
How this comes up in practice
A media company stores terabytes of video archives that are accessed once a year for audit purposes. Moving these objects to a cold storage tier (Azure Archive, S3 Glacier, or Google Nearline) costs a fraction of hot storage. Questions like this test whether you understand storage tiers, access frequency tradeoffs, and retrieval latency requirements.
What to study next
Got this wrong? Here's your next step.
Identify which exam domain this question belongs to, review the core concept, then practise similar questions from the same domain.
Exploratory Data Analysis — This question tests Exploratory Data Analysis — Read the scenario before looking for a memorised answer..
What is the correct answer to this question?
The correct answer is: The policy does not include the s3:ListBucket permission, which is required to access the object. — The s3:GetObject permission alone is insufficient to read an object from S3 when the request is made via the AWS Console or certain SDK operations that first list the bucket's contents. The s3:ListBucket permission is required for the ListObjects API call, which is often implicitly invoked to resolve the object key path. Without it, the read operation fails with an Access Denied error even if the GetObject permission is granted.
What should I do if I get this MLS-C01 question wrong?
Identify which exam domain this question belongs to, review the core concept, then practise similar questions from the same domain.
Are there clue words in this question I should notice?
Yes — watch for: "most likely". Probability qualifier — the question wants the most probable cause or outcome, not a guaranteed one. Eliminate low-probability options.
What is the key concept behind this question?
Read the scenario before looking for a memorised answer.
About these practice questions
Courseiva creates original exam-style practice questions with explanations and wrong-answer analysis. It does not publish real exam questions, exam dumps, or protected exam content. Learn why practice questions differ from exam dumps →
Share a tip, memory trick, or ask about the reasoning behind this question. Do not post real exam questions, leaked content, braindumps, or copyrighted exam material. Comments are moderated and may be removed without notice.
This MLS-C01 practice question is part of Courseiva's free Amazon Web Services certification practice question bank. Courseiva provides original exam-style practice questions with explanations, topic-based practice, mock exams, readiness tracking, and study analytics to help learners prepare for the MLS-C01 exam.
Question Discussion
Share a tip, memory trick, or ask about the reasoning behind this question. Do not post real exam questions, leaked content, braindumps, or copyrighted exam material. Comments are moderated and may be removed without notice.
Sign in to join the discussion.