PHPackages                             bp-sys/yii2-aws-s3 - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [File &amp; Storage](/categories/file-storage)
4. /
5. bp-sys/yii2-aws-s3

ActiveYii2-extension[File &amp; Storage](/categories/file-storage)

bp-sys/yii2-aws-s3
==================

An Amazon S3 component for Yii2

2.4.0(3y ago)987.3k—5.2%5[2 issues](https://github.com/bp-sys/yii2-aws-s3/issues)[1 PRs](https://github.com/bp-sys/yii2-aws-s3/pulls)MITPHPPHP &gt;=7.0.0

Since Apr 30Pushed 1y ago1 watchersCompare

[ Source](https://github.com/bp-sys/yii2-aws-s3)[ Packagist](https://packagist.org/packages/bp-sys/yii2-aws-s3)[ Docs](https://github.com/bp-sys/yii2-aws-s3)[ RSS](/packages/bp-sys-yii2-aws-s3/feed)WikiDiscussions 2.x Synced 1mo ago

READMEChangelog (4)Dependencies (4)Versions (24)Used By (0)

Yii2 AWS S3
===========

[](#yii2-aws-s3)

An Amazon S3 component for Yii2.

[![License](https://camo.githubusercontent.com/5369da259c977f48ac083bcdc0b312462e60203aeb93bae278da60e60508264d/68747470733a2f2f706f7365722e707567782e6f72672f62702d7379732f796969322d6177732d73332f6c6963656e7365)](https://github.com/bp-sys/yii2-aws-s3/blob/2.x/LICENSE) [![Latest Stable Version](https://camo.githubusercontent.com/75d247248bbd05c8ca2b48f55f682bef2af7665e6e44bc7f1df1f85e6edb44d7/68747470733a2f2f706f7365722e707567782e6f72672f62702d7379732f796969322d6177732d73332f76)](//packagist.org/packages/bp-sys/yii2-aws-s3) [![Total Downloads](https://camo.githubusercontent.com/df038c1644c7720823783fa8eb276134fd57f28b6b583d886e88af97a741b4bc/68747470733a2f2f706f7365722e707567782e6f72672f62702d7379732f796969322d6177732d73332f646f776e6c6f616473)](//packagist.org/packages/bp-sys/yii2-aws-s3) [![Latest Unstable Version](https://camo.githubusercontent.com/094eceeff8780cfbb313a9624e26351fbb03063e9315a333e68a711677da792d/68747470733a2f2f706f7365722e707567782e6f72672f62702d7379732f796969322d6177732d73332f762f756e737461626c65)](//packagist.org/packages/bp-sys/yii2-aws-s3)

> Yii2 AWS S3 uses [SemVer](http://semver.org/).

> Version 2.x requires PHP 7. For PHP less 7.0 use [1.x](https://github.com/bp-sys/yii2-aws-s3/tree/1.x).

About this project
------------------

[](#about-this-project)

This project is a fork from the excellent project [yii2-aws-s3](https://github.com/frostealth/yii2-aws-s3) by [frostealth](https://github.com/frostealth) and [adnsio](https://github.com/adnsio).

Upon their work, we add support for IAM role attached to the EC2, which you don't need to insert your credentials.

We will also add support for easier integration with your models, by adding a S3MediaTrait.

Installation
------------

[](#installation)

1. Run the [Composer](http://getcomposer.org/download/) command to install the latest version:

    ```
    composer require bp-sys/yii2-aws-s3 ~2.0
    ```
2. Add the component to `config/main.php`

    ```
    'components' => [
        // ...
        's3' => [
            'class' => 'bpsys\yii2\aws\s3\Service',
            'credentials' => [ // Aws\Credentials\CredentialsInterface|array|callable
                'key' => 'my-key',
                'secret' => 'my-secret',
            ],
            'region' => 'my-region',
            'defaultBucket' => 'my-bucket',
            'defaultAcl' => 'public-read',
            'defaultPresignedExpiration' => '+1 hour',
            'endpoint' => 'http://localhost:9000',
        ],
        // ...
    ],
    ```

**Credentials parameter is optional**: if you plan to use IAM roles attached to your EC2 instance there is no need for credentials. Just remove this parameter. Just be cautious if you need those credentials, this may cause errors during execution. **Endpoint parameter is optional**: You can specify a custom endpoint here. Great for debugging with minio for example.

Basic usage
-----------

[](#basic-usage)

### Usage of the command factory and additional params

[](#usage-of-the-command-factory-and-additional-params)

```
/** @var \bpsys\yii2\aws\s3\Service $s3 */
$s3 = Yii::$app->get('s3');

/** @var \Aws\ResultInterface $result */
$result = $s3->commands()->get('filename.ext')->saveAs('/path/to/local/file.ext')->execute();

$result = $s3->commands()->put('filename.ext', 'body')->withContentType('text/plain')->execute();

$result = $s3->commands()->delete('filename.ext')->execute();

$result = $s3->commands()->upload('filename.ext', '/path/to/local/file.ext')->withAcl('private')->execute();

$result = $s3->commands()->restore('filename.ext', $days = 7)->execute();

$result = $s3->commands()->list('path/')->execute();

/** @var bool $exist */
$exist = $s3->commands()->exist('filename.ext')->execute();

/** @var string $url */
$url = $s3->commands()->getUrl('filename.ext')->execute();

/** @var string $signedUrl */
$signedUrl = $s3->commands()->getPresignedUrl('filename.ext', '+2 days')->execute();
```

### Short syntax

[](#short-syntax)

```
/** @var \bpsys\yii2\aws\s3\Service $s3 */
$s3 = Yii::$app->get('s3');

/** @var \Aws\ResultInterface $result */
$result = $s3->get('filename.ext');

$result = $s3->put('filename.ext', 'body');

$result = $s3->delete('filename.ext');

$result = $s3->upload('filename.ext', '/path/to/local/file.ext');

$result = $s3->restore('filename.ext', $days = 7);

$result = $s3->list('path/');

/** @var bool $exist */
$exist = $s3->exist('filename.ext');

/** @var string $url */
$url = $s3->getUrl('filename.ext');

/** @var string $signedUrl */
$signedUrl = $s3->getPresignedUrl('filename.ext', '+2 days'); // Pass only one parameter to get expiration date from component defaults
```

[Read more...](/docs/basic-usage.md)

Advanced usage
--------------

[](#advanced-usage)

```
/** @var \bpsys\yii2\aws\s3\interfaces\Service $s3 */
$s3 = Yii::$app->get('s3');

/** @var \bpsys\yii2\aws\s3\commands\GetCommand $command */
$command = $s3->create(GetCommand::class);
$command->inBucket('my-another-bucket')->byFilename('filename.ext')->saveAs('/path/to/local/file.ext');

/** @var \Aws\ResultInterface $result */
$result = $s3->execute($command);

// or async
/** @var \GuzzleHttp\Promise\PromiseInterface $promise */
$promise = $s3->execute($command->async());
```

[Read more...](/docs/advanced-usage.md)

Using Traits
------------

[](#using-traits)

Attach the Trait to the model with some media attribute that will be saved in S3:

```
class Person extends \yii\db\ActiveRecord
{
    use \bpsys\yii2\aws\s3\traits\S3MediaTrait;

    // ...
}
```

```
$image = \yii\web\UploadedFile::getInstance( $formModel, 'my_file_attribute' );
// Save image as my_image.png on S3 at //my_bucket/images/ path
// $model->image will hold "my_image.png" after this call finish with success
$model->saveUploadedFile( $image, 'image', 'my_image.png' );

// Get the URL to the image on S3
$model->getFileUrl( 'image' );
// Get the presigned URL to the image on S3
// The default duration is "+1 day"
$model->getFilePresignedUrl( 'image' );

// Remove the file with named saved on the image attribute
// Continuing the example, here "//my_bucket/images/my_image.png" will be deleted from S3
$model->removeFile( 'image' );

// Save my_image.* to S3 on //my_bucket/images/ path
// The extension of the file will be determined by the submitted file type
// This allows multiple file types upload (png,jpg,gif,...)
$model->saveUploadedFile( $image, 'image', 'my_image', true );
```

[Read more...](/docs/media-traits.md)

License
-------

[](#license)

Yii2 AWS S3 is licensed under the MIT License.

See the [LICENSE](LICENSE) file for more information.

###  Health Score

40

—

FairBetter than 88% of packages

Maintenance22

Infrequent updates — may be unmaintained

Popularity39

Limited adoption so far

Community14

Small or concentrated contributor base

Maturity68

Established project with proven stability

 Bus Factor1

Top contributor holds 61.1% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~121 days

Recently: every ~156 days

Total

23

Last Release

1366d ago

Major Versions

v0.4.4 → v1.0.02015-12-26

1.x-dev → v2.0.0-beta2016-04-09

PHP version history (3 changes)v0.1.0PHP &gt;=5.4.0

v0.3.0PHP &gt;=5.5.0

v2.0.0-betaPHP &gt;=7.0.0

### Community

Maintainers

![](https://www.gravatar.com/avatar/6f2c8647981d85ecd626b19524c9d78869109392994e5d63ca2e14c4df6cbf0a?d=identicon)[bpanatta](/maintainers/bpanatta)

---

Top Contributors

[![frostealth](https://avatars.githubusercontent.com/u/1785217?v=4)](https://github.com/frostealth "frostealth (22 commits)")[![bpanatta](https://avatars.githubusercontent.com/u/4388638?v=4)](https://github.com/bpanatta "bpanatta (11 commits)")[![alessiodionisi](https://avatars.githubusercontent.com/u/1165381?v=4)](https://github.com/alessiodionisi "alessiodionisi (2 commits)")[![DBX12](https://avatars.githubusercontent.com/u/6484542?v=4)](https://github.com/DBX12 "DBX12 (1 commits)")

---

Tags

s3awsyii2aws-s3yii2-s3yii2-aws

###  Code Quality

Code StylePHP\_CodeSniffer

### Embed Badge

![Health badge](/badges/bp-sys-yii2-aws-s3/health.svg)

```
[![Health](https://phpackages.com/badges/bp-sys-yii2-aws-s3/health.svg)](https://phpackages.com/packages/bp-sys-yii2-aws-s3)
```

###  Alternatives

[frostealth/yii2-aws-s3

An Amazon S3 component for Yii2

90698.9k5](/packages/frostealth-yii2-aws-s3)[fedemotta/yii2-aws-sdk

This extension provides the AWS SDK integration for the Yii2 framework

15430.4k2](/packages/fedemotta-yii2-aws-sdk)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
