

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.

# Configurer un accès privé à un compartiment Amazon S3 via un point de terminaison VPC
<a name="set-up-private-access-to-an-amazon-s3-bucket-through-a-vpc-endpoint"></a>

*Martin Maritsch, Nicolas Jacob Baer, Gabriel Rodriguez Garcia, Shukhrat Khodjaev, Mohan Gowda Purushothama et Joaquin Rinaudo, Amazon Web Services*

## Résumé
<a name="set-up-private-access-to-an-amazon-s3-bucket-through-a-vpc-endpoint-summary"></a>

Dans Amazon Simple Storage Service (Amazon S3), les fichiers URLs présignés vous permettent de partager des fichiers de taille arbitraire avec des utilisateurs cibles. Par défaut, les Amazon S3 presigned URLs sont accessibles depuis Internet dans un délai d'expiration, ce qui les rend pratiques à utiliser. Cependant, les environnements d'entreprise nécessitent souvent que l'accès à Amazon S3 présigné URLs soit limité à un réseau privé uniquement.

Ce modèle présente une solution sans serveur pour interagir en toute sécurité avec les objets S3 en utilisant une signature préalable URLs depuis un réseau privé sans traversée d'Internet. Dans l'architecture, les utilisateurs accèdent à un Application Load Balancer via un nom de domaine interne. Le trafic est acheminé en interne via Amazon API Gateway et un point de terminaison de cloud privé virtuel (VPC) pour le compartiment S3. La AWS Lambda fonction génère des fichiers présignés URLs pour les téléchargements via le point de terminaison VPC privé, ce qui permet d'améliorer la sécurité et la confidentialité des données sensibles.

## Conditions préalables et limitations
<a name="set-up-private-access-to-an-amazon-s3-bucket-through-a-vpc-endpoint-prereqs"></a>

**Conditions préalables**
+ Un VPC qui inclut un sous-réseau déployé dans un réseau Compte AWS d'entreprise connecté (par exemple, via). AWS Direct Connect

**Limites**
+ Le compartiment S3 doit porter le même nom que le domaine. Nous vous recommandons donc de vérifier les [règles de dénomination des compartiments Amazon S3.](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html)
+ Cet exemple d'architecture n'inclut pas de fonctionnalités de surveillance pour l'infrastructure déployée. Si votre cas d'utilisation nécessite une surveillance, pensez à ajouter [AWS des services de surveillance](https://docs.aws.amazon.com/prescriptive-guidance/latest/implementing-logging-monitoring-cloudwatch/welcome.html).
+ Cet exemple d'architecture n'inclut pas la validation des entrées. Si votre cas d'utilisation nécessite une validation des entrées et un niveau de sécurité accru, envisagez de [l'utiliser AWS WAF pour protéger votre API](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-control-access-aws-waf.html).
+ Cet exemple d'architecture n'inclut pas la journalisation des accès avec l'Application Load Balancer. Si votre cas d'utilisation nécessite la journalisation des accès, pensez à activer les [journaux d'accès de l'équilibreur de charge](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-access-logs.html).

**Versions**
+ Python version 3.11 ou ultérieure
+ Terraform version 1.6 ou ultérieure

## Architecture
<a name="set-up-private-access-to-an-amazon-s3-bucket-through-a-vpc-endpoint-architecture"></a>

**Pile technologique cible**

Les services AWS suivants sont utilisés dans la pile technologique cible :
+ **Amazon S3** est le service de stockage principal utilisé pour charger, télécharger et stocker des fichiers en toute sécurité.
+ **Amazon API Gateway** expose les ressources et les points de terminaison permettant d'interagir avec le compartiment S3. Ce service joue un rôle dans la génération de données présignées URLs pour le téléchargement ou le chargement de données.
+ **AWS Lambda**génère des fichiers présignés URLs pour le téléchargement de fichiers depuis Amazon S3. La fonction Lambda est appelée par API Gateway.
+ **Amazon VPC** déploie des ressources au sein d'un VPC pour isoler le réseau. Le VPC inclut des sous-réseaux et des tables de routage pour contrôler le flux de trafic.
+ **Application Load Balancer** achemine le trafic entrant soit vers API Gateway, soit vers le point de terminaison VPC du compartiment S3. Il permet aux utilisateurs du réseau d'entreprise d'accéder aux ressources en interne.
+ Le point de **terminaison VPC pour Amazon S3** permet une communication directe et privée entre les ressources du VPC et Amazon S3 sans passer par l'Internet public.
+ **Gestion des identités et des accès AWS (IAM)** contrôle l'accès aux AWS ressources. Les autorisations sont configurées pour garantir des interactions sécurisées avec l'API et les autres services.

**Architecture cible**

