Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Async Aws Bundle Laravel Package

async-aws/async-aws-bundle

A small Symfony bundle for AsyncAws that handles client configuration and autowiring. It registers AsyncAws clients as Symfony services, loads credentials and endpoint settings from config or environment variables, and lets you inject any AWS client directly into your services.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture Fit

  • Framework mismatch is the headline. async-aws/async-aws-bundle is a Symfony HttpKernel bundle. It ships a Configuration tree and a DependencyInjection\Extension that are only ever invoked by Symfony's Kernel::registerBundles() / ContainerBuilder lifecycle. Laravel has no equivalent contract, no bundle auto-discovery, and no config-tree compilation step. In a Laravel app the bundle is inert unless we manually instantiate Symfony's DI container inside a service provider — architecturally indefensible.
  • The bundle is thin by design. Its own README calls it "a small SymfonyBundle that helps with configuration and autowiring." Nearly all the substance (clients, credential providers, async I/O via Symfony HttpClient) lives in async-aws/core and the per-service packages, which are framework-agnostic, PSR-18/PSR-17 based, and require no Symfony runtime. That is the real integration surface for us.
  • What we'd actually adopt: granular packages (async-aws/s3, async-aws/sqs, async-aws/dynamo-db, etc.) bound into Laravel's container by a first-party service provider we own (~100–200 LOC). We keep Laravel's config/env conventions and avoid a second DI container.
  • Async model caveat. async-aws returns promises and resolves them via Symfony HttpClient's curl multiplexing. Under PHP-FPM with a synchronous Laravel request lifecycle, the concurrency win is real but bounded — it mostly helps batch/concurrent AWS calls inside a job or command, not across requests. Under Octane the picture improves but long-lived container state and connection reuse need explicit verification.

Integration Feasibility

  • Installing the bundle in Laravel: not recommended. It would pull symfony/http-kernel, symfony/config, and symfony/dependency-injection as runtime dependencies purely to execute code Laravel never calls, and it introduces a package-lifetime coupling to an artifact whose only API is Symfony-internal.
  • Installing the clients in Laravel: straightforward. Register a singleton provider that reads config/async_aws.php, constructs each client with region/credentials/endpoint, and binds S3ClientInterface, SqsClientInterface, etc. Laravel autowiring then resolves them in controllers, jobs, and listeners exactly as the Symfony bundle does for Symfony.
  • Credential handling is where the bundle's value concentrates — credential_provider, credential_provider_cache, SSM parameter loading, secrets with max_results. We must re-implement that logic ourselves (~1–2 days for a solid version with a cache-backed provider), or copy the extension's approach as reference. This is the single largest piece of "free" work we give up by skipping the bundle.
  • Testing: async-aws ships MockClient, which makes unit and feature tests clean without LocalStack. This is a genuine ergonomic advantage over aws-sdk-php's mocking story.

Technical Risk

  • High — dependency identity. We are evaluating a 26-star bundle with 0 listed dependents and no Laravel presence. Its value to us is almost entirely indirect (it validates the client library's Symfony integration), so the score should be read as a signal about the bundle, not about async-aws itself.
  • Medium — upstream concentration. async-aws is a small-maintainer, community, MIT project with no vendor SLA. Bus factor and roadmap responsiveness are open questions relative to aws-sdk-php, which is AWS-owned and first-party.
  • Medium — feature parity gaps. async-aws is not a drop-in for AWS SDK v3. We need to confirm per-service coverage for what we use: S3 multipart/transfer-manager behavior, SQS partial-batch failures and FIFO semantics, DynamoDB paginators, waiters, presigned URL expiry, and any X-Ray/observability hooks we rely on today.
  • Medium — async debugging. Promise chains, timeout semantics, and error propagation differ from aws-sdk-php's synchronous exceptions. Without prior team exposure this becomes a recurring debugging tax.
  • Low — supply chain hygiene. The provided metadata lists a release dated 2026-09-09, which is anomalous relative to the changelog. Before adoption, verify tags and provenance directly on Packagist/GitHub rather than trusting aggregate metadata.

Key Questions

  1. Which AWS services do we actually call today, and what's the call volume/concurrency profile? (If it's S3-only, this evaluation collapses to "no.")
  2. Do we have a latency or throughput problem that concurrent AWS calls measurably solve, or is this a DX/boilerplate play?
  3. Are we running PHP-FPM or Octane? Under FPM, how much of the async benefit survives?
  4. Which aws-sdk-php features are load-bearing for us — X-Ray, waiters, transfer manager, custom retry/backoff?
  5. Who owns the ~150 LOC Laravel provider, and is that a cost we accept versus the bundle's config/autowiring?
  6. IAM roles vs. static keys vs. SSO — and does our deployment target support instance/task-role credential resolution?

Integration Approach

Stack Fit

  • Target: Laravel 11/12, PHP 8.2+ (hard floor — 1.16.0 dropped <8.2), PSR-18 HTTP client (Symfony HttpClient by default; swappable to Guzzle if we need a single HTTP stack).
  • Adopt: async-aws/core + only the per-service packages we need. Do not adopt async-aws/async-aws-bundle.
  • Own: a AsyncAwsServiceProvider + config/async_aws.php mirroring the bundle's config shape (clients, credential_provider, credential_provider_cache, secrets, ssm) so any future migration back to a Symfony service — or to the bundle if we ever run Symfony — is a config move, not a rewrite.
  • Bind interfaces, not classes. Type-hint S3ClientInterface / SqsClientInterface in our domain code so the provider is the only file that knows about async-aws.

