Before starting, read the Sulu 3.0 Upgrade notes.
First, we need to update the Flysystem packages to version 3.x. Skip this if you already depend on this version.
composer require league/flysystem:"^3.29" league/flysystem-aws-s3-v3:"^3.29"
You will also have to update the configuration in config/packages/sulu_media.yaml. Examples are provided in the Sulu 3.0 Upgrade notes.
Useful tip - the
league/flysystem-aws-s3-v3package requiresaws/aws-sdk-phpwhich is constantly being updated and contains ALL the SDKs for all AWS services (and hence has a huge download size). Instead, useleague/flysystem-async-aws-s3which depends onasync-aws/s3which is an SDK only for the S3 service, is much smaller and hence will speed up your composer installs and CI builds etc.
My installation did not use any deprecated classes or services that were mentioned in the UPGRADE notes, so we can proceed directly to upgrading to Sulu 3.0.
There is no v3.0 release yet, so we must upgrade to the 3.0 development branch.
composer require -W sulu/sulu:"3.0.x-dev"
Now, rebuild the Admin UI Javascript bundle (answer yes when prompted about a manual build - requires NPM to be available).
bin/console sulu:admin:update-build
Finally, clear all the caches.
rm -rf var/cache/*
Now everything should be working correctly on both the front-end and the Sulu admin interface.
For our installation at least, no further changes are needed and the application appears to be fully functional. A very smooth process :)