![\[Configuration de l'accès privé à un compartiment S3 via un point de terminaison VPC\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/683ca6a1-789c-4444-bcbf-e4e80d253df3/images/1ca7ee17-d346-4eb9-bf61-ccf42528a401.png)


Le diagramme illustre les éléments suivants :

1. Les utilisateurs du réseau d'entreprise peuvent accéder à l'Application Load Balancer via un nom de domaine interne. Nous supposons qu'une connexion existe entre le réseau d'entreprise et le sous-réseau intranet dans le Compte AWS (par exemple, via une Direct Connect connexion).

1. L'Application Load Balancer achemine le trafic entrant soit vers API Gateway pour générer des données présignées URLs pour le téléchargement ou le chargement vers Amazon S3, soit vers le point de terminaison VPC du compartiment S3. Dans les deux scénarios, les demandes sont acheminées en interne et n'ont pas besoin de passer par Internet.

1. API Gateway expose les ressources et les points de terminaison pour interagir avec le compartiment S3. Dans cet exemple, nous fournissons un point de terminaison pour télécharger des fichiers depuis le compartiment S3, mais cela pourrait également être étendu pour fournir une fonctionnalité de téléchargement.

1. La fonction Lambda génère l'URL présignée pour télécharger un fichier depuis Amazon S3 en utilisant le nom de domaine de l'Application Load Balancer au lieu du domaine public Amazon S3.

1. L'utilisateur reçoit l'URL présignée et l'utilise pour télécharger le fichier depuis Amazon S3 à l'aide de l'Application Load Balancer. L'équilibreur de charge inclut une route par défaut pour envoyer le trafic qui n'est pas destiné à l'API vers le point de terminaison VPC du compartiment S3.

1. Le point de terminaison VPC achemine l'URL présignée avec le nom de domaine personnalisé vers le compartiment S3. Le compartiment S3 doit porter le même nom que le domaine.

**Automatisation et mise à l'échelle**

Ce modèle utilise Terraform pour déployer l'infrastructure depuis le référentiel de code dans un. Compte AWS

## Outils
<a name="set-up-private-access-to-an-amazon-s3-bucket-through-a-vpc-endpoint-tools"></a>

**Outils**
+ [Python](https://www.python.org/) est un langage de programmation informatique polyvalent.
+ [Terraform](https://www.terraform.io/) 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.
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) est un outil open source qui vous permet d'interagir avec les AWS services par le biais de commandes dans votre interface de ligne de commande.

**Référentiel de code**

Le code de ce modèle est disponible dans un GitHub dépôt sur [https://github.com/aws-samples/private-s3-vpce](https://github.com/aws-samples/private-s3-vpce).

## Bonnes pratiques
<a name="set-up-private-access-to-an-amazon-s3-bucket-through-a-vpc-endpoint-best-practices"></a>

L'exemple d'architecture de ce modèle utilise les [autorisations IAM](https://docs.aws.amazon.com/apigateway/latest/developerguide/permissions.html) pour contrôler l'accès à l'API. Toute personne disposant d'informations d'identification IAM valides peut appeler l'API. Si votre cas d'utilisation nécessite un modèle d'autorisation plus complexe, vous souhaiterez peut-être [utiliser un autre mécanisme de contrôle d'accès](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-control-access-to-api.html).

## Épopées
<a name="set-up-private-access-to-an-amazon-s3-bucket-through-a-vpc-endpoint-epics"></a>

### Déployez la solution dans un Compte AWS
<a name="deploy-the-solution-in-an-aws-account"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Obtenez des AWS informations d'identification. | Vérifiez vos AWS informations d'identification et votre accès à votre compte. Pour obtenir des instructions, consultez [la section Configuration et paramètres des fichiers d'identification](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html) dans la AWS CLI documentation. | AWS DevOps, AWS en général | 
| Pour cloner le référentiel. | Clonez le GitHub référentiel fourni avec ce modèle :<pre>git clone https://github.com/aws-samples/private-s3-vpce</pre> | AWS DevOps, AWS en général | 
| Configurez les variables. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/set-up-private-access-to-an-amazon-s3-bucket-through-a-vpc-endpoint.html) | AWS DevOps, AWS en général | 
| Déployez la solution. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/set-up-private-access-to-an-amazon-s3-bucket-through-a-vpc-endpoint.html) | AWS DevOps, AWS en général | 

### Tester la solution
<a name="test-the-solution"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez un fichier de test. | Chargez un fichier sur Amazon S3 afin de créer un scénario de test pour le téléchargement du fichier. Vous pouvez utiliser la [console Amazon S3](https://console.aws.amazon.com/s3/) ou la AWS CLI commande suivante :<pre>aws s3 cp /path/to/testfile s3://your-bucket-name/testfile</pre> | AWS DevOps, AWS en général | 
| Testez la fonctionnalité des URL présignées. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/set-up-private-access-to-an-amazon-s3-bucket-through-a-vpc-endpoint.html) | AWS DevOps, AWS en général | 
| Nettoyer. | Assurez-vous de supprimer les ressources lorsqu'elles ne sont plus nécessaires :<pre>terraform destroy</pre> | AWS DevOps, AWS en général | 

## Résolution des problèmes
<a name="set-up-private-access-to-an-amazon-s3-bucket-through-a-vpc-endpoint-troubleshooting"></a>


| Problème | Solution | 
| --- | --- | 
| Les noms de clés d'objets S3 comportant des caractères spéciaux tels que des signes numériques (\$1) interrompent les paramètres d'URL et génèrent des erreurs. | Codez correctement les paramètres d'URL et assurez-vous que le nom de la clé de l'objet S3 est conforme [aux directives d'Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html). | 

## Ressources connexes
<a name="set-up-private-access-to-an-amazon-s3-bucket-through-a-vpc-endpoint-resources"></a>

Amazon S3 :
+ [Partage d'objets avec présigné URLs](https://docs.aws.amazon.com/AmazonS3/latest/userguide/ShareObjectPreSignedURL.html)
+ [Contrôle de l'accès depuis les points de terminaison VPC à l'aide de politiques de compartiment](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies-vpc-endpoint.html)

Amazon API Gateway :
+ [Utiliser les politiques de point de terminaison VPC pour le mode privé APIs dans API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-vpc-endpoint-policies.html)

Application Load Balancer :
+ [Hébergement de sites Web statiques HTTPS internes avec ALB, S3 et PrivateLink](https://aws.amazon.com/blogs/networking-and-content-delivery/hosting-internal-https-static-websites-with-alb-s3-and-privatelink/) (article de AWS blog)