Hébergement virtuel de compartiments - Amazon Simple Storage Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Hébergement virtuel de compartiments

L'hébergement virtuel consiste à servir plusieurs sites web à partir d'un seul serveur web. L'un des moyens de différencier les sites dans vos REST API requêtes Amazon S3 consiste à utiliser le nom d'hôte apparent de la demande, URI au lieu de simplement le nom du chemin figurant dans la URI partie. Une REST demande Amazon S3 ordinaire spécifie un compartiment en utilisant le premier composant du chemin de demande séparé par une barre oblique. URI Au lieu de cela, vous pouvez utiliser l'hébergement virtuel Amazon S3 pour adresser un compartiment dans un REST API appel en utilisant l'HTTPHosten-tête. En pratique, Amazon S3 interprète Host en ce sens que la plupart des compartiments sont automatiquement accessibles (pour un type limité de demandes) à l'adresse https://bucket-name.s3.region-code.amazonaws.com. Pour obtenir la liste complète des régions et points de terminaison Amazon S3, consultez Points de terminaison et quotas Amazon S3 dans le Référence générale d'Amazon Web Services.

L'hébergement virtuel présente d'autres avantages. En nommant votre bucket d'après le nom de domaine que vous avez enregistré et en faisant de ce nom un DNS alias pour Amazon S3, vous pouvez personnaliser complètement vos ressources Amazon S3, par exemplehttp://my.bucket-name.com/. URL Vous pouvez également publier dans le « répertoire racine » du serveur virtuel de votre compartiment. Cet avantage peut être considérable car beaucoup d'applications existantes recherchent des fichiers dans cet emplacement standard. Par exemple, on peut s'attendre à ce que les fichiers favicon.ico, robots.txt et crossdomain.xml se trouvent tous à la racine.

Important

Lorsque vous utilisez des compartiments de type hébergé virtuellement avecSSL, le certificat SSL générique correspond uniquement aux compartiments ne contenant pas de points (). . Pour contourner cette limitation, utilisez HTTP ou rédigez votre propre logique de vérification des certificats. Pour de plus amples informations, veuillez consulter Amazon S3 Path Deprecation Plan (Plan d'obsolescence de chemin d'accès Amazon S3) sur la page AWS News Blog.

Demandes de type chemin d'accès

À l'heure actuelle, Amazon S3 prend en charge à la fois l'accès hébergé virtuel et l'accès par chemin. URL Régions AWS Cependant, le style path-style URLs sera abandonné à l'avenir. Pour plus d'informations, consultez la remarque importante suivante.

Dans Amazon S3, le style de chemin URLs utilise le format suivant :

https://s3.region-code.amazonaws.com/bucket-name/key-name

Par exemple, si vous créez un compartiment nommé amzn-s3-demo-bucket1 dans la région USA Ouest (Oregon) et que vous souhaitez accéder à l'puppy.jpgobjet de ce compartiment, vous pouvez utiliser le style de chemin URL suivant :

https://s3.us-west-2.amazonaws.com/amzn-s3-demo-bucket1/puppy.jpg
Important

Mise à jour (23 septembre 2020) — Pour nous assurer que les clients disposent du temps nécessaire pour passer au style hébergé virtuelURLs, nous avons décidé de retarder la dépréciation du style path. URLs Pour de plus amples informations, veuillez consulter Amazon S3 Path Deprecation Plan – The Rest of the Story dans le blog dédié aux actualités d'AWS .

Avertissement

Lorsque vous hébergez du contenu de site Web qui sera accessible depuis un navigateur Web, évitez d'utiliser le style de cheminURLs, car cela pourrait interférer avec le modèle de sécurité d'origine identique au navigateur. Pour héberger le contenu d'un site Web, nous vous recommandons d'utiliser des points de terminaison du site Web S3 ou une CloudFront distribution. Pour plus d'informations, consultez Points de terminaison de sites web et Déployez une application monopage basée sur React sur Amazon S3 et CloudFront dans les modèles de guidage AWS Perspective.

Demandes de type hébergement virtuel

Dans un style hébergé virtuellementURI, le nom du bucket fait partie du nom de domaine dans le. URL

Le style Amazon S3 URLs virtual-hosted—utilise le format suivant :

https://bucket-name.s3.region-code.amazonaws.com/key-name

Dans cet exemple, amzn-s3-demo-bucket1 représente le nom de compartiment, USA Ouest (Oregon) représente la Région et puppy.png est le nom de la clé :

https://amzn-s3-demo-bucket1.s3.us-west-2.amazonaws.com/puppy.png

