bref/secrets-loader
Load AWS SSM Parameter Store secrets into environment variables at runtime when using Bref on AWS Lambda. Any env var value starting with bref-ssm: is automatically replaced with the corresponding SSM parameter value. Install via composer require bref/secrets-loader.
.env paradigm and AWS serverless constraints.bref-ssm: prefixes in serverless.yml with actual SSM values at Lambda initialization—no PHP SDK calls or middleware required.env() helper if secrets are prefixed (e.g., DB_PASSWORD=bref-ssm:/db/password).config:cache may persist stale values. Requires explicit cache clearing or runtime reloading (e.g., via Bref\SecretsLoader\SecretsLoader::load() in a service provider).async-aws/ssm v2.x to avoid blocking Lambda cold starts, critical for performance-sensitive applications.ssm:GetParameter permissions. Over-permissive roles risk security leaks; under-permissive roles cause runtime failures./tmp or ElastiCache (shared across functions)./param:1). Hardcoded paths may break during rotations.SecureString decryption, or must secrets be stored as plaintext?bref-ssm: variables be resolved in non-Lambda environments (e.g., local Laravel dev)? Will a fallback to .env be needed?bref/secrets-loader with non-critical secrets (e.g., LOG_LEVEL=bref-ssm:/app/log-level).print_r($_ENV)).serverless.yml with bref-ssm: prefixes..env to reference SSM where applicable (e.g., DB_PASSWORD=bref-ssm:/db/password).async-aws/ssm (v1.3 or v2.x). Ensure Lambda’s execution role has the correct SDK permissions.{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Action": "ssm:GetParameter",
"Resource": "arn:aws:ssm:REGION:ACCOUNT_ID:parameter/my-app/*"
}]
}
serverless.yml to use bref-ssm: prefixes:
environment:
APP_KEY: bref-ssm:/laravel/app-key
DB_PASSWORD: bref-ssm:/db/production-password
env() function to confirm values are accessible.ParameterNotFound or AccessDenied errors.bref/secrets-loader for breaking changes (e.g., PHP 8.6 support). Test updates in staging.config:cache:
php artisan config:clear
provider:
environment:
BREF_DEBUG: true
SecretsLoader errors (e.g., missing IAM permissions).bref-ssm: variables with .env values.async-aws/ssm config.| Failure Scenario | Impact | Mitigation |
|---|---|---|
| SSM parameter missing | Lambda fails to start | Use bref-ssm:/default/fallback or default values in serverless.yml. |
| IAM permission denied | AccessDenied error at runtime |
Audit IAM policies; use least privilege. |
| SSM API throttling | Timeouts on cold starts | Implement retry logic or use local caching. |
| Laravel cache stale | Outdated secrets in config() |
Clear cache post-deployment or reload secrets at runtime. |
| Cross-region SSM access | Latency or failures | Replicate secrets via Secrets Manager or use global endpoints. |
How can I help you explore Laravel packages today?