web-dev-qa-db-fra.com

URL du compartiment public Amazon S3

J'ai un seau Amazon S3 que je rends public avec une politique comme celle-ci

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Allow Public Access to All Objects",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::bucket/*"
        }
    ]
}

Mon seau est maintenant visible en tant que http://bucket.s3-website-us-east-1.amazonaws.com/

Je vois d'autres se référer à leur seau comme http://s3-us-east-1.amazonaws.com/bucket/

Je préférerais la 2ème URL, mais cela donne un accès refusé.

Comment puis-je changer ma politique pour autoriser la 2ème URL?

34
Gene Vincent

La structure d'URL à laquelle vous faites référence est appelée le point de terminaison REST, par opposition au point de terminaison du site Web.


Remarque: Depuis que cette réponse a été écrite à l'origine, S3 a déployé la prise en charge de la pile double sur les noeuds finaux REST, en utilisant de nouveaux noms d'hôte, tout en conservant les noms d'hôte existants. Ceci est maintenant intégré dans les informations fournies ci-dessous.


Si votre compartiment se trouve réellement dans la région us-est-1 d’AWS - , la documentation S3 était auparavant appelée la région "US Standard", mais a ensuite été officiellement renommée "US East ( N. Virginie) Région " - alors http://s3-us-east-1.amazonaws.com/bucket/ N’est pas la bonne forme pour ce point de terminaison, même si cela semble être le cas. Le format correct pour cette région est http://s3.amazonaws.com/bucket/ Ou http://s3-external-1.amazonaws.com/bucket/. ¹

Le format que vous utilisez est applicable à toutes les autres régions S3, mais pas Norme américaine Est des États-Unis (Virginie du Nord) [us-east-1].

S3 a désormais également les noms d’hôte de points de terminaison à double pile pour les points de terminaison REST et, contrairement aux noms d’hôte de point de terminaison d’origine, leurs noms ont un format cohérent dans toutes les régions, par exemple s3.dualstack.us-east-1.amazonaws.com. Ces points de terminaison prennent en charge la connectivité IPv4 et IPv6 et la résolution DNS, mais leur fonctionnement est par ailleurs équivalent aux points de terminaison existants REST.

Si vos autorisations et votre configuration sont configurées de telle sorte que le noeud final du site Web fonctionne, alors le noeud final REST devrait également fonctionner.

Cependant ... les deux points de terminaison n'offrent pas la même fonctionnalité.

En gros, le noeud final REST est mieux adapté à l’accès à la machine et le noeud final du site Web est mieux adapté à l’accès humain, car le noeud final du site Web offre des messages d’erreur conviviaux, des documents indexés et des redirections, tandis que le REST le point final ne l'est pas. D'autre part, le point de terminaison REST offre HTTPS et prend en charge les URL signées, contrairement au point de terminaison du site Web.

Choisissez le type de noeud final approprié (REST ou site Web) pour votre application:

http://docs.aws.Amazon.com/AmazonS3/latest/dev/WebsiteEndpoints.html#WebsiteRestEndpointDiff


¹ s3-external-1.amazonaws.coma été appelé le "point de terminaison Northern Virginia", par opposition au "point de terminaison global" s3.amazonaws.com. Si le nom d'hôte "s3-external-1" était utilisé, il était officieusement possible d'obtenir une cohérence lecture après écriture sur les nouveaux objets de cette région, car cela vous enverrait vers un sous-ensemble de points de terminaison physiques susceptibles de fournir cette fonctionnalité. Ce comportement est maintenant officiellement pris en charge sur ce noeud final. C'est donc probablement le meilleur choix dans de nombreuses applications. Auparavant, s3-external-2était appelé le "point final de Pacific Northwest" pour US-Standard, bien qu'il s'agisse maintenant d'un CNAME dans DNS pour s3-external-1 donc s3-external-2 semble n'avoir d'autre objectif que la compatibilité ascendante.

38
Michael - sqlbot