HTTPHostspécification du compartiment d'en-tête

Tant que votre GET demande n'utilise pas le SSL point de terminaison, vous pouvez spécifier le compartiment pour la demande en utilisant l'HTTPHosten-tête. L'Hosten-tête d'une REST demande est interprété comme suit :

  • Si l'Hosten-tête est omis ou si sa valeur l'ests3.region-code.amazonaws.com, le compartiment de la demande sera le premier composant séparé par une barre oblique du Request-URI, et la clé de la demande sera le reste du Request-. URI Il s'agit de la méthode ordinaire, comme illustré par le premier et le deuxième exemples de cette section. L'omission de l'Hosten-tête n'est valide que pour les requêtes HTTP 1.0.

  • Sinon, si la valeur de l'en-tête Host se termine par .s3.region-code.amazonaws.com, le nom du compartiment est le composant de tête de la valeur de l'en-tête Host jusqu'à .s3.region-code.amazonaws.com. La clé de la demande est le Request-URI. Cette interprétation expose les compartiments en tant que sous-domaines de .s3.region-code.amazonaws.com, comme illustré par les troisième et quatrième exemples de cette section.

  • Sinon, le compartiment de la demande est la valeur minuscule de l'Hosten-tête, et la clé de la demande est Request-. URI Cette interprétation est utile lorsque vous avez enregistré le même DNS nom que le nom de votre compartiment et que vous avez configuré ce nom pour être un alias de nom canonique (CNAME) pour Amazon S3. La procédure d'enregistrement des noms de domaine et de configuration CNAME DNS des enregistrements dépasse le cadre de ce guide, mais le résultat est illustré par le dernier exemple de cette section.

Exemples

Cette section fournit des exemples URLs et des demandes.

Exemple — Style de chemin et demandes URLs

Cet exemple utilise les éléments suivants :

  • Nom de compartiment ‐ example.com

  • Région - USA Est (Virginie du Nord)

  • Nom de clé ‐ homepage.html

URLC'est le suivant :

http://s3.us-east-1.amazonaws.com/example.com/homepage.html

La demande se présente comme suit :

GET /example.com/homepage.html HTTP/1.1 Host: s3.us-east-1.amazonaws.com

La requête avec HTTP 1.0 et en omettant l'Hosten-tête est la suivante :

GET /example.com/homepage.html HTTP/1.0

Pour plus d'informations sur les noms DNS compatibles, consultez la section Limitations. Pour en savoir plus sur les clés, consultez Clés.

Exemple — Style et requêtes hébergés URLs virtuellement

Cet exemple utilise les éléments suivants :

  • Nom de compartiment : amzn-s3-demo-bucket1

  • Région : UE (Irlande)

  • Nom de clé : homepage.html

URLC'est le suivant :

http://amzn-s3-demo-bucket1.s3.eu-west-1.amazonaws.com/homepage.html

La demande se présente comme suit :

GET /homepage.html HTTP/1.1 Host: amzn-s3-demo-bucket1.s3.eu-west-1.amazonaws.com
Exemple — méthode CNAME alias

Pour utiliser cette méthode, vous devez configurer votre DNS nom en tant qu'CNAMEalias pourbucket-name.s3.us-east-1.amazonaws.com. Pour plus d’informations, consultez Personnalisation d'Amazon S3 URLs avec des enregistrements CNAME.

Cet exemple utilise les éléments suivants :

  • Nom de compartiment ‐ example.com

  • Nom de clé : homepage.html

URLC'est le suivant :

http://www.example.com/homepage.html

L'exemple se présente comme suit :

GET /homepage.html HTTP/1.1 Host: www.example.com

Personnalisation d'Amazon S3 URLs avec des enregistrements CNAME

Selon vos besoins, vous préférerez peut-être que s3.region-code.amazonaws.com n'apparaisse pas sur votre site web ou service. Par exemple, si vous hébergez des images de site web sur Amazon S3, vous pourriez préférer http://images.example.com/ à http://images.example.com.s3.us-east-1.amazonaws.com/. Tout bucket portant un nom DNS compatible peut être référencé comme suit : http://BucketName.s3.Region.amazonaws.com/[Filename], par exemple,http://images.example.com.s3.us-east-1.amazonaws.com/mydog.jpg. En utilisantCNAME, vous pouvez le images.example.com mapper vers un nom d'hôte Amazon S3 afin que le précédent URL puisse devenirhttp://images.example.com/mydog.jpg.

