Aws S3 (v3) Adapter

Installation

composer require league/flysystem-aws-s3-v3:^3.0

About

Interacting with Aws S3 through Flysystem can be done by using the League\Flysystem\AwsS3V3\AwsS3V3Adapter.

Simple usage:

/** @var Aws\S3\S3ClientInterface $client */
$client = new Aws\S3\S3Client($options);

// The internal adapter
$adapter = new League\Flysystem\AwsS3V3\AwsS3V3Adapter(
 // S3Client
 $client,
 // Bucket name
 'bucket-name'
);

// The FilesystemOperator
$filesystem = new League\Flysystem\Filesystem($adapter);

Advanced usage:

/** @var Aws\S3\S3ClientInterface $client */
$client = new Aws\S3\S3Client($options);

// The internal adapter
$adapter = new League\Flysystem\AwsS3V3\AwsS3V3Adapter(
 // S3Client
 $client,
 // Bucket name
 'bucket-name',
 // Optional path prefix
 'path/prefix',
 // Visibility converter (League\Flysystem\AwsS3V3\VisibilityConverter)
 new League\Flysystem\AwsS3V3\PortableVisibilityConverter(
 // Optional default for directories
 League\Flysystem\Visibility::PUBLIC // or ::PRIVATE
 )
);

// The FilesystemOperator
$filesystem = new League\Flysystem\Filesystem($adapter);

IAM Permissions

The required IAM permissions are as followed:

{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Action":["s3:ListBucket","s3:GetObject","s3:DeleteObject","s3:GetObjectAcl","s3:PutObjectAcl","s3:PutObject"],"Resource":["arn:aws:s3:::your-bucket-name","arn:aws:s3:::your-bucket-name/*"]}]}