Silverstripe S3

If all is actually configured properly, I’d try running a ?flush to make sure the new config is picked up.

Additionally if you are adding custom config to your local instance, make sure that the yml config is set to load after the modules, eg.

---
Only:
  envvarset: AWS_BUCKET_NAME
After:
  - '#assetsflysystem'
  - '#silverstripes3-flysystem'
---
SilverStripe\Core\Injector\Injector:
  Aws\S3\S3Client:
    constructor:
      configuration:
        region: '`AWS_REGION`'
        version: latest
        credentials:
          key: '`AWS_ACCESS_KEY_ID`'
          secret: '`AWS_SECRET_ACCESS_KEY`'