lukewaite/laravel-aws-cache-adapter

Laravel Cache Adapter for AWS Credential Caching. Allows you to reduce calls to the ec2 metadata api.
25,356 5
Install
composer require lukewaite/laravel-aws-cache-adapter
Latest Version:v1.1.1
License:MIT
Last Updated:Feb 13, 2023
Links: GitHub  ·  Packagist
Maintainer: lukewaite

laravel-aws-cache-adapter

Provides an Aws\CacheInterface\CacheInterface compliant cache for the AWS SDK which uses the laravel Cache classes.

Latest Version on Packagist Software License Build Status Code Coverage

Purpose

When using EC2 Instance IAM Roles or ECS Task IAM Roles the AWS php sdk automatically performs lookups against the ec2 metadata api (169.254.169.254) to get credentials. These by default are not cached, and can occasionally be a source of trouble or slowdowns if the metadata api is slow/not responding.

This package allows you to configure certain laravel filesystems to be automatically loaded with a CacheInterface that will use a laravel cache store to cache the STS tokens returned, reducing requests to the metadata api.

Usage

Direct Usage of the Adapter

The LaravelCacheAdapter can be passed directly into Flysystem in your config/filesystems.php

    's3' => [
        'driver'      => 's3',
        'base-path'   => 'https://s3.amazonaws.com',
        'credentials' => new LaravelCacheAdapter(app('cache'))
        'bucket'      => env('AWS_BUCKET'),
        'region'      => env('AWS_REGION', 'us-east-1'),
    ],

Auto Insertion of the CredentialProvider via ServiceProvider

The default configuration settings are in /config/laravel-aws-cache.php. Copy this file to your own config directory to modify the values. You can publish this config using this command:

$ php artisan vendor:publish --provider="LukeWaite\LaravelAwsCacheAdapter\ServiceProvider"

Configuration

return [
    /**
     * A comma separated list of filesystems defined in `config/filesystems.php` to which the
     * credential cache should be applied.
     */
    'filesystems' => env('LARAVEL_AWS_CACHE_FILESYSTEMS', null),

    /**
     * Whether or not to iterate through the `filesystems` defined and apply the credential cache.
     */
    'enable' => env('LARAVEL_AWS_CACHE_ENABLE', false),

    /**
     * The Laravel cache store defined in `config/cache.php` to use.
     */
    'cache' => env('LARAVEL_AWS_CACHE_CACHE', 'file')
];

Related Packages

db1-fpp/laravel-elasticache

Add new cache and session driver to use AWS ElastiCache with auto discovery

1,318 2
codesleeve/laravel-stapler

Easy file upload management for the Laravel Framework.

415,266 556
maartenstaa/laravel-41-route-caching

This package allows you to cache your routes definitions, thereby speeding up ea...

383,241 25
aws/aws-sdk-php-laravel

A simple Laravel 9/10/11/12/13 service provider for including the AWS SDK for PH...

39,019,279 1,717
dusterio/laravel-aws-worker

Run Laravel (or Lumen) tasks and queue listeners inside of AWS Elastic Beanstalk...

5,931,907 307