Skip to content

Required IAM Permissions

The deploying IAM user or role requires permissions to create and manage resources across multiple AWS services. Below is the minimum set of IAM permissions required for deployment.

ServiceActionsUsed By
CloudFormationcloudformation:*CDK stack deployment
IAMiam:*Create roles/policies for Lambda, ECS, Step Functions
SSMssm:GetParameter, ssm:PutParameter, ssm:DeleteParameterCross-stack resource discovery
KMSkms:Create*, kms:Describe*, kms:Enable*, kms:List*, kms:Put*, kms:GenerateDataKey*, kms:DecryptEncryption for S3, DynamoDB, SQS
CloudWatchcloudwatch:*, logs:*Monitoring, alarms, log groups
ServiceActionsUsed By
EC2ec2:*VPC, subnets, NAT gateway, security groups, VPC endpoints
ELBelasticloadbalancing:*Private ALB for backend
ServiceActionsUsed By
Lambdalambda:*All Lambda functions and layers
ECSecs:*Backend Fargate service
ECRecr:*Container images for Lambda and ECS
CodeBuildcodebuild:*SageMaker model image build
Step Functionsstates:*Document analysis workflow
ServiceActionsUsed By
S3s3:*, s3express:*Document storage, LanceDB, sessions, frontend hosting
DynamoDBdynamodb:*Workflow state, backend data
ElastiCacheelasticache:*Redis for WebSocket connections
Neptuneneptune-db:*, rds:*Knowledge graph database
ServiceActionsUsed By
Bedrockbedrock:*Claude, Nova Embed, Cohere Rerank, BDA
Bedrock AgentCorebedrock-agentcore:*IDP Agent, Voice Agent, WebCrawler Agent, MCP Gateway
SageMakersagemaker:*PaddleOCR GPU endpoint
Transcribetranscribe:*Audio/video transcription
ServiceActionsUsed By
API Gatewayapigateway:*, apigatewayv2:*REST, HTTP, WebSocket APIs
CloudFrontcloudfront:*Frontend CDN
Cognitocognito-idp:*, cognito-identity:*User/Identity pools
ServiceActionsUsed By
SQSsqs:*Workflow queue, LanceDB writer, graph deletion
SNSsns:*OCR completion notifications
EventBridgeevents:*S3 upload detection, SFN failure catching
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"cloudformation:*",
"iam:*",
"ssm:*",
"kms:*",
"cloudwatch:*",
"logs:*",
"ec2:*",
"elasticloadbalancing:*",
"lambda:*",
"ecs:*",
"ecr:*",
"codebuild:*",
"states:*",
"s3:*",
"s3express:*",
"dynamodb:*",
"elasticache:*",
"neptune-db:*",
"rds:*",
"bedrock:*",
"bedrock-agentcore:*",
"sagemaker:*",
"transcribe:*",
"apigateway:*",
"apigatewayv2:*",
"cloudfront:*",
"cognito-idp:*",
"cognito-identity:*",
"sqs:*",
"sns:*",
"events:*",
"sts:*",
"application-autoscaling:*",
"aws-marketplace:Subscribe",
"aws-marketplace:Unsubscribe",
"aws-marketplace:ViewSubscriptions"
],
"Resource": "*"
}
]
}

This policy uses service-level wildcards. For production environments, consider restricting Resource to specific ARNs.

Since September 2025, Amazon Bedrock automatically enables access to all serverless foundation models. You no longer need to manually enable models in the Bedrock console. Access is controlled via IAM policies and SCPs.

  • Third-party models (Anthropic, Cohere, etc.): The IAM role must have AWS Marketplace permissions (aws-marketplace:Subscribe, aws-marketplace:Unsubscribe, aws-marketplace:ViewSubscriptions). On first invocation, Bedrock auto-subscribes in the background (up to 15 minutes).
  • Anthropic models: Require a one-time First Time Use (FTU) form submission (use case details) via the Bedrock console or PutUseCaseForModelAccess API before first invocation.
ModelModel IDPurpose
Claude Sonnet 4.6anthropic.claude-sonnet-4-6Segment analysis, document summarization, web crawler
Claude Haiku 4.5anthropic.claude-haiku-4-5-20251001-v1:0Search summarization, description, extraction
Amazon Nova Embedamazon.nova-2-multimodal-embeddings-v1:0Vector embeddings (1024d)
Amazon Nova Lite 2amazon.nova-2-lite-v1:0Video script extraction

To deny access to a specific model, use an IAM policy:

{
"Effect": "Deny",
"Action": ["bedrock:*"],
"Resource": ["arn:aws:bedrock:*::foundation-model/<model-id>"]
}

Lambda quotas may be limited depending on your account, causing deployment or runtime failures. Check current values in the Service Quotas dashboard.

QuotaDefault LimitRequiredNote
Lambda function memory10,240 MB (some new accounts: 3,008 MB)5,120 MBRequired for OCR Lambda. Some new accounts auto-increase with usage, cannot be manually requested
Lambda concurrent executions1,000 per region (may be lower)1,000Can request increase via Service Quotas. May take up to one day to take effect

See FAQ for details.

Before first deployment, CDK bootstrap is required:

Terminal window
npx cdk bootstrap aws://{ACCOUNT_ID}/{REGION}

CDK bootstrap creates an S3 bucket and IAM roles used during deployment. The bootstrapping user additionally needs:

  • cloudformation:CreateStack
  • s3:CreateBucket
  • iam:CreateRole, iam:AttachRolePolicy
  • ecr:CreateRepository
  • ssm:PutParameter