Laravel protege los archivos de cubo de Amazon s3

Estoy usando Amazon s3 pero aquí estoy enfrentando dos problemas

1.No puedo cargar archivos directamente al servidor de Amazon cuando envío el formulario. Quiero decir que tengo que cargar imágenes para cargar la carpeta y desde allí tengo que recuperar y cargar ens3 server¿Hay alguna forma de subir imágenes directamente cuando hacemos clic en enviar?

2.si paso'public' ens3 put object entonces solo puedo acceder o ver archivos, pero si lo hago público, todos pueden ver archivos, pero necesito proteger todos los archivos y verlos solo para el usuario autenticado. ¿Puede alguien sugerirme cómo solucionar este problema?

try {           
    $s3 = \Storage::disk('s3');
    $s3->put($strFileName, file_get_contents($img_path.$strFileName), 'public');
} catch (Aws\Exception\S3Exception $e) {
    echo "There was an error uploading the file.\n"+$e;
}

Antes de hacer preguntas, he leído tantas respuestas de stackoverflow pero no me ayudó a solucionar mi problema. Gracias

Respuestas a la pregunta(4)

Su respuesta a la pregunta