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.
Configuration de l'accès intercompte à Amazon DynamoDB
Créée par Shashi Dalmia (AWS), Esteban Serna Parra (AWS) et Imhoertha Ojior (AWS)
Récapitulatif
Ce modèle explique les étapes de configuration de l'accès entre comptes à Amazon DynamoDB à l'aide de politiques basées sur les ressources. Pour les charges de travail qui utilisent DynamoDB, il est de plus en plus courant d'utiliser des stratégies d'isolation des charges de travail
Les politiques basées sur les ressources pour DynamoDB simplifient considérablement le dispositif de sécurité pour les charges de travail entre comptes. Ce modèle fournit des étapes et un exemple de code pour montrer comment configurer les AWS Lambda fonctions d'un compte Compte AWS pour écrire des données dans une table de base de données DynamoDB d'un autre compte.
Conditions préalables et limitations
Prérequis
Deux actifs Comptes AWS. Dans ce schéma, ces comptes sont appelés compte A et compte B.
AWS Command Line Interface (AWS CLI) installé et configuré pour accéder au compte A, afin de créer la table DynamoDB. Les autres étapes de ce modèle fournissent des instructions d'utilisation des consoles IAM, DynamoDB et Lambda. Si vous prévoyez de l'utiliser à la AWS CLI place, configurez-le pour accéder aux deux comptes.
Limites
Certains Services AWS ne sont pas disponibles du tout Régions AWS. Pour connaître la disponibilité par région, voir Services AWS par région
. Pour des points de terminaison spécifiques, consultez la page Points de terminaison et quotas du service, puis choisissez le lien vers le service.
Architecture
Le schéma suivant montre une architecture à compte unique. AWS Lambda, Amazon Elastic Compute Cloud (Amazon EC2) et DynamoDB appartiennent tous au même compte. Dans ce scénario, les fonctions Lambda et les EC2 instances Amazon peuvent accéder à DynamoDB. Pour accorder l'accès à la table DynamoDB, vous pouvez créer une stratégie basée sur l'identité dans IAM ou une stratégie basée sur les ressources dans DynamoDB.

Le schéma suivant montre une architecture multi-comptes. Si les ressources d'un compte Compte AWS nécessitent l'accès à une table DynamoDB dans un autre compte, vous devez configurer une politique basée sur les ressources dans DynamoDB pour accorder l'accès requis. Par exemple, dans le schéma suivant, l'accès à la table DynamoDB du compte A est accordé à une fonction Lambda du compte B à l'aide d'une politique basée sur les ressources.

Ce modèle décrit l'accès entre comptes entre Lambda et DynamoDB. Vous pouvez suivre des étapes similaires pour les autres comptes Services AWS si les autorisations appropriées sont configurées sur les deux comptes. Par exemple, si vous souhaitez fournir à une fonction Lambda un accès à un bucket Amazon Simple Storage Service (Amazon S3) dans le compte A, vous pouvez créer une politique basée sur les ressources dans Amazon S3 et ajouter les autorisations au rôle d'exécution Lambda dans le compte B.
Outils
Services AWS
Amazon DynamoDB est un service de base de données NoSQL entièrement géré, offrant des performances rapides, prévisibles et évolutives.
AWS Identity and Access Management (IAM) vous aide à gérer en toute sécurité l'accès à vos ressources AWS 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.
Code
Ce modèle inclut un exemple de code dans la section Informations supplémentaires pour montrer comment configurer une fonction Lambda dans le compte B pour écrire dans la table DynamoDB du compte A. Le code est fourni uniquement à des fins d'illustration et de test. Si vous implémentez ce modèle dans un environnement de production, utilisez le code comme référence et personnalisez-le pour votre propre environnement.
Bonnes pratiques
Suivez les meilleures pratiques relatives aux politiques basées sur les ressources dans la documentation DynamoDB.
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 |
---|---|---|
Créez une politique dans le compte B. | Cette politique IAM autorise l'PutItemaction pour une table DynamoDB dans le compte A.
| AWS général |
Créez un rôle dans le compte B. | La fonction Lambda du compte B utilise ce rôle IAM pour accéder à la table DynamoDB du compte A.
Pour plus d'informations sur la création de rôles, consultez la documentation IAM. | AWS général |
Notez l'ARN du rôle. |
| AWS général |
Tâche | Description | Compétences requises |
---|---|---|
Créez une table DynamoDB. | Utilisez la AWS CLI commande suivante pour créer une table DynamoDB.
Remplacez le code suivant dans cet exemple de code :
NoteVous spécifiez la configuration de la politique basée sur les ressources dans l' Pour plus d'informations sur la création de tables, consultez la documentation DynamoDB. | AWS général |
Tâche | Description | Compétences requises |
---|---|---|
Créez une fonction Lambda pour écrire des données dans DynamoDB. |
Pour plus d'informations sur la création de fonctions Lambda, consultez la documentation Lambda. | AWS général |
Tâche | Description | Compétences requises |
---|---|---|
Supprimez des ressources. | Pour éviter les coûts associés aux ressources créées selon ce modèle, procédez comme suit pour supprimer ces ressources :
| AWS général |
Résolution des problèmes
Problème | Solution |
---|---|
Lors de la création de la fonction Lambda, vous recevez un | Vérifiez que vous avez correctement saisi le Région AWS et l'ID du compte A. Ils font partie de l'ARN de la table DynamoDB. |
Ressources connexes
Démarrage avec DynamoDB (documentation DynamoDB)
Utilisation de politiques basées sur les ressources pour DynamoDB (documentation DynamoDB)
Création de politiques IAM (documentation IAM)
Logique d'évaluation des politiques entre comptes (documentation IAM)
Référence des éléments de politique JSON IAM (documentation IAM)
Informations supplémentaires
Exemple de code
import boto3 from datetime import datetime dynamodb_client = boto3.client('dynamodb') def lambda_handler(event, context): now = datetime.now().isoformat() data = dynamodb_client.put_item(TableName='arn:aws:dynamodb:<Region>:<Account-A-ID>:table/Table-Account-A', Item={"category": {"S": "Fruit"},"item": {"S": "Apple"},"time": {"S": now}}) return data
Note
Lorsque le client DynamoDB est instancié, l'ARN de la table DynamoDB est fourni à la place du nom de la table. Cela est nécessaire pour que la fonction Lambda se connecte à la bonne table DynamoDB lors de son exécution.