Utilisation d'Elastic Beanstalk avec Amazon VPC - AWS Elastic Beanstalk

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.

Utilisation d'Elastic Beanstalk avec Amazon VPC

Vous pouvez utiliser Amazon Virtual Private Cloud (Amazon VPC) pour créer un réseau sécurisé pour votre application Elastic Beanstalk et les ressources AWS connexes. Lorsque vous créez votre environnement, vous choisissez les VPC, sous-réseaux et groupes de sécurité utilisés pour vos instances d'application et votre équilibreur de charge. Vous pouvez utiliser la configuration de VPC de votre choix, à condition qu'elle respecte les conditions suivantes.

Exigences du VPC
  • Accès Internet – Les instances peuvent avoir accès à Internet via l'une des méthodes suivantes.

    • Sous-réseau public – Les instances ont une adresse IP publique et utilisent une passerelle Internet pour accéder à Internet.

    • Sous-réseau privé – Les instances utilisent un périphérique NAT pour accéder à Internet.

    Note

    Si vous configurez des points de terminaison d’un VPC dans votre VPC pour vous connecter à la fois aux services elasticbeanstalk et elasticbeanstalk-health, l'accès Internet est facultatif et est uniquement requis si votre application en a spécifiquement besoin. Sans points de terminaison de VPC, votre VPC doit avoir accès à Internet.

    Le VPC par défaut qu'Elastic Beanstalk met en place pour vous fournir un accès Internet.

    Elastic Beanstalk ne prend pas en charge les paramètres de proxy comme HTTPS_PROXY pour la configuration d'un proxy web.

  • NTP – Les instances dans votre environnement Elastic Beanstalk utilisent le protocole NTP (Network Time) pour synchroniser l'horloge système. Si les instances ne peuvent pas communiquer sur le port UDP 123, l'horloge peut se désynchroniser, ce qui entraîne des problèmes avec les rapports d'intégrité d'Elastic Beanstalk. Assurez-vous que vos groupes de sécurité VPC et ACL réseau autorisent le trafic UDP entrant et sortant sur le port 123 pour éviter ces problèmes.

Le référentiel elastic-beanstalk-samples fournit des modèles AWS CloudFormation que vous pouvez utiliser pour créer un VPC destiné à vos environnements Elastic Beanstalk.

Pour créer des ressources avec un modèle AWS CloudFormation
  1. Clonez le référentiel d'exemples ou téléchargez un modèle à l'aide des liens que vous trouvez dans le fichier README.

  2. Ouvrez la console AWS CloudFormation.

  3. Choisissez Create stack (Créer une pile).

  4. Choisissez Télécharger un modèle sur Amazon S3.

  5. Choisissez Charger le fichier et chargez le fichier de modèle depuis votre ordinateur local.

  6. Choisissez Suivant et suivez les instructions pour créer une pile avec les ressources dans le modèle.

Lorsque la création de la pile est terminée, vérifiez l'onglet Outputs (Sorties) pour trouver l'ID du VPC et les ID de sous-réseau. Utilisez ces ressources pour configurer le VPC dans la catégorie de configuration Réseau de l'assistant de création d'un environnement.

VPC public

AWS CloudFormation modèlevpc-public.yaml

Paramètres (charge équilibrée)
  • Visibilité de l'équilibreur de charge – Public

  • Sous-réseaux de l'équilibreur de charge – Public pour les deux

  • Adresse IP publique de l'instance – Activée

  • Sous-réseaux de l'instance – Public pour les deux

  • Groupes de sécurité de l'instance – Ajouter le groupe de sécurité par défaut

Paramètres (une seule instance)
  • Sous-réseaux de l'instance – Public pour un des deux

  • Groupes de sécurité de l'instance – Ajouter le groupe de sécurité par défaut

