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/*"
]
}
Converseusesbedrock:InvokeModel;ConverseStreamusesbedrock: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.statuswarns you months ahead.