# data[].attributes.body
Amazon S3 est un service qui  permet de stocker des données sous forme d'objets dans des compartiments. Un compartiment est un conteneur d'objets ou de fichiers.

Pour stocker des données dans Amazon S3, vous devez d'abord créer un compartiment et spécifier son nom et sa région AWS, puis vous devez télécharger les données dans le compartiment en tant qu'objets dans Amazon S3. Chaque objet contient une clé (ou key name ), qui est l'identifiant unique de l'objet dans le compartiment.

# data[].attributes.body
Un objet est un fichier et toutes les métadonnées le décrivant.

Voyons quelques exemples d'objets Amazon S3 :

Amazon S3 est un magasin d'objets qui utilise des valeurs clés uniques pour stocker autant d'objets que vous le souhaitez. Vous stockez ces objets dans un ou plusieurs compartiments, et chaque objet peut atteindre 5 To. Un objet se compose des éléments suivants :

Key

Nom que vous attribuez à un objet. Vous utilisez la clé de l'objet pour récupérer l'objet. Pour plus d'informations, consultez Utiliser les métadonnées d'un objet.

ID de version

Dans un compartiment, une clé et un ID de version identifient un objet de manière unique. L'ID de version est une chaîne de caractères générée par Amazon S3 lorsque vous ajoutez un objet à un compartiment. Pour de plus amples informations, veuillez consulter Utilisation de la gestion des versions dans les compartiments S3.

Valeur

Contenu que vous stockez.

Une valeur d'objet peut être toute séquence d'octets. La taille des objets peut aller de zéro à 5 To. Pour de plus amples informations, veuillez consulter Chargement d'objets.

Metadonnées

Ensemble de paires nom-valeur grâce auxquelles vous pouvez stocker des informations sur l'objet. Vous pouvez attribuer des métadonnées, appelées métadonnées définies par l'utilisateur, aux objets dans Amazon S3. Amazon S3 attribue également des métadonnées système à ces objets pour les gérer. Pour plus d'informations, consultez Utiliser les métadonnées d'un objet.

Sous-ressources

Amazon S3 utilise le mécanisme des sous-ressources pour stocker des informations supplémentaires propres à l'objet. Etant donné que les sous-ressources sont subordonnées aux objets, elles sont toujours associées à d'autres entités comme un objet ou un compartiment. Pour de plus amples informations, veuillez consulter Sous-ressources d'objet.

Informations sur le contrôle d'accès

Vous pouvez contrôler l'accès aux objets que vous stockez dans Amazon S3. Amazon S3 prend en charge le contrôle d'accès basé sur les ressources, comme la liste de contrôle d'accès (ACL) et les stratégies de compartiment, ainsi que le contrôle d'accès basé sur l'utilisateur. Pour en savoir plus sur le contrôle d'accès, consultez la rubrique suivante :

Bonnes pratiques en matière de contrôle d'accès

Consignes relatives à la stratégie d'accès

Identity and Access Management dans Amazon S3

Configuration des listes ACL

# data[].attributes.body
Lambda peut traiter les notifications d'événements d'Amazon Simple Storage Service. Amazon S3 peut envoyer un événement à une fonction Lambda lorsqu'un objet est créé ou supprimé. Vous pouvez configurer les paramètres de notification sur un compartiment et accorder à Amazon S3 l'autorisation d'appeler une fonction sur la stratégie d'autorisation basée sur les ressources de la fonction.
Vidéo explicative de Lambda :
https://youtu.be/mJmrutUpMas

# data[].attributes.body
Les déclencheurs Lambda sont utiles pour ajouter des fonctionnalités au cours de certains cycles de vie du parcours de l'utilisateur. Amplify fournit des modèles de déclencheurs courants que vous pouvez activer et modifier (si nécessaire) en quelques questions simples.
Déclencheurs Cognito Lambda :

Certains services AWS peuvent appeler des fonctions Lambda en réponse à des événements de cycle de vie. La CLI Amplify fournit des modèles de déclencheurs pour les cas d'utilisation courants.

Si vous souhaitez modifier la fonctionnalité de ces modèles, vous pouvez le faire localement avant de les pousser. Après avoir sélectionné les modèles via la CLI, votre copie locale des modèles se trouve dans amplify/backend/function/<function-name>/src.
Amazon Cognito vous permet de configurer un déclencheur Lambda par événement. Afin de créer une flexibilité supplémentaire lors de la configuration des déclencheurs Cognito via la CLI, la CLI créera un fichier d'index qui parcourt les modules JavaScript. Chaque modèle que vous configurez est son propre module JavaScript.
Dans le workflow Auth CLI par défaut, une liste de modèles de déclencheur Lambda vous sera présentée si vous choisissez de configurer les paramètres avancés :

$ Do you want to enable any of the following capabilities?
  ❯ ◯ Add Google reCaptcha Challenge
    ◯ Email Verification Link with Redirect
    ◯ Add User to Group
    ◯ Email Domain Filtering (deny list)
    ◯ Email Domain Filtering (allow list)
    ◯ Custom Auth Challenge Flow (basic scaffolding - not for production)
    ◯ Override ID Token Claims

# data[].attributes.body
Avec AWS Identity and Access Management (IAM), vous pouvez spécifier qui ou quoi peut accéder aux services et aux ressources dans AWS, gérer de manière centralisée les autorisations précises et analyser l'accès pour affiner les autorisations sur AWS.
Pourquoi avoir besoin d'IAM ?
Utilisez IAM pour gérer et faire évoluer la charge de travail et l'accès de la main-d'œuvre en toute sécurité, en soutenant votre agilité et votre innovation dans AWS.
En bref, les politiques IAM autorisent ou rejettent l'accès aux services AWS ou aux actions API qui fonctionnent avec IAM. Une stratégie IAM ne peut être appliquée qu'aux identités IAM (utilisateurs, groupes ou rôles). Les politiques IAM ne peuvent pas restreindre l'utilisateur racine du compte AWS.
Lien explicative sur IAM :
https://youtu.be/SXSqhTn2DuE

# data[].attributes.body
Qu'est ce qu'un rôle IAM ?
Un rôle IAM est une identité IAM que vous pouvez créer dans votre compte et qui dispose d'autorisations spécifiques. Un rôle IAM est similaire à un utilisateur IAM, car il s'agit d'une identité AWS avec des politiques d'autorisation qui déterminent ce que l'identité peut et ne peut pas faire dans AWS.
1. Vous pouvez utiliser des rôles pour déléguer l'accès à des utilisateurs, des applications ou des services qui n'ont normalement pas accès à vos ressources AWS. Par exemple, vous pouvez accorder aux utilisateurs de votre compte AWS l'accès à des ressources dont ils ne disposent généralement pas, ou accorder aux utilisateurs d'un compte AWS l'accès aux ressources d'un autre compte.
2. Elle explique également quand et comment choisir les diverses approches et comment créer, gérer, prendre (endosser) et supprimer des rôles.

# data[].attributes.body
Règle du bucket

Une stratégie de compartiment est une stratégie AWS Identity and Access Management (IAM) basée sur les ressources que vous pouvez utiliser pour accorder des autorisations d'accès à votre compartiment et aux objets qu'il contient. Seul le propriétaire du compartiment peut associer une stratégie à un compartiment. Les autorisations attachées à un compartiment s'appliquent à tous les objets de compartiment appartenant au propriétaire du compartiment. Les stratégies de compartiment sont limitées à une taille de 20 Ko.
Les stratégies de compartiment utilisent la syntaxe de stratégie d'accès basée sur JSON, qui est la norme AWS. Vous pouvez utiliser des stratégies de compartiment pour ajouter ou refuser des autorisations aux objets d'un compartiment. Les stratégies de compartiment approuvent ou refusent les demandes en fonction des éléments qu'elles contiennent, y compris le demandeur, les opérations S3, les ressources et les aspects ou conditions de la demande (par exemple, l'adresse IP utilisée pour l'envoyer).

Voyons un exemple de statégie -->
L'exemple de stratégie suivant exige que chaque objet écrit dans le compartiment soit chiffré avec un chiffrement côté serveur à l'aide de clés AWS Key Management Service (AWS KMS) (SSE-KMS). Si l'objet n'est pas chiffré avec SSE-KMS, la demande sera rejetée.
{
"Version": "2012-10-17",
"Id": "PutObjPolicy",
"Statement": [{
"Sid": "DenyObjectsThatAreNotSSEKMS",
"Principal": "*",
"Effect": "Deny",
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*",
"Condition": {
"Null": {
"s3:x-amz-server-side-encryption-aws-kms-key-id": "true"
}
}
}]
}

# data[].attributes.body
Qu'est ce qu'un API Gateway ?
Amazon API Gateway est un service entièrement géré qui permet aux développeurs de créer, publier, maintenir, surveiller et sécuriser facilement des API à n'importe quelle échelle. Les API agissent comme la "porte d'entrée" permettant aux applications d'accéder aux données, à la logique métier ou aux fonctionnalités de vos services backend.
1. API Gateway prend en charge les charges de travail conteneurisées et sans serveur, ainsi que les applications Web.
2. API Gateway gère toutes les tâches impliquées dans l'acceptation et le traitement de centaines de milliers d'appels d'API simultanés, y compris la gestion du trafic, la prise en charge de CORS, l'autorisation et le contrôle d'accès, la limitation, la surveillance et la gestion des versions d'API.
Les différents types d'API Gateway :
- API RESTful

Créez des API RESTful optimisées pour les charges de travail sans serveur et les backends HTTP à l'aide d'API HTTP.
- API WEBSOCKET

Créez des applications de communication bidirectionnelle en temps réel, telles que des applications de chat et des tableaux de bord de streaming, avec les API WebSocket.

# data[].attributes.body
L'API REST et l'API HTTP sont toutes deux des produits de l'API RESTful. On s'intéresse ici à API REST ET API GATEWAY. Il existe plusieurs façon de les utilisés et voyons ci-dessous :

Sécurité :
API Gateway propose plusieurs façons de protéger votre API contre certaines menaces, telles que les utilisateurs malveillants ou les pics de trafic. Pour plus d'informations, consultez Sécurisation des API REST et Sécurisation des API HTTP .

Autorisation :
API Gateway prend en charge plusieurs mécanismes pour contrôler et gérer l'accès à l'API. Pour plus d'informations, consultez Contrôle et gestion de l'accès à une API REST dans API Gateway.

Gestion des API :
Choisissez les API REST si vous avez besoin de fonctionnalités de gestion des API telles que les clés API et la limitation du débit par client. Pour plus d'informations, consultez Déploiement de l'API REST pour les clients.

Développement :
Lors du développement d'API API Gateway, vous pouvez définir un certain nombre de caractéristiques d'API. Ces fonctionnalités dépendent du cas d'utilisation de l'API. Pour plus d'informations, consultez Développement d'une API REST dans API Gateway.

Surveillance :
API Gateway prend en charge plusieurs options de journalisation des demandes d'API et de surveillance des API.

Intégrations :
Les intégrations connectent l'API API Gateway aux ressources principales.

# data[].attributes.body
Qu'est ce que API Gateway CORS ?
CORS ou partage de ressources cross-origin, est une fonction de sécurité du navigateur qui limite les requêtes HTTP initiées par des scripts exécutés dans le navigateur.
CORS est généralement requis pour créer des applications Web qui accèdent aux API hébergées sur un domaine ou une origine différente.
Par exemple, si votre API est hébergée sur et que vous souhaitez appeler l'API à partir d'une application Web hébergée sur , l'API doit prendre en charge CORS.https://{api_id}.execute-api.{region}.amazonaws.com/example.com

# data[].attributes.body
Qu'est ce que API HTTP API Gateway ?
Vous pouvez utiliser les API HTTP pour envoyer des demandes aux fonctions AWS Lambda ou à tout point de terminaison HTTP routable. Par exemple, vous pouvez créer une API HTTP qui s'intègre à une fonction Lambda sur le backend. Lorsqu'un client appelle l'API, API Gateway envoie la demande à la fonction Lambda et renvoie la réponse de la fonction au client.
Les API HTTP prennent en charge l'autorisation OpenID Connect et OAuth 2.0. Ils sont livrés avec une prise en charge intégrée du partage des ressources cross-origin (CORS) et des déploiements automatiques.

# data[].attributes.body
Déclencheur Lambda : https://docs.amplify.aws/cli/usage/lambda-triggers/#set-up-lambda-triggers
https://docs.amplify.aws/cli/usage/lambda-triggers/
IAM :
https://aws.amazon.com/iam/
S3 compartiment : https://docs.aws.amazon.com/fr_fr/AmazonS3/latest/userguide/UsingBucket.html
Stratégie et politique IAM :
https://aws.amazon.com/fr/premiumsupport/knowledge-center/iam-policy-service-control-policy/#:~:text=Les%20politiques%20IAM%20autorisent%20ou,utilisateur%20racine%20du%20compte%20AWS.
AWS Lambda :
https://en.wikipedia.org/wiki/AWS_Lambda
S3 Objets : https://docs.aws.amazon.com/fr_fr/AmazonS3/latest/userguide/UsingObjects.html
Rôle IAM :
https://docs.aws.amazon.com/fr_fr/IAM/latest/UserGuide/id_roles.html
API Gateway :
https://aws.amazon.com/api-gateway/
API Gateway CORS :
https://docs.aws.amazon.com/it_it/apigateway/latest/developerguide/http-api-cors.html
API HTTP API Gateway :
https://docs.aws.amazon.com/it_it/apigateway/latest/developerguide/http-api.html
Point de terminaison d'API :
https://docs.aws.amazon.com/fr_fr/apigateway/latest/developerguide/api-gateway-api-endpoint-types.html
API REST API Gateway :
https://docs.aws.amazon.com/it_it/apigateway/latest/developerguide/http-api-vs-rest.html

# data[].attributes.body
Un point de terminaison d'API privée est un point de terminaison d'API qui est uniquement accessible à partir de votre Amazon Virtual Private Cloud (VPC) à l'aide d'un point de terminaison d'un VPC d'interface, qui est une interface réseau de point de terminaison (ENI) créée dans votre VPC.
Il y a deux types de point de terminaison qui sont :
- Les points de terminaison d'API régionale :
Un point de terminaison d'API régionale est conçu pour les clients situés dans la même région. Lorsqu'un client s'exécutant sur une instance EC2 appelle une API dans la même région, ou lorsqu'une API est prévue pour un petit nombre de clients avec des demandes élevées, une API régionale réduit la surcharge de connexion.
- Le point de terminaison d'API privée :
Un point de terminaison d'API privée est un point de terminaison d'API qui est uniquement accessible à partir de votre Amazon Virtual Private Cloud (VPC) à l'aide d'un point de terminaison d'un VPC d'interface, qui est une interface réseau de point de terminaison (ENI) créée dans votre VPC.