Une conception élémentaire de VPC public uniquement inclut un ou plusieurs sous-réseaux publics, une passerelle Internet et un groupe de sécurité par défaut qui autorise le trafic entre les différentes ressources du VPC. Lorsque vous créez un environnement dans le VPC, Elastic Beanstalk crée des ressources supplémentaires qui varient en fonction du type d'environnement.

Ressources VPC
  • Instance unique – Elastic Beanstalk crée un groupe de sécurité pour l'instance d'application qui autorise le trafic sur le port 80 depuis Internet, et attribue une adresse IP Elastic à l'instance pour qu'elle soit associée à une adresse IP publique. Le nom de domaine de l'environnement est résolu avec l'adresse IP publique de l'instance.

  • Équilibrage de charge – Elastic Beanstalk crée un groupe de sécurité pour l'équilibreur de charge qui autorise le trafic sur le port 80 depuis Internet, et un groupe de sécurité pour les instances d'application qui autorisent le trafic depuis le groupe de sécurité de l'équilibreur de charge. Le nom de domaine de l'environnement est résolu avec le nom de domaine public de l'équilibreur de charge.

Cette option est similaire à la façon dont Elastic Beanstalk gère la mise en réseau lorsque vous utilisez le VPC par défaut. La sécurité d'un sous-réseau public dépend des groupes de sécurité d'instance et d'équilibreur de charge créés par Elastic Beanstalk. C'est là la configuration la moins coûteuse, car aucun passerelle NAT n'est requise.

VPC public/privé

AWS CloudFormation modèlevpc-privatepublic.yaml

Paramètres (charge équilibrée)
  • Visibilité de l'équilibreur de charge – Public

  • Sous-réseaux de l'équilibreur de charge – Public pour les deux

  • Adresse IP publique de l'instance – Désactivée

  • Sous-réseaux de l'instance – Privé pour les deux

  • Groupes de sécurité de l'instance – Ajouter le groupe de sécurité par défaut

Pour une sécurité optimale, ajoutez des sous-réseaux privés à votre VPC pour créer une configuration publique-privée. Cette configuration nécessite un équilibreur de charge et une passerelle NAT dans les sous-réseaux publics, et vous permet d'exécuter vos instances d'application, votre base de données et les autres ressources dans des sous-réseaux privés. Les instances des sous-réseaux privés peuvent uniquement communiquer avec Internet via l'équilibreur de charge et la passerelle NAT.

VPC privé

AWS CloudFormation modèlevpc-private.yaml

Paramètres (charge équilibrée)
  • Visibilité de l'équilibreur de charge – Privé

  • Sous-réseaux de l'équilibreur de charge – Les deux sous-réseaux privés

  • Adresse IP publique de l'instance – Désactivée

  • Sous-réseaux de l'instance – Privé pour les deux

  • Groupes de sécurité de l'instance – Ajouter le groupe de sécurité par défaut