Le nom de votre bucket doit être identique àCNAME. Par exemple, si vous créez un CNAME images.example.com mappage versimages.example.com.s3.us-east-1.amazonaws.com, les deux http://images.example.com/filename et http://images.example.com.s3.us-east-1.amazonaws.com/filename seront identiques.

L'CNAMEDNSenregistrement doit associer votre nom de domaine au nom d'hôte virtuel approprié. Par exemple, si le nom de votre bucket images.example.com et votre nom de domaine se trouvent dans la région USA Est (Virginie du Nord), l'CNAMEenregistrement doit avoir pour aliasimages.example.com.s3.us-east-1.amazonaws.com.

images.example.com CNAME images.example.com.s3.us-east-1.amazonaws.com.

Amazon S3 utilise le nom d'hôte pour déterminer le nom du compartiment. Le nom CNAME et le nom du compartiment doivent donc être identiques. Supposons, par exemple, que vous ayez configuré www.example.com en tant que CNAME pourwww.example.com.s3.us-east-1.amazonaws.com. Lorsque vous accédez à http://www.example.com, Amazon S3 reçoit une demande semblable à la suivante :

GET / HTTP/1.1 Host: www.example.com Date: date Authorization: signatureValue

Amazon S3 ne voit que le nom d'hôte d'origine www.example.com et n'est pas au courant du CNAME mappage utilisé pour résoudre la demande.

Vous pouvez utiliser n'importe quel point de terminaison Amazon S3 dans un CNAME alias. Par exemple, s3.ap-southeast-1.amazonaws.com peut être utilisé dans les CNAME alias. Pour plus d’informations sur les points de terminaison, consultez Points de terminaison de demande. Pour créer un site web statique à l'aide d'un domaine personnalisé, consultez Tutoriel : configuration d'un site Web statique à l'aide d'un domaine personnalisé enregistré auprès de Route 53.

Important

Lorsque vous utilisez Custom URLs withCNAMEs, vous devez vous assurer qu'un bucket correspondant existe pour tout enregistrement CNAME ou alias que vous configurez. Par exemple, si vous créez des DNS entrées pour www.example.com et pour publier du contenu Web login.example.com à l'aide de S3, vous devrez créer à la fois des buckets www.example.com etlogin.example.com.

Lorsqu'un enregistrement CNAME ou un alias est configuré pour pointer vers un point de terminaison S3 sans compartiment correspondant, n'importe quel AWS utilisateur peut créer ce compartiment et publier du contenu sous l'alias configuré, même si le propriétaire n'est pas le même.

Pour la même raison, nous vous recommandons de modifier ou de supprimer l'alias correspondant CNAME lors de la suppression d'un bucket.

Comment associer un nom d'hôte à un compartiment Amazon S3

Pour associer un nom d'hôte à un compartiment Amazon S3 à l'aide d'un alias CNAME
  1. Sélectionnez un nom d'hôte qui appartient à un domaine que vous contrôlez.

    Cet exemple utilise le sous-domaine images du domaine example.com.

  2. Créez un compartiment qui correspond au nom d'hôte.

    Dans cet exemple, les noms d'hôte et de compartiment sont images.example.com. Le nom du compartiment doit correspondre exactement au nom d'hôte.

  3. Créez un CNAME DNS enregistrement qui définit le nom d'hôte comme alias pour le compartiment Amazon S3.

    Par exemple :

    images.example.com CNAME images.example.com.s3.us-west-2.amazonaws.com

    Important

    Pour des raisons d'acheminement des demandes, l'CNAMEDNSenregistrement doit être défini exactement comme indiqué dans l'exemple précédent. Sinon, il peut sembler fonctionner correctement, mais il entraînera à terme un comportement imprévisible.

    La procédure de configuration des CNAME DNS enregistrements dépend de votre DNS serveur ou de votre DNS fournisseur. Pour obtenir des informations spécifiques, consultez la documentation du serveur ou contactez le fournisseur.

Limites

SOAPsupport over HTTP est obsolète, mais il SOAP est toujours disponible. HTTPS Les nouvelles fonctionnalités d'Amazon S3 ne sont pas prises en charge pourSOAP. Au lieu d'utiliserSOAP, nous vous recommandons d'utiliser le REST API ou le AWS SDKs.

Rétrocompatibilité

Les sections suivantes abordent différents aspects de la rétrocompatibilité d'Amazon S3 liés aux demandes de type chemin et de type hôte virtuelURL.

Points de terminaison hérités

