vpyzhyk/aws-secrets-bundle
A Symfony bundle that pulls secrets from AWS Secrets Manager into your application configuration at runtime, keeping credentials out of env files and source control. Simple setup for PHP apps.
Build vs. buy for secrets management. The core decision this package informs is whether to adopt AWS Secrets Manager as the source of truth for application configuration and credentials, versus continuing to ship secrets via environment variables or .env files baked into deploy pipelines. vyzhyk/aws-secrets-bundle is the thin glue that pulls Secrets Manager values into the Symfony DI container at runtime — it does not replace Secrets Manager, it just removes the custom bootstrap code you'd otherwise write and maintain.
Roadmap sequencing for a security/compliance workstream. If SOC 2, ISO 27001, or an enterprise security review is on the roadmap, "secrets are fetched at boot from a managed vault and never stored in the repo" is a control auditors ask about directly. This package is a single-sprint enabler for that control rather than a multi-quarter platform project.
Deployment topology decisions. Adopting a runtime secret-fetch pattern implies the app needs IAM permissions (task role, instance profile, or IRSA on EKS) and network reachability to the Secrets Manager endpoint. That dependency has downstream consequences for how you run containers, so it's a decision that touches infra, not just app code.
A caveat a PM should surface early: despite being framed here as a Laravel/PHP package, this is a Symfony bundle — it registers a bundle and manipulates the Symfony dependency-injection container. It is not usable in a Laravel application without meaningful adaptation. If the product surface is Laravel, this package is the wrong tool and you should look at aws/aws-sdk-php directly or a Laravel-specific secrets package.
Consider it when all of the following hold:
symfony/dependency-injection ^7.0 constraint introduced in 3.0.1.Look elsewhere when:
symfony/dependency-injection to ^7.0 in what is nominally a patch release. That is an install-breaking change for Symfony 6 projects, and shipping it as 3.0.1 rather than 3.1.0 signals loose semantic-versioning discipline. Pin explicitly and test upgrades.The 3.0.1 changes themselves — a dependency constraint bump and namespace fixes — are maintenance, not features. The namespace fix is mildly reassuring (it suggests the 3.0.0 release shipped with broken autoloading or incorrect class paths, so 3.0.0 was likely unusable); the DI bump is the item that actually affects adoption. Net: this release makes 3.0.x installable, but doesn't change the strategic picture.
To executives: This is a small, low-cost piece of plumbing that lets us stop storing database passwords and API keys in environment files and pull them from AWS's managed secret store instead. It's the kind of change that shortens security questionnaires and satisfies a common audit control. The trade-off is that it's a single-maintainer open-source component rather than a supported product, so we should treat it as a replaceable convenience layer — if it becomes a problem, swapping it for ~100 lines of our own code is a day of work. Recommended position: pilot it, don't standardize on it.
To engineering: This is a Symfony bundle that wires AWS Secrets Manager into the DI container. Two things to know before you pick it up. First, it is Symfony-only — it is not a Laravel package and does not apply if the service in question is a Laravel app. Second, release 3.0.1 bumped symfony/dependency-injection to ^7.0 as a patch release, which means Symfony 6 projects will fail to resolve it; pin the version deliberately and check your framework version before adding it. The release also fixes namespaces, which strongly suggests 3.0.0 had broken autoloading — start at 3.0.1, don't inherit an older pin.
The ask: a one-sprint spike on a non-production service to confirm IAM wiring, cold-start latency impact, and whether the bundle's caching behavior is sufficient. If those check out, adopt for new Symfony services; keep Laravel services on a separate path.
How can I help you explore Laravel packages today?