IAM AccessDeniedException AWS Origin: Platform & cloud Last updated 13 Oct 2026

AccessDeniedException: User: arn:aws:iam::... is not authorized to perform: service:Action on resource: ...

The IAM user or role making the call has no permission for that action on that resource — the message names both.

Exact message you may see is not authorized to performwith an explicit denybecause no identity-based policy allows the
Seen on: AWS

Meaning

The error is precise: the principal ARN, the action (e.g. dynamodb:PutItem, logs:CreateLogGroup) and the resource. Add exactly that to the role’s policy. If it says “with an explicit deny”, an SCP, permission boundary or resource policy blocks it.

Common causes

  • Role policy missing the action/resource
  • Lambda/ECS execution role lacks permissions (logs, secrets)
  • Explicit deny in SCP, boundary or resource policy
  • Resource ARN in the policy doesn’t match (wildcard, region, account)

⚡ Quick fix

  1. Copy the action and resource from the message into the role’s policy
  2. Simulate: aws iam simulate-principal-policy
  3. For “explicit deny”, check SCPs and resource policies

Detailed fix by platform

AWS CLI

  1. aws iam simulate-principal-policy --policy-source-arn arn:aws:iam::123456789012:role/app-role --action-names dynamodb:PutItem --resource-arns arn:aws:dynamodb:eu-west-1:123456789012:table/orders

IAM

  1. { "Effect": "Allow", "Action": ["dynamodb:PutItem"], "Resource": "arn:aws:dynamodb:eu-west-1:123456789012:table/orders" }

How to diagnose

  1. Principal — Which role is calling?
  2. Action/resource — From the message
  3. Deny — "explicit deny" wording?

🔧 Still not fixed?

Many errors look alike. If the steps above didn’t solve it, one of these is probably what you’re facing:

Where this error sits

Origin: Platform & cloud. Errors that are often confused with or caused by this one (click to open):

AccessDenied — AWS S3: AccessDenied (403) when calling GetObject / PutObject (AWS)AccessDeniedalready exists in stack — CloudFormation: Resource ... already exists (AlreadyExists / already exists in stack) (AWS)already exists in sta…AuthorizationFailed — Azure: AuthorizationFailed — The client does not have authorization to perform action (Azure)AuthorizationFailedAWS.SimpleQueueService.NonExistentQueue — SQS: The specified queue does not exist (AWS.SimpleQueueService.NonExistentQueue / QueueDoesNotExist) (AWS)AWS.SimpleQueueServic…Health checks failed — ALB target unhealthy: Health checks failed with these codes: [404] / Request timed out (AWS)Health checks failedKMS AccessDenied kms:Decrypt — KMS: not authorized to perform: kms:Decrypt (or the key policy does not allow access) (AWS)KMS AccessDenied kms:…MessageRejected — SES MessageRejected: Email address is not verified. The following identities failed the check in region (AWS)MessageRejectednot authorized to access this resource — API Gateway 403: User is not authorized to access this resource with an explicit deny (AWS)not authorized to acc…IAM Acces…

Explore the map of this error Full error map →

🧠 Still stuck? Analyze your error

Paste the full message, response headers or stack trace — we'll detect the platform and point to the most likely cause.

💬 What worked for others

No tips yet — did something else fix this for you?

Share what worked for you

Tips are checked by an editor before they appear. Links are removed.