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.
Consolidez la génération d'URL présignées Amazon S3 et le téléchargement d'objets en utilisant un point de terminaison associé à des adresses IP statiques
Song Jin, Eunhye Jo et Jun Soung Lee, Amazon Web Services
Récapitulatif
Ce modèle simplifie l'accès à Amazon Simple Storage Service (Amazon S3) en créant une URLs signature présignée sécurisée et personnalisée pour le téléchargement d'objets. La solution fournit un point de terminaison unique doté d'un domaine unique et d'adresses IP statiques. Il est conçu pour les clients qui ont besoin de consolider à la fois l'API et les points de terminaison Amazon S3 sous un domaine unifié avec des adresses IP statiques. Le cas d'utilisation implique que les utilisateurs suivent une politique de pare-feu basée sur des adresses IP et des listes de domaines autorisés, limitant l'accès aux API à des domaines et adresses IP spécifiques.
L'architecture utilise des clés Services AWS AWS Global Accelerator, notamment Amazon API Gateway AWS Lambda, Application Load Balancer et Amazon S3. AWS PrivateLink Cette conception centralise l'API pour générer le pré-signé URLs et le point de terminaison Amazon S3 sous un seul domaine, lié à un accélérateur doté de deux adresses IP statiques. Par conséquent, les utilisateurs peuvent facilement demander URLs et télécharger des objets Amazon S3 présignés via un point de terminaison de domaine unifié avec des adresses IP statiques.
Cette architecture est particulièrement avantageuse pour les clients soumis à des politiques ou à des exigences de conformité strictes, tels que ceux des secteurs public, médical et financier.
Conditions préalables et limitations
Prérequis
Un actif Compte AWS
Une zone hébergée publique pour votre nom de domaine personnalisé
Un domaine importé dans AWS Certificate Manager (ACM) dans le domaine Région AWS de votre choix
Limites
Le nom du compartiment Amazon S3 doit correspondre au nom de domaine du point de terminaison. Cette exigence vise à garantir que le point de terminaison Amazon S3 peut être desservi via le point de terminaison d'API unique.
Le nom de domaine personnalisé utilisé dans API Gateway doit correspondre au nom de domaine de l'unique point de terminaison de l'API.
Certains Services AWS ne sont pas disponibles du tout Régions AWS. Pour connaître la disponibilité par région, consultez la section AWS Services par région
. Pour des points de terminaison spécifiques, consultez Points de terminaison de service et quotas, puis choisissez le lien correspondant au service.
Architecture
Le schéma suivant montre l'architecture et le flux de travail cibles pour ce modèle.

