Overview
IAM Roles grant AWS service permissions to your applications. Fjall automatically creates and manages IAM roles when you useComputeFactory - you rarely need to create them manually.
Automatic Management
Fjall’sComputeFactory automatically:
- Creates IAM roles for ECS tasks and Lambda functions
- Grants CloudWatch Logs permissions
- Configures ECR pull permissions for ECS
- Adds permissions for services in the
connectionsarray
Lambda Function Roles
Automatic Permissions
Lambda functions get automatic access to:- CloudWatch Logs (write logs)
- X-Ray (tracing, if enabled)
Custom Permissions via inlinePolicy
Add AWS service permissions:Grant Methods
Use resource grant methods for type-safe permissions:ECS Task Roles
Task Role vs Execution Role
Fjall creates both:- Execution Role: Used by ECS to pull images, write logs
- Task Role: Used by your application code to access AWS services
Grant Permissions to ECS
Database Access
Automatic via connections Array
When you add databases toconnections, Fjall automatically:
- Grants network access (security groups)
- Grants Secrets Manager read access for credentials
Common Permission Patterns
S3 Access
DynamoDB Access
SQS Access
SNS Access
Secrets Manager Access
Cross-Account Access
Assume Role
Allow access from another AWS account:Service-to-Service
Managed Policies
AWS Managed Policies
Common Managed Policies
AWSLambdaBasicExecutionRole- CloudWatch Logs (auto-added by Fjall)AmazonS3ReadOnlyAccess- Read all S3 bucketsAmazonDynamoDBReadOnlyAccess- Read all DynamoDB tablesSecretsManagerReadWrite- Secrets Manager accessAmazonSSMReadOnlyAccess- Parameter Store read
Custom Policy Statements
Inline Policy via PolicyStatement
Multiple Policies
Accessing Role Information
Get Role ARN
Use in Environment Variables
Best Practices
- Use grant methods instead of manual policy statements when possible
- Follow least privilege - only grant required permissions
- Let Fjall create roles for standard deployments
- Use connections array for database access
- Separate policies by purpose for clarity
- Avoid wildcards in resources when possible
- Test permissions after deployment
- Monitor with CloudTrail for access patterns
Troubleshooting
Access Denied Errors
- Check role has permission for the action
- Verify resource ARN matches
- Look for explicit denies in policies
- Check resource policies (S3, KMS, etc.)
- Review CloudTrail logs for detailed error
Role Not Found
- Verify role was created (check
api.taskRoleorlambda.role) - Ensure ComputeFactory call succeeded
- Check IAM console for role existence
Permissions Too Broad
See Also
- ComputeFactory - Automatic role creation
- DatabaseFactory - Database access patterns
- Secrets Manager - Grant secret access
- S3 Bucket - Grant bucket access