Home / AI & GenAI

AI & GenAITroubleshootingBeginner

Amazon Bedrock AccessDeniedException: model access, IAM and regions

Work through model access, IAM actions and resources, inference profiles, region availability, SCPs and VPC endpoint policies when Bedrock calls fail with access or validation errors.

Deepak Bhardwaj2 min read

Applies toAmazon Bedrock (InvokeModel, Converse, ConverseStream APIs)

Read the exact message

Error Usual cause
AccessDeniedException: You don't have access to the model with the specified model ID Model access not granted in this account and region (or the Marketplace subscription is missing)
AccessDeniedException: User: arn:aws:... is not authorized to perform: bedrock:InvokeModel on resource: ... IAM policy missing the action or resource
ValidationException: Invocation of model ID ... with on-demand throughput isn't supported. Retry your request with the ID or ARN of an inference profile This model must be called through a (cross-region) inference profile
ResourceNotFoundException / The provided model identifier is invalid Wrong model ID, or the model isn't offered in this region
explicit deny in a service control policy An organisation SCP blocks Bedrock or the region

1. Model access

In the Bedrock console → Model access (in the same region you call), check the model shows Access granted. Some third-party models require accepting an end-user licence or an AWS Marketplace subscription, which needs aws-marketplace:Subscribe permissions for whoever enables it.

aws bedrock list-foundation-models --region us-east-1 \
  --query "modelSummaries[?contains(modelId, 'anthropic')].[modelId,modelLifecycle.status]" --output table

2. IAM policy

{
  "Effect": "Allow",
  "Action": ["bedrock:InvokeModel", "bedrock:InvokeModelWithResponseStream"],
  "Resource": [
    "arn:aws:bedrock:*::foundation-model/*",
    "arn:aws:bedrock:us-east-1:111122223333:inference-profile/*"
  ]
}
  • Converse uses bedrock:InvokeModel; ConverseStream uses bedrock:InvokeModelWithResponseStream.
  • With a cross-region inference profile, the request may be served in other regions in the profile. The policy must allow the foundation model ARNs in those regions too (hence * for the region above, or list them).
aws sts get-caller-identity       # confirm which role the app really uses

3. Inference profiles

aws bedrock list-inference-profiles --region us-east-1 \
  --query "inferenceProfileSummaries[].[inferenceProfileId,status]" --output table

Use the profile ID (for example one starting with us. or eu.) as the modelId in the call.

4. Organisation and network controls

  • SCPs: a region deny-list SCP often blocks the regions a cross-region profile routes to. Ask the cloud platform team to allow Bedrock in those regions.
  • VPC endpoint (com.amazonaws.<region>.bedrock-runtime): its endpoint policy must allow the actions and resources.
  • Permission boundaries on the role can silently remove the permission.

5. Test with the CLI as the app's role

aws bedrock-runtime converse --region us-east-1 --model-id <model-or-profile-id> \
  --messages '[{"role":"user","content":[{"text":"ping"}]}]'

Tip

Put the model ID and region in configuration, not code, and record the model's lifecycle status. Models get legacy status before end of life; a scheduled check of modelLifecycle.status warns you months ahead.