64 votes

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

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

Plus précisément, quelles méthodes API via le SDK Java AWS peuvent être utilisées pour rendre un objet public lorsqu'il est téléchargé ?

174voto

MikeNereson Points 1325

J'ai 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)

15 votes

Si vous utilisez des gestionnaires de transfert, cette solution fonctionne également. Il suffit de remplacer s3Client.putObject( avec TransferManager.upload(

0 votes

Malheureusement, il semble qu'avec TransferUtility le SDK Android ne dispose pas de cette fonctionnalité : github.com/aws/aws-sdk-Android/issues/63

2 votes

Lorsque vous utilisez TransferManager les œuvres suivantes : Upload upload = tm.upload( new PutObjectRequest(bucketName, key, file, metadata) .withCannedAcl(CannedAccessControlList.PublicRead));

7voto

Maurice Points 890

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

    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);

4voto

Rajat Verma Points 725
s3client.setObjectAcl("bucketName[/subDirectory]", fileName, CannedAccessControlList.PublicRead);
URL url = s3client.getUrl("bucketName[/subDirectory]", fileName);
String sharableLink = url.toExternalForm();

source

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X