jeudi 19 février 2026

Autorisations pour une application sans serveurs dans AWS

Mbadi oum

Demande de solution

Une entreprise rencontre des difficultés pour s'assurer que l'intégration et la communication sont sécurisées entre divers services AWS au sein de son architecture sans serveur. L'entreprise souhaite mettre en œuvre des mesures de sécurité appropriées pour protéger la base de données, les systèmes de stockage et l'exécution des fonctions tout en maintenant la conformité.

  1. Construire une application sans serveur en utilisant Lambda, DynamoDB et S3.
  2. Utiliser un rôle IAM et une politique de bucket S3 pour les permissions.

 

Objectifs

-        Créer un compartiment dans Amazon S3 qui inclut une politique de compartiment

-        Créer une table Amazon DynamoDB

-        Créer une fonction AWS Lambda en utilisant un rôle d’exécution approprié

-        Configurer la fonction Lambda pour tester la table DynamoDB et le compartiment S3

 

Étape 1 : Consultation du fichier de l’atelier

-        Sauvegarder le contenu suivant dans un fichier le fichier lab_resources.txt.

 

 

################ S3 BUCKET POLICY ################

 

{

    "Version": "2012-10-17",

    "Statement": [

        {

            "Effect": "Deny",

            "Principal": "*",

            "Action": "s3:PutObject",

            "Resource": "<BUCKET_ARN>/*",

            "Condition": {

                "StringNotEquals": {

                    "aws:PrincipalArn": "arn:aws:iam::<ACCOUNT_ID>:role/LabLambdaRole"

                }

            }

        }

    ]

}

 

################ LAMBDA FUNCTION ################

 

import os

import boto3

import uuid

s3 = boto3.resource('s3')

dynamodb = boto3.resource('dynamodb')

def lambda_handler(event, context):

   message = "Hello from AWS Lambda!"

   encoded_string = message.encode("utf-8")

   file_name = "hello.txt"

   s3_path = "test/" + file_name

   dynamodb.Table(os.environ['DYNAMODB_TABLE_NAME']).put_item(Item={'ID': '12345','content':message})

   s3.Bucket(os.environ['S3_BUCKET_NAME']).put_object(Key=s3_path, Body=encoded_string)

   response = {

      'statusCode': 200,

      'body': 'success!',

      'headers': {

            'Content-Type': 'application/json',

            'Access-Control-Allow-Origin': '*'

      },

   }

   return response

 

Étape 2 : Configuration de l’accès aux ressources

AWS Identity and Access Management (IAM) est un service web qui vous aide à contrôler de manière sécurisée l'accès aux ressources AWS. Avec IAM, vous pouvez gérer les autorisations qui contrôlent les ressources AWS auxquelles les utilisateurs peuvent accéder.

-        Dans la barre de navigation supérieure, vérifiez que le sélecteur de région est défini sur N. Virginia (us-east-1).

 

-        Dans la zone de recherche Services, tapez : iam Dans les résultats de recherche, sous Services, cliquez sur IAM.

 

-        Dans le volet de navigation de gauche, sous Gestion des accès, cliquez sur Rôles.

-        Dans la zone de recherche de la section Rôles, saisissez : LabLambda

Vous utilisez IAM pour contrôler qui est authentifié (connecté) et autorisé (dispose des autorisations) à utiliser des ressources

-        Sous Nom du rôle, cliquez sur LabLambdaRole.

 

-        Dans la section Summary, sous ARN, cliquez sur l'icône de copie pour copier l'ARN fourni. Vous utiliserez cet ARN dans les étapes suivantes.

 

 

arn:aws:iam::133733946321:role/LabLambdaRole

 

-         Sous la section, cliquez sur l'onglet Permissions.

Un rôle IAM est une identité IAM que vous pouvez créer dans votre compte et qui possède des autorisations spécifiques. Il possède des stratégies d'autorisation qui déterminent ce que l'identité peut et ne peut pas faire dans AWS.

 

Vous gérez l'accès dans AWS en créant des stratégies et en les attachant aux identités IAM (utilisateurs, groupes d'utilisateurs ou rôles) ou aux ressources AWS. Une stratégie est un objet dans AWS qui, lorsqu'elle est associée à une identité ou une ressource, définit leurs autorisations.

-        Dans l'onglet Permissions, sous Policy name, cliquez le signe + pour développer la stratégie DynamoDBPutItem. Examinez la stratégie. Cette stratégie autorise l'action PutItem sur tout nom de table Amazon DynamoDB commençant par lab-table.

 

 

-        Cliquez pour développer la stratégie S3PutObject. Examinez la stratégie. Cette stratégie autorise l'action PutObject sur tout nom de compartiment S3 commençant par lab-bucket-.

 

Étape 3 : Configuration du service de stockage

Amazon Simple Storage Service (Amazon S3) est un service de stockage d'objets qui stocke les données sous forme d'objets dans des buckets. Un objet est un fichier et toutes les métadonnées qui décrivent le fichier.


- Dans la zone de recherche Services, tapez : S3 puis cliquez sur S3

-        Dans l'onglet General purpose buckets, cliquez sur Create bucket.

 


Pour stocker vos données dans Amazon S3, vous devez d'abord créer un bucket et spécifier un nom de bucket et une région AWS. Un bucket est un conteneur pour les objets stockés dans Amazon S3. Vous pouvez stocker un nombre quelconque d'objets dans un bucket et avoir jusqu'à 100 buckets dans votre compte.

 

-        Pour Bucket name, tapez le nom de votre choix commençant par lab-bucket. Les noms de bucket doivent être uniques. Si vous rencontrez une erreur « bucket already exists », essayez un autre nom de lab-bucket.

 

 