Pour les applications internes qui ne doivent pas avoir d’accès depuis Internet, vous pouvez exécuter toutes les applications dans des sous-réseaux privés et configurer l'équilibreur de charge de façon à ce qu'il soit interne (remplacez la valeur de Load balancer visibility (Visibilité de l'équilibreur de charge) par Internal (Interne). Ce modèle crée un VPC sans sous-réseaux publics et sans passerelle Internet. Utilisez cette configuration pour les applications qui doivent être accessibles à partir du même VPC ou d'un VPN associé uniquement.

Exécution d'un environnement Elastic Beanstalk dans un VPC privé

Lorsque vous créez votre environnement Elastic Beanstalk dans un VPC privé, l'environnement n'a pas accès à Internet. Votre application peut avoir besoin d'accéder au service Elastic Beanstalk ou à d'autres services. Votre environnement peut utiliser des rapports d'intégrité améliorés et, dans ce cas, les instances d'environnement envoient des informations d'intégrité au service d'intégrité amélioré. Et le code Elastic Beanstalk sur les instances d'environnement envoie du trafic vers d'autres services AWS, et un autre trafic vers des points de terminaison non AWS (par exemple, pour télécharger des packages de dépendance pour votre application). Voici quelques étapes que vous devrez peut-être emprunter dans ce cas, pour vous assurer que votre environnement fonctionne correctement.

  • Configurez des points de terminaison d'un VPC pour Elastic Beanstalk – Elastic Beanstalk et son service d'intégrité amélioré prennent en charge les points de terminaison d'un VPC, ce qui garantit que le trafic vers ces services reste à l'intérieur du réseau Amazon et ne nécessite pas d'accès Internet. Pour de plus amples informations, veuillez consulter Utilisation d'Elastic Beanstalk avec les points de terminaison VPC.

  • Configurer les points de terminaison d'un VPC pour des services supplémentaires – les instances Elastic Beanstalk envoient du trafic vers plusieurs autres services AWS en votre nom : Amazon Simple Storage Service (Amazon S3), Amazon Simple Queue Service (Amazon SQS), AWS CloudFormation et Amazon CloudWatch Logs. Vous devez également configurer les points de terminaison de VPC pour ces services. Pour de plus amples informations sur les points de terminaison VPC, y compris les liens par service, veuillez consulter les points de terminaison VPC dans le Guide de l'utilisateur Amazon VPC.

    Note

    Certains services AWS, y compris Elastic Beanstalk, prennent en charge les terminaux VPC dans un nombre limité de régions AWS. Lorsque vous concevez votre solution de VPC privé, vérifiez qu'Elastic Beanstalk et les autres services dépendants mentionnés ici prennent en charge les points de terminaison d'un VPC dans la région AWS que vous choisissez.

  • Fournir une image Docker privée – Dans un environnement Docker, le code sur les instances de l'environnement peut essayer d'extraire votre image Docker configurée à partir d'Internet lors de la création de l'environnement et échouer. Pour éviter cet échec, créez une image Docker personnalisée sur votre environnement ou utilisez une image Docker stockée dans Amazon Elastic Container Registry (Amazon ECR) et configurez un point de terminaison VPC pour le service Amazon ECR.

  • Activer les noms DNS – Le code Elastic Beanstalk sur les instances d'environnement envoie du trafic à tous les services AWS à l'aide de leurs points de terminaison publics. Pour vous assurer que ce trafic passe bien, choisissez l'option Enable DNS name (Activer le nom DNS) lorsque vous configurez tous les points de terminaison d’un VPC d'interface. Cela ajoute une entrée DNS dans votre VPC qui mappe le point de terminaison du service public au point de terminaison de VPC d’interface.

    Important

    Si votre VPC n'est pas privé et dispose d'un accès Internet public, et si Enable DNS name (Activer le nom DNS) est désactivé pour n'importe quel point de terminaison de VPC, le trafic vers le service correspondant passe par l'Internet public. Ce n'est probablement pas votre intention. Ce problème est facile à détecter avec un VPC privé, car il empêche ce trafic de passer et vous recevez des erreurs. Cependant, avec un VPC public, vous n'obtenez aucune indication.

  • Inclure les dépendances de l'application – Si votre application a des dépendances telles que des packages d'exécution de langage, elle peut essayer de les télécharger et de les installer à partir d'Internet lors de la création de l'environnement et échouer. Pour éviter cet échec, incluez tous les packages de dépendance dans le bundle source de votre application.

  • Utiliser une version de plateforme actuelle – Assurez-vous que votre environnement utilise une version de plateforme qui a été publiée le 24 février 2020 ou plus tard. Plus précisément, utilisez une version de plateforme qui a été publiée avec ou après l'une de ces deux mises à jour : Linux Update 2020-02-28, Windows Update 2020-02-24.

    Note

    La raison pour laquelle il vous faut une version de plateforme mise à jour est que les anciennes versions présentaient un problème qui empêcherait les entrées DNS créées par l'option Enable DNS name (Activer le nom DNS) de fonctionner correctement pour Amazon SQS.