Overview
AWS Secrets Manager stores sensitive data like database credentials, API keys, and tokens. Fjall automatically creates and manages secrets for database credentials when you useDatabaseFactory - you typically don’t need to create them manually.
Automatic Management
When you create databases withDatabaseFactory, Fjall automatically:
- Generates strong passwords
- Stores credentials in Secrets Manager
- Grants access to compute resources
- Injects secrets as environment variables
Accessing Database Credentials
In ECS Containers
UsecontainerSecretsImport to inject secrets:
In Lambda Functions
Access secrets via environment or direct retrieval:Custom Secrets
Create Application Secrets
For API keys, tokens, or other sensitive data:Store JSON Secrets
Import Existing Secrets
Reference secrets created elsewhere:Secret Rotation
Automatic Database Rotation
Fjall-managed database secrets support rotation:Custom Rotation
For non-database secrets, implement custom rotation:Granting Access
Read Access
Write Access
DatabaseFactory Helper Methods
Convenient methods for database secrets:Retrieving Secrets in Code
Node.js Example
Python Example
Best Practices
- Use DatabaseFactory helpers for database credentials
- Use containerSecretsImport instead of environment variables for sensitive data
- Never hardcode secrets in code or configuration files
- Grant minimal permissions (read-only when possible)
- Enable rotation for long-lived secrets
- Use descriptive secret names like
myapp/environment/purpose - Store secrets as JSON for multiple values
- Leverage Fjall’s automatic management for databases
Cost Optimization
Secrets Manager Pricing
- $0.40 per secret per month
- $0.05 per 10,000 API calls
Reduce Costs
- Cache secrets in Lambda/ECS (don’t fetch on every request)
- Combine secrets in JSON format to reduce secret count
- Use Parameter Store for non-sensitive configuration (free tier)
- Delete unused secrets from old environments
Common Patterns
Multi-Environment Secrets
Shared Secrets
Troubleshooting
Access Denied Errors
If services can’t read secrets:- Check IAM permissions - Did you grant read access?
- Verify secret ARN - Is the environment variable correct?
- Check VPC endpoints - Lambda in VPC needs Secrets Manager endpoint
- Review resource policies - Any explicit denies?
Secret Not Found
- Verify secret name/ARN is correct
- Check the secret exists in the same region
- Ensure secret hasn’t been deleted (check CloudTrail)
Connection Failures
For database secrets:- Verify
connectionsarray includes database - Check security groups allow traffic
- Ensure secret contains correct credentials
- Test with
containerSecretsImporthelper methods
See Also
- DatabaseFactory - Automatic secret management
- ComputeFactory - Inject secrets into containers
- IAM Role - Grant secret access permissions
- KMS Key - Encrypt secrets at rest