PHPackages                             jayvee/aws - 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. [API Development](/categories/api)
4. /
5. jayvee/aws

ActiveTypo3-flow-package[API Development](/categories/api)

jayvee/aws
==========

Amazon Web Services integration for TYPO3 Flow

06PHP

Since Oct 7Pushed 10y ago1 watchersCompare

[ Source](https://github.com/janvennemann/Jayvee.Aws)[ Packagist](https://packagist.org/packages/jayvee/aws)[ RSS](/packages/jayvee-aws/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependenciesVersions (1)Used By (0)

Amazon Web Services integration for TYPO3 Flow
==============================================

[](#amazon-web-services-integration-for-typo3-flow)

This packages provides you with a S3 resource storage and publishing target for the new TYPO3 Flow resource management. It also comes with handy little factory, which you can use to easily create clients for the various services.

**WARNING** This package is still under development. The configuration options may change or some things may not work as expected. Do not use this in an production environment.

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

[](#installation)

Just add the `jayvee/aws` package as a requirement to your root composer.json and run a `composer update` to install this package.

Configuration
-------------

[](#configuration)

### Setting your AWS credentials

[](#setting-your-aws-credentials)

The recommended way to authenticate is to use instance profile credentials or environment variables. The [AWS User Guide](http://docs.aws.amazon.com/aws-sdk-php/v3/guide/guide/credentials.html) has more information about how you setup these. If somehow you can not use these authentication methods, you can also set your credentials in the Settings.yaml of this package.

```
Jayvee:
  Aws:
    sdk:
      credentials:
        key:
        secret:
      region:
```

There is also an option to set your preferred AWS region, which defaults to `eu-east-1`if not set.

### Resource storage

[](#resource-storage)

The resource storage and publishing target can be defined within the settings of the TYPO3 Flow package. To simply set a S3 bucket as a resource storage, this is all you need. If the S3 bucket you specified does not exists, the storage will try to create it (the same applies to publishing targets).

```
TYPO3:
  Flow:
    resource:
      storages:
        s3PersistentResourcesStorage:
          storage: 'Jayvee\Aws\Resource\Storage\S3Storage'
          storageOptions:
            bucketName: ''
```

A storage won't need any further configuration and you are ready to go with the above configuration.

### Publishing targets

[](#publishing-targets)

You can publish your resources either directly from your S3 bucket or with additional CloudFront support to use as a CDN. If you just want to serve your resources from S3, the following config will do this job.

```
TYPO3:
  Flow:
    resource:
      targets:
        s3PersistentResourcesTarget:
          target: 'Jayvee\Aws\Resource\Target\S3Target'
          targetOptions:
            bucketName: ''
```

*Note:* You can use one bucket as a storage and publishing target at the same time. Resources are stored with the ACL private by default and are set to public-read upon publishing. If you use different buckets, the resource will be copied to the bucket defined as the publishing target.

#### Adding CloudFront support

[](#adding-cloudfront-support)

To serve your files via CloudFront and not directly from your S3 bucket, add the identifier of the distribution you want to use with the `cloudFront` option. Since creating a distribution is a longer running task, you will have to set it up yourself and set the S3 bucket as its origin, e.g. via the AWS Console.

```
TYPO3:
  Flow:
    resource:
      targets:
        s3PersistentResourcesTarget:
          target: 'Jayvee\Aws\Resource\Target\S3Target'
          targetOptions:
            bucketName: ''
            cloudFront:
              distributionIdentifier: '
```

The target will read your distribution configuration and automatically use an origin access identity if available. Please note that you do not need to setup a bucket policy for the origin access identity since the permissions will be granted per object.

Troubleshooting
---------------

[](#troubleshooting)

Sometimes you may receive the following error during resource publishing:

```
An error occurred while publishing resources (see full description below). You can check and probably fix the integrity of the resource registry by using the resource:clean command.
TYPO3\Flow\Error\Exception (Exception code: 1)
Warning: file_put_contents(/tmp/aws-cache/data_s3_2006-03-01_paginators-1.json.php): failed to open stream: Permission denied in {...}/Packages/Libraries/aws/aws-sdk-php/src
/JsonCompiler.php line 93

```

This is most likely due to incorrect permissions of the cache directory for the AWS SDK. Simply change the permissions or edit the `AWS_PHP_CACHE_DIR` environment variable to use another directory. A more detailed desciption can be found on the [AWS SDK for PHP FAQ](http://docs.aws.amazon.com/aws-sdk-php/v3/guide/faq.html#how-do-i-fix-an-error-related-to-aws-cache)

What's next?
------------

[](#whats-next)

The follwing features a already planned and will be available shortly

- More CloudFront options like using CNAMEs or issuing invalidation requests upon resource unpublishing
- Configure caching options on both storages and publishing targets

###  Health Score

20

—

LowBetter than 14% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity4

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity41

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% 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.

### Community

Maintainers

![](https://www.gravatar.com/avatar/9b467328184658b0dde6cfdf8c5592dafab0c8b73faf9ffab82872b0aebe5f7d?d=identicon)[jayvee](/maintainers/jayvee)

---

Top Contributors

[![janvennemann](https://avatars.githubusercontent.com/u/1406024?v=4)](https://github.com/janvennemann "janvennemann (19 commits)")

### Embed Badge

![Health badge](/badges/jayvee-aws/health.svg)

```
[![Health](https://phpackages.com/badges/jayvee-aws/health.svg)](https://phpackages.com/packages/jayvee-aws)
```

###  Alternatives

[stripe/stripe-php

Stripe PHP Library

4.0k143.3M480](/packages/stripe-stripe-php)[twilio/sdk

A PHP wrapper for Twilio's API

1.6k92.9M272](/packages/twilio-sdk)[facebook/php-business-sdk

PHP SDK for Facebook Business

90821.9M34](/packages/facebook-php-business-sdk)[meilisearch/meilisearch-php

PHP wrapper for the Meilisearch API

74513.7M114](/packages/meilisearch-meilisearch-php)[google/gax

Google API Core for PHP

265103.1M454](/packages/google-gax)[google/common-protos

Google API Common Protos for PHP

173103.7M50](/packages/google-common-protos)

PHPackages © 2026

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