Le diagramme illustre le concept et le flux de travail suivants :
Un utilisateur lance une demande pour générer une URL présignée en utilisant le point de terminaison personnalisé desservi AWS Global Accelerator, en utilisant le nom de domaine personnalisé et les adresses IP associées.
Une fonction Lambda génère l'URL présignée, pointant vers le point de terminaison personnalisé. Il répond par une redirection 301 qui contient l'URL présignée générée. Par le biais de l'URL présignée redirigée, l'utilisateur télécharge automatiquement l'objet en utilisant le point de terminaison personnalisé servi via Global Accelerator.
Les composants de l'architecture globale pour la génération d'URL présignées et le flux de téléchargement d'objets sont les suivants :
Fourniture d'adresses IP statiques par Global Accelerator.
Enregistrement de l'alias de l'accélérateur en tant qu'enregistrement A dans la zone hébergée publique Amazon Route 53 avec le nom de domaine personnalisé.
Création d'un compartiment Amazon S3 avec un nom de compartiment correspondant au nom de domaine personnalisé enregistré.
Création de points de terminaison VPC pour API Gateway et le service Amazon S3.
Configuration d'un Application Load Balancer orienté vers l'interne pour se connecter à Global Accelerator.
Attribution d'un nom de domaine personnalisé pour API Gateway avec un certificat ACM attaché.
Déploiement d'une API Gateway privée intégrée à une fonction Lambda.
La fonction Lambda est dotée d'un rôle AWS Identity and Access Management (IAM) attaché (avec GetObjectautorisations).
Outils
Services AWS
Amazon API Gateway vous aide à créer, publier, gérer, surveiller et sécuriser REST, HTTP, et ce, WebSocket APIs à n'importe quelle échelle.
Les équilibreurs de charge des applications distribuent le trafic applicatif entrant sur plusieurs cibles, telles que les instances Amazon Elastic Compute Cloud (Amazon EC2), dans plusieurs zones de disponibilité.
AWS Certificate Manager (ACM) vous aide à créer, à stocker et à renouveler des certificats et clés SSL/TLS X.509 publics et privés qui protègent vos AWS sites Web et vos applications.
AWS Cloud Development Kit (AWS CDK)est un framework de développement logiciel qui vous aide à définir et à provisionner AWS Cloud l'infrastructure dans le code.
AWS Global Acceleratorest un service mondial qui prend en charge plusieurs Régions AWS terminaux. Vous pouvez créer des accélérateurs qui dirigent le trafic vers des points de terminaison optimaux sur le réseau AWS mondial. Il permet d'améliorer la disponibilité et les performances de vos applications Internet qui sont utilisées par un public mondial.
AWS Identity and Access Management (IAM) vous aide à gérer en toute sécurité l'accès à vos AWS ressources en contrôlant qui est authentifié et autorisé à les utiliser.
AWS Lambda est un service de calcul qui vous aide à exécuter du code sans avoir à allouer ni à gérer des serveurs. Il exécute votre code uniquement lorsque cela est nécessaire et évolue automatiquement, de sorte que vous ne payez que pour le temps de calcul que vous utilisez.
AWS PrivateLinkvous permet de créer des connexions privées unidirectionnelles entre vos clouds privés virtuels (VPCs) et des services extérieurs au VPC.
Amazon Route 53 est un service Web DNS hautement disponible et évolutif.
Amazon Simple Storage Service (Amazon S3) est un service de stockage d'objets basé sur le cloud qui vous permet de stocker, de protéger et de récupérer n'importe quel volume de données.
Autres outils
Terraform
est un outil d'infrastructure en tant que code (IaC) HashiCorp qui vous aide à créer et à gérer des ressources cloud et sur site.
Référentiel de code
Vous pouvez déployer ce modèle en utilisant le AWS CDK ou Terraform selon vos préférences. La section Epics contient des instructions pour les deux méthodes de déploiement. Le code de ce modèle est disponible dans les GitHub référentiels suivants :
Terraform — s3
- -terraform presignedurl-staticips-endpoint-with
Bonnes pratiques
Pour améliorer la sécurité de l'environnement de production, il est essentiel de mettre en œuvre des mécanismes d'autorisation, tels qu'Amazon Cognito, afin de restreindre l'accès à l'API de
PresignedUrl
génération.Respectez le principe du moindre privilège et accordez les autorisations minimales requises pour effectuer une tâche. Pour plus d'informations, consultez les sections Accorder le moindre privilège et Bonnes pratiques en matière de sécurité dans la documentation IAM.
Épopées
Tâche | Description | Compétences requises |
---|---|---|
Choisissez un nom de domaine. | Choisissez un nom de domaine public pour le point de terminaison Amazon S3 unifié. Le nom de domaine est également utilisé comme nom du compartiment Amazon S3. | Administrateur AWS, administrateur réseau |
Créez une zone hébergée publique. | Créez une zone hébergée publique dans Amazon Route 53. Son nom de domaine doit correspondre au nom de domaine utilisé dans API Gateway. | Administrateur AWS, administrateur réseau |
Préparez un certificat SSL. | Utilisez AWS Certificate Manager (ACM) pour demander ou importer un certificat SSL pour le domaine de votre application Web. | Administrateur AWS, administrateur réseau |
Tâche | Description | Compétences requises |
---|---|---|
Configurez l'environnement de développement Terraform. | Pour configurer l'environnement de développement, procédez comme suit :
| Administrateur AWS, administrateur du cloud |
Modifiez les |
Notez ce qui suit :
| Administrateur AWS, administrateur du cloud |
Fournir des ressources réseau. | Pour approvisionner les ressources réseau, exécutez les commandes suivantes :
Pendant l'exécution de la | Administrateur AWS, administrateur du cloud |
Provisionnez API Gateway, Amazon S3 et Lambda. | Pour provisionner des ressources réseau, utilisez les commandes suivantes :
| Administrateur AWS, administrateur du cloud |
Tâche | Description | Compétences requises |
---|---|---|
Configurez l'environnement AWS CDK de développement. | Pour configurer l'environnement de développement, procédez comme suit :
| Administrateur AWS, administrateur du cloud |
Configurez les paramètres du domaine dans le | Pour modifier les options de la variable constante, utilisez les commandes suivantes :
Dans les commandes, remplacez chaque espace réservé par vos propres informations :
| Administrateur AWS, administrateur du cloud |
Déployez les piles. | Pour déployer deux piles, l'une pour le cloud privé virtuel (VPC) et l'autre pour l'application, utilisez la commande suivante :
| Administrateur AWS, administrateur du cloud |
Tâche | Description | Compétences requises |
---|---|---|
Vérifiez les adresses IP du point de terminaison. | Pour vérifier que le domaine correspondant à ce modèle possède des adresses IP statiques, utilisez la commande suivante :
| Administrateur réseau |
Téléchargez un fichier de test que vous pourrez télécharger ultérieurement. | Téléchargez le fichier de test dans le | Administrateur AWS, administrateur du cloud |
Appelez l'API pour générer une URL présignée. | Pour générer une URL présignée, appelez l'URL depuis un navigateur ou un client API (par exemple, Postman
Remplacez les valeurs d'espace réservé dans | Propriétaire de l'application |
Vérifiez le résultat. | Le résultat attendu est que vous devriez recevoir un code d'état de redirection 301 (déplacé définitivement). Cette réponse contiendra l'URL présignée, qui devrait automatiquement lancer le téléchargement de votre fichier de test. | Ingénieur de test |
Tâche | Description | Compétences requises |
---|---|---|
Détruisez les ressources API Gateway, Amazon S3 et Lambda. | Pour supprimer des ressources, utilisez les commandes suivantes :
| Administrateur AWS, administrateur du cloud |
Détruisez les ressources du réseau. | Pour supprimer des ressources réseau, utilisez les commandes suivantes :
| Administrateur AWS, administrateur du cloud |
Tâche | Description | Compétences requises |
---|---|---|
Détruisez les piles. | Pour détruire à la fois le VPC et les piles d'applications, utilisez la commande suivante :
| Administrateur AWS, administrateur du cloud |
Videz et supprimez les compartiments Amazon S3. | Videz et supprimez l'objet (compartiment Amazon S3) et les journaux (compartiment Amazon S3) qui ne sont pas supprimés par défaut. Les noms des compartiments Amazon S3 sont Si vous préférez utiliser le AWS Command Line Interface (AWS CLI) pour supprimer les compartiments, utilisez les commandes suivantes :
Remplacez | Administrateur AWS, administrateur du cloud |
Ressources connexes
AWS Blogs