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é ?
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é ?
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)
Si vous utilisez des gestionnaires de transfert, cette solution fonctionne également. Il suffit de remplacer s3Client.putObject(
avec TransferManager.upload(
Malheureusement, il semble qu'avec TransferUtility le SDK Android ne dispose pas de cette fonctionnalité : github.com/aws/aws-sdk-Android/issues/63
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);
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.