In my project on Symfony 5, I need to have two different AWS_S3 config.
Steps I done so fare:
- Created class "NewFileSystem" that Extended Base class FileSystem.
<?php
namespace App\Factory;
use League\Flysystem\Filesystem;
class NewFileSystem extends Filesystem
{
}
- Added configuration in services.yaml
services:
usr_data.s3_client:
class: Aws\S3\S3Client
arguments:
-
version: 'latest'
region: "%env(AWS_S3_REGION)%"
credentials:
key: "%env(AWS_S3_KEY)%"
secret: "%env(AWS_S3_SECRET)%"
usr_data.s3_legacy_client:
class: Aws\S3\S3Client
arguments:
- version: 'latest'
region: "%env(AWS_S3_LEGACY_REGION)%"
credentials:
key: "%env(AWS_S3_LEGACY_KEY)%"
secret: "%env(AWS_S3_LEGACY_SECRET)%"
League\Flysystem\Filesystem: "@oneup_flysystem.s3_filesystem_filesystem"
App\Factory\NewFileSystem: "@oneup_flysystem.s3_legacy_filesystem"
- Added configuration in oneup_flysystem.yaml
oneup_flysystem:
adapters:
default_adapter:
local:
directory: '%kernel.root_dir%/../data/invoice-attachment'
tutorial_adapter:
local:
directory: '%kernel.root_dir%/../public/assets/tutorial'
permissions_adapter:
local:
directory: '%kernel.root_dir%/../public/assets/permissions'
images_adapter:
local:
directory: '%kernel.root_dir%/../public/assets/images'
awsS3_adapter_usr_data:
awss3v3:
client: usr_data.s3_client
bucket: "%env(AWS_S3_UPLOAD_BUCKET)%"
prefix: ~
awsS3_legacy_usr_data:
awss3v3:
client: usr_data.s3_legacy_client
bucket: "%env(AWS_S3_LEGACY_UPLOAD_BUCKET)%"
prefix: ~
filesystems:
default_filesystem:
adapter: default_adapter
alias: my_filesystem
tutorial_filesystem:
adapter: tutorial_adapter
permissions_filesystem:
adapter: permissions_adapter
images_filesystem:
adapter: images_adapter
s3_filesystem:
adapter: awsS3_adapter_usr_data
alias: League\Flysystem\Filesystem
s3_legacy:
adapter: awsS3_legacy_usr_data
alias: App\Factory\NewFileSystem
- Inject new class by dependency injection in controller
public function createAction(Request $request, NewFileSystem $fileSystem): BaseOutput
{
dd($fileSystem);
}
And I have following error.
Argument 2 passed to App\Controller\Api\Migration\ProcessController::createAction() must be an instance of App\Factory\NewFileSystem, instance of League\Flysystem\Filesystem given
Why system doesn't want inject class "NewFileSystem". What else should I configured to have a new class with different s3 configuration.
Thank you.