edit description

Setting up Amazon AWS S3 clustering

When setting up clustering, you can use Amazon AWS S3 as a binary handler, meaning AWS S3 will be used to store binary files.


Before you start, you should be familiar with the clustering documentation.

Set up AWS S3 account

  1. Go to https://aws.amazon.com/ and create an account. An existing Amazon account can be used.
  2. Choose a region. The example below uses EU (Ireland): eu-west-1
  3. Create a bucket in your chosen region and make note of the bucket name: http://docs.aws.amazon.com/AmazonS3/latest/gsg/CreatingABucket.html.
  4. Go to the IAM Management Console and create a user. See http://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html.
  5. Then create a group and assign the user to the group.
  6. Assign policies to the group. The AmazonS3FullAccess policy gives read/write access to your bucket.
  7. Still in the IAM console, view the user you created. Click the "Security credentials" tab.
  8. Click "Create access key" and make note of the "Access key ID" and the "Secret access key". The secret key cannot be retrieved again after the key has been created, so don't lose it. (However, you can create new keys if needed.)

Set up eZ Platform for AWS S3

In your eZ Platform root directory, run php composer.phar require league/flysystem-aws-s3-v3. In your eZ Platform configuration, e.g. app/config/config.yml, set up the AWS S3 client:

        class: Aws\S3\S3Client
                version: "latest"
                region: "eu-west-1" # The region string of your chosen region
                    key: "ABCDEF..." # Your AWS key ID
                    secret: "abc123..." # Your AWS secret key

Still in your eZ Platform configuration, e.g. app/config/config.yml, set up the Flysystem adapter that uses the S3 client:

                client: amazon.s3_client
                bucket: "my-bucket" # Your bucket name
                prefix: "%database_name%"

In the same place, set up the binary data handler for the S3 adapter:

                adapter: aws_s3_adapter

In your eZ Platform system settings, e.g. app/config/ezplatform.yml, enable the binary data handler:

                binarydata_handler: aws_s3

Clear all caches and reload, and that's it.

Migrate your existing binary data to S3

You can migrate existing binary data to S3 using the php app/console ezplatform:io:migrate-files command which was added in EZP-25946.

Read the Docs