No, no puede obtener la URL en una sola acción, sino en dos :)
En primer lugar, es posible que deba hacer público el archivo antes de cargarlo porque no tiene sentido obtener la URL a la que nadie puede acceder. Puede hacerlo configurando ACL como sugirió Michael Astreiko. Puede obtener la URL del recurso llamando getResourceUrl
o getUrl
.
AmazonS3Client s3Client = (AmazonS3Client)AmazonS3ClientBuilder.defaultClient();
s3Client.putObject(new PutObjectRequest("your-bucket", "some-path/some-key.jpg", new File("somePath/someKey.jpg")).withCannedAcl(CannedAccessControlList.PublicRead))
s3Client.getResourceUrl("your-bucket", "some-path/some-key.jpg");
Nota 1:
La diferencia entre getResourceUrl
y getUrl
es que getResourceUrl devolverá un valor nulo cuando se produzca una excepción.
Nota 2: el
getUrl
método no está definido en la interfaz de AmazonS3. Debe convertir el objeto a AmazonS3Client si usa el constructor estándar.