web-dev-qa-db-fra.com

Comment rendre public un objet S3 via le aws Java SDK?

Comment rendre public un objet S3 via le AWS Java SDK?

Plus précisément, quelles méthodes API via le Java AWS SDK peuvent être utilisées pour rendre un objet public lors de son téléchargement?

54
MikeNereson

Trouvé la réponse dans un Amazon aws forum .

return s3Client.putObject(
   new PutObjectRequest(bucketName, objectKey, inputStream, metadata)
      .withCannedAcl(CannedAccessControlList.PublicRead));

La réponse étant

.withCannedAcl(CannedAccessControlList.PublicRead)

131
MikeNereson

Une approche alternative qui permet un contrôle plus précis de qui est exactement autorisé à voir l'objet (tous les utilisateurs ou utilisateurs authentifiés uniquement):

    PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, keyName, image);
    AccessControlList acl = new AccessControlList();
    acl.grantPermission(GroupGrantee.AllUsers, Permission.Read); //all users or authenticated
    putObjectRequest.setAccessControlList(acl);
    s3client.putObject(putObjectRequest);
3
Maurice