Migration Path

  • Do not big-bang. Coexist: leave existing aws-sdk-php usage in place behind our own narrow port interfaces (e.g., ObjectStorage, QueuePublisher), then swap implementations service by service.
  • Phase 0 (1 sprint): spike one non-critical read path (S3 GetObject or SSM parameter read) through async-aws under a Laravel provider. Measure cold-start and request overhead versus the current client.
  • Phase 1: ship the credential provider + cache (the bundle's most valuable logic, re-implemented). Nothing else moves until credentials are boring and auditable.
  • Phase 2: migrate SQS consumer/producer or S3 writes — whichever has the clearest concurrency win and the cleanest rollback.
  • Phase 3: long tail. Freeze aws-sdk-php at whatever remains, or retire it entirely.
  • Rollback: the port interface plus a config flag flips each service back to aws-sdk-php without code changes. Insist on this before Phase 2.

Compatibility

  • Laravel's container is PSR-11 compatible; async-aws clients are plain constructors, so no adapter layer is needed.
  • Symfony HttpClient is already a transitive reality in many Laravel stacks; if it isn't, we either accept it or bind Guzzle via Psr\Http\Client\ClientInterface. Resolve this in Phase 0 — it determines whether we add a third HTTP stack.
  • Watch for container-scope issues under Octane: clients must be resolvable as singletons without leaking credentials across requests (they won't, but the credential cache must be verified as process-safe).

Sequencing

  1. Service inventory + concurrency profile (1 week, no code).
  2. Phase 0 spike + HTTP-stack decision.
  3. Laravel service provider + config schema + credential cache (with cache-failure logging ported from the bundle's async_aws channel behavior).
  4. Port interfaces on existing aws-sdk-php callsites.
  5. Service-by-service cutover behind flags.
  6. Retire or quarantine the legacy client.

Operational Impact

Maintenance

  • Owned surface: ~150–200 LOC of provider + config. Small, but permanently ours, and it re-implements upstream logic that can drift.
  • Upstream surface: async-aws releases frequently (17 minor versions of the bundle, each adding services). Minor-version churn is real; lock to ^3.0 for core and pin per-service packages, review changelogs on a schedule rather than continuously.
  • Do not take a dependency on the bundle's Extension/Configuration classes even as a reference at runtime — copy the approach, not the coupling.

Support

  • Community-only, MIT, no vendor SLA. Contrast with aws-sdk-php, where AWS provides first-party support and same-day API coverage.
  • Escalation path for a production AWS breakage is "open a GitHub issue." Accept this explicitly, in writing, before Phase 2 — not after.
  • Mitigation: keep the port interfaces so a service can revert to aws-sdk-php in hours, not days.

Scaling

  • Wins: concurrent AWS calls via curl multiplexing reduce wall-clock time for fan-out patterns (multi-object S3 reads, batch DynamoDB writes, parallel SQS publishes). Credential and SSM caching cuts per-request metadata calls — meaningful at high request volume.
  • Limits: PHP-FPM's per-request model caps the benefit; real throughput gains come from moving work into queued jobs. Size expectations accordingly — this is not a substitute for Horizon/queue architecture.
  • Memory/connection behavior under Octane needs a load test before we commit; clients holding HTTP connections across requests is the specific thing to measure.

Failure Modes

  • Credential cache failure — the bundle logs these to the async_aws Monolog channel; we must replicate that into Laravel's logging with the same channel name so existing runbooks/alerts port over.
  • Async timeout / promise rejection — surfaces differently than aws-sdk-php exceptions. Every callsite needs an explicit catch and a defined fallback; silent partial failures are the primary risk.
  • SQS partial batch failures — must be handled explicitly (delete only successful messages) or we get duplicate processing.
  • S3 multipart/transfer behavior diverges from the AWS SDK; large-object uploads need their own test matrix.
  • Observability gap — no X-Ray tracing. If tracing is a requirement, that alone may disqualify the migration.

Ramp-Up

  • Team is fluent in aws-sdk-php, not async-aws. Expect 1–2 weeks of learning curve on promise handling, credential providers, and the MockClient testing pattern.
  • Budget one engineer as owner for the provider and the migration flags; this needs a named DRI, not a shared responsibility.
  • Recommend an internal one-pager comparing aws-sdk-php vs async-aws call patterns for the three services we use most, so reviewers see the diff before Phase 2.

Recommendation

Reject the bundle; evaluate the underlying clients on their own merits. The Symfony bundle offers a Laravel team nothing it can use, and wrapping Symfony's DI container inside Laravel is a maintenance liability with no payoff. The underlying async-aws packages are legitimate and do solve boilerplate and concurrency problems — but at 0 dependents and with a feature-parity gap against first-party tooling, this is a Phase 0 spike, not a roadmap commitment. Gate any further investment on a measured latency/throughput win in one non-critical service and an honest answer to whether we actually have the concurrency problem this solves.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
3mdikram/worldmoneywords
snowsoft/config
itmosoft/laravel-subscriptions
larva/laravel-ai-qwen
diephp/sequences
users-au/socialite-provider
twidpay/twid-logger
mrnewport/laravel-plaid
mrnewport/laravel-repo
mrnewport/laravel-docsign
mrnewport/laravel-stow
mrnewport/laravel-flow
mrnewport/laravel-priceable
mrnewport/laravel-nestedterms
fredmeng/laravel-apidoc-generator
itstructure/laravel-multilingual-tools
pdustdar/elasticsearch
markupai/php-sdk
rlacerda83/lumem-microservice-shipment
uni-method/symfony-lib