Certaines Régions prennent en charge les points de terminaison hérités. Vous pouvez voir ces points de terminaison dans les journaux ou AWS CloudTrail journaux d'accès de votre serveur. Pour de plus amples informations, veuillez consulter les informations suivantes. Pour obtenir la liste complète des régions et points de terminaison Amazon S3, consultez Points de terminaison et quotas Amazon S3 dans le Référence générale d'Amazon Web Services.

Important

Même si vous pouvez voir des points de terminaison hérités dans vos journaux, nous vous recommandons de toujours utiliser la syntaxe de point de terminaison standard pour accéder à vos compartiments.

Le style Amazon S3 URLs virtual-hosted—utilise le format suivant :

https://bucket-name.s3.region-code.amazonaws.com/key-name

Dans Amazon S3, le style de chemin URLs utilise le format suivant :

https://s3.region-code.amazonaws.com/bucket-name/key-name

S3-Région

Certaines régions Amazon S3 plus anciennes prennent en charge des points de terminaison contenant un tiret (-) entre s3 et le code de région (par exemple, s3‐us-west-2) au lieu d'un point (par exemple, s3.us-west-2). Si votre compartiment se trouve dans l'une de ces régions, le format de point de terminaison suivant peut s'afficher dans les journaux ou CloudTrail journaux d'accès au serveur :

https://bucket-name.s3-region-code.amazonaws.com

Dans cet exemple, le nom du bucket est amzn-s3-demo-bucket1 et la région est US West (Oregon) :

https://amzn-s3-demo-bucket1.s3-us-west-2.amazonaws.com

Point de terminaison global hérité

Pour certaines régions, vous pouvez utiliser le point de terminaison global hérité pour élaborer des demandes qui ne spécifient pas de point de terminaison spécifique à la région. Le point de terminaison global hérité est comme suit :

bucket-name.s3.amazonaws.com

Dans les journaux ou CloudTrail journaux d'accès de votre serveur, vous pouvez voir des demandes qui utilisent l'ancien point de terminaison global. Dans cet exemple, le nom du compartiment est amzn-s3-demo-bucket1 et le point de terminaison global hérité est :

https://amzn-s3-demo-bucket1.s3.amazonaws.com
Demandes de type hébergement virtuel pour USA Est (Virginie du Nord)

Les demandes effectuées avec le point de terminaison global hérité sont transmises par défaut à la région USA Est (Virginie du Nord). Par conséquent, le point de terminaison global hérité est parfois utilisé à la place du point de terminaison Régional pour USA Est (Virginie du Nord). Si vous créez un compartiment dans la Région USA Est (Virginie du Nord) et que vous utilisez le point de terminaison global, Amazon S3 achemine votre demande vers cette Région par défaut.

Demandes de type hébergement virtuel pour d'autres régions

Le point de terminaison global hérité est également utilisé pour les demandes de type hébergement virtuel dans d'autres régions prises en charge. Si vous créez un bucket dans une région qui a été lancée avant le 20 mars 2019 et que vous utilisez l'ancien point de terminaison mondial, Amazon S3 met à jour l'DNSenregistrement pour rediriger la demande vers le bon emplacement, ce qui peut prendre du temps. Entre-temps, la règle par défaut s'applique et la demande de type hébergement virtuel est acheminée vers la région USA Est (Virginie du Nord). Amazon S3 le redirige ensuite avec une redirection temporaire HTTP 307 vers la bonne région.

Pour les compartiments S3 situés dans des régions lancées après le 20 mars 2019, le DNS serveur n'achemine pas votre demande directement vers l' Région AWS endroit où réside votre compartiment. Il renvoie plutôt une erreur HTTP 400 Bad Request. Pour plus d’informations, consultez Demandes.

Demandes de type chemin d'accès

Pour la région USA Est (Virginie du Nord), vous pouvez utiliser le point de terminaison global hérité pour les demandes de type chemin d'accès.

Pour toutes les autres Régions, la syntaxe de type chemin exige l'utilisation du point de terminaison spécifique à la Région lors d'une tentative d'accès à un compartiment. Si vous essayez d'accéder à un compartiment avec l'ancien point de terminaison global ou un autre point de terminaison différent de celui de la région dans laquelle réside le compartiment, vous recevez un code de HTTP réponse 307 (erreur de redirection temporaire) et un message indiquant le bon URI pour votre ressource. Par exemple, si vous utilisez https://s3.amazonaws.com/bucket-name un bucket créé dans la région USA Ouest (Oregon), vous recevrez une erreur de redirection temporaire HTTP 307.