Похоже, что видимость на самом деле является частной по умолчанию в соответствии с веткой форума .
По умолчанию все объекты являются частными: только владелец имеет полный контроль. При добавлении нового объекта вы можете предоставить разрешения отдельным AWS учетным записям или предопределенным группам Amazon S3.
Приведенная выше цитата взята из Документация Amazon S3 API , которая поддерживает этот форум thread.
, поэтому попробуйте просто вызвать его без третьего параметра, например, так:
Storage::disk('s3')->put('agreements/'.$filename, file_get_contents($filename))
и убедитесь, что в конфигурации диска s3 нет 'visibility' => 'public'
Если он все еще не работает, вы можете попробовать следовать документации API и использовать
// Untested
Storage::disk('s3')->put('agreements/'.$filename, file_get_contents($filename), ['x-amz-acl' => 'private'])