Amazon S3 applique le chiffrement côté serveur avec les clés gérées par Amazon S3 (SSE-S3) comme niveau de chiffrement de base pour chaque bucket dans Amazon S3.

-        Faites défiler vers le bas jusqu'à Default encryption. Review la section Default encryption.

-        En bas de la page, cliquez sur Create bucket.

-        Dans l'alerte de réussite, examinez le message.

-        Dans l'onglet General purpose buckets, sélectionnez (surligné) et copiez le nom du bucket que vous venez de créer. Vous utilisez ce nom de bucket dans une étape ultérieure.

lab-bucket-29022026

 

-        Cliquez sur le même nom de bucket.

 

-        Cliquez sur l'onglet Permissions.

-        Faites défiler vers le bas jusqu'à la politique de Bucket.

 

 


Une stratégie de bucket est une stratégie basée sur les ressources que vous pouvez utiliser pour accorder des autorisations d'accès à votre bucket Amazon S3 et aux objets qu'il contient.

-        Sur Bucket policy, Cliquez sur Edit

-        Sur votre appareil, dans le fichier lab_resources.txt, copiez le code S3 BUCKET POLICY, puis collez-le dans la fenêtre de code de la console.

-        Au-dessus de la fenêtre de code, sous Bucket ARN, cliquez sur l'icône de copie pour copier l'ARN fourni.

-        Pour Resource, afin de remplacer le placeholder <BUCKET_ARN>, collez l'ARN que vous venez de copier.

 

-        Examinez la politique. Cette politique de compartiment refuse l'action PutObject sur le compartiment, sauf si l'action est effectuée par le rôle IAM, LabLambdaRole. La clé de condition aws:PrincipalArn est utilisée pour comparer l'ARN du principal qui a effectué la demande avec l'ARN que vous spécifiez dans la politique. Dans la section DIY, vous devrez mettre à jour cette clé de condition.

-        Faites défiler jusqu'en bas de la page, puis cliquez sur Save changes (non illustré).

 

Étape 4 : Créer une table dans DynamoDB

-        Naviguez jusqu'à la console Amazon DynamoDB.

-        Cliquez sur Create table.

 

-        Pour le nom de la table, saisissez : lab-table.

-        Pour la clé de partition, saisissez : ID.

 

-        Cliquez sur Create table.

 

-        Dans la section Tables, sous Status, vérifiez que le statut est Active. Attendez que le statut soit Active avant de continuer.

 

 

Étape 5 : Créer la fonction Lamba

-        Naviguez jusqu'à la console AWS Lambda.

-        Dans la section Fonction, examinez la diy_function. Vous devez utiliser cette fonction dans la section DIY suivante de cette solution.

-        Cliquez sur Créer une fonction

 

-        Pour Create function, choisissez Author from scratch.

-        Pour Function name, tapez : lab-function

-        Pour Runtime, dans la liste déroulante, choisissez Python 3.14.

-        Faites défiler jusqu'à Permissions.

-        Cliquez pour développer Change default execution role.

-        Pour Execution role, choisissez Use an existing role.

-        Pour Existing role, choisissez LabLambdaRole.

-        Cliquez sur Create function.

-        Faites défiler jusqu'à l'onglet Code.

-        Sur votre appareil, dans le fichier lab_resources.txt, copiez le code LAMBDA FUNCTION, puis collez-le dans la fenêtre lambda_function.py sur la console.

-        Examinez le code Python. Dans ce code, la fonction Lambda écrit une chaîne dans un fichier temporaire sous le dossier /tmp. La chaîne est également écrite dans une table DynamoDB. Le fichier temporaire est téléchargé vers un bucket S3.

-        Dans le volet de navigation gauche, sous DEPLOY [UNDEPLOYED CHANGES], cliquez sur Deploy.

 

-        Cliquez sur l'onglet Configuration.

-        Cliquez sur Environment variables.

-        Cliquez sur Edit.

-        Cliquez sur Add environment variable

-        Pour la nouvelle clé, tapez : DYNAMODB_TABLE_NAME, Pour Value, tapez : lab-table.

-        Cliquez sur Add environment variable.

Pour la nouvelle clé, tapez : S3_BUCKET_NAME, Pour la nouvelle valeur, collez le nom complet du bucket S3 que vous avez copié dans une étape précédente, lab-bucket-29022026

-         Vous avez créé et nommé ce bucket.

6. Cliquez sur Save

 

 

 

-        Cliquez sur l'onglet Test. 2. Pour l'action Test event, choisissez Create new event. 3. Pour Event name, saisissez : TestEvent.

 

-        Cliquez sur Test.

 

-        Naviguez vers la console Amazon DynamoDB.

-        Dans le volet de navigation de gauche, cliquez sur Explore items.

-        Dans le volet Tables, choisissez lab-table.

-        Dans le volet Items returned, examinez le nouvel élément. Cet élément a été écrit dans la table par la fonction Lambda, lab-function.

 

 

-        Naviguez jusqu'au nom du bucket S3 commençant par lab-bucket- dans la console Amazon S3.

-        Dans l'onglet Objects, cliquez sur le dossier test/.

 

-        Dans l'onglet Objects, examinez le fichier qui a été téléchargé par la fonction Lambda, lab-function.

 


Félicitations ! Vous avez terminé la section Pratique.

 


Autorisations pour une application sans serveurs dans AWS

Mbadi oum Demande de solution Une entreprise rencontre des difficultés pour s'assurer que l'intégration et la communication so...