Vous pensez qu'ils feraient public lire le comportement par défaut, n'est-ce pas? : )
Je partage votre frustration alors que la construction d'une API pour l'interface avec S3 à partir d'une solution C#. Voici le morceau de code qui effectue le téléchargement d'un S3 objet et la valeur publique-accès en lecture par défaut:
public void Put(string bucketName, string id, byte[] bytes, string contentType, S3ACLType acl) {
string uri = String.Format("https://{0}/{1}", BASE_SERVICE_URL, bucketName.ToLower());
DreamMessage msg = DreamMessage.Ok(MimeType.BINARY, bytes);
msg.Headers[DreamHeaders.CONTENT_TYPE] = contentType;
msg.Headers[DreamHeaders.EXPECT] = "100-continue";
msg.Headers[AWS_ACL_HEADER] = ToACLString(acl);
try {
Plug s3Client = Plug.New(uri).WithPreHandler(S3AuthenticationHeader);
s3Client.At(id).Put(msg);
} catch (Exception ex) {
throw new ApplicationException(String.Format("S3 upload error: {0}", ex.Message));
}
}
Le ToACLString(acl) renvoie le public à lire, BASE_SERVICE_URL est s3.amazonaws.com et le AWS_ACL_HEADER constante est x-amz-acl. La fiche et la DreamMessage trucs va probablement vous sembler étrange que nous utilisons le Rêve cadre de la rationalisation de nos communications http. Essentiellement, nous faisons un http METTEZ les en-têtes et un en-tête spécial de la signature par aws cahier des charges (voir cette page dans l' aws docs pour des exemples de la façon de construire l'en-tête d'autorisation).
Pour modifier un mot de 1000 objet Acl vous pouvez écrire un script, mais il est probablement plus facile d'utiliser un outil graphique pour résoudre le problème immédiat. Le meilleur que j'ai utilisé jusqu'à présent est une entreprise qui s'appelle la chicouté pour S3; on dirait qu'ils ont un libre de 15 jours d'essai pour au moins un de leurs produits. J'ai juste vérifié qu'il vous permettra de sélectionner plusieurs objets à la fois et de définir leur liste de contrôle d'accès public via le menu contextuel. Profitez de l'informatique en nuage!