Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Configurazione dell'accesso multi-account in Amazon DynamoDB
Creato da Shashi Dalmia (AWS), Esteban Serna Parra (AWS) e Imhoertha Ojior (AWS)
Riepilogo
Questo modello spiega i passaggi per configurare l'accesso tra account diversi ad Amazon DynamoDB utilizzando policy basate sulle risorse. Per i carichi di lavoro che utilizzano DynamoDB, sta diventando sempre più comune utilizzare strategie di isolamento del carico di lavoro
Le policy basate sulle risorse per DynamoDB semplificano notevolmente il livello di sicurezza per i carichi di lavoro tra account. Questo modello fornisce passaggi e codice di esempio per dimostrare come configurare AWS Lambda le funzioni in una sola Account AWS per scrivere dati su una tabella di database DynamoDB in un account diverso.
Prerequisiti e limitazioni
Prerequisiti
Due attivi. Account AWS Questo modello si riferisce a questi conti come Account A e Account B.
AWS Command Line Interface (AWS CLI) installato e configurato per accedere all'Account A, per creare la tabella DynamoDB. Gli altri passaggi di questo modello forniscono istruzioni per l'utilizzo delle console IAM, DynamoDB e Lambda. Se AWS CLI invece intendi utilizzarla, configurala per accedere a entrambi gli account.
Limitazioni
Alcuni Servizi AWS non sono disponibili in tutti Regioni AWS. Per la disponibilità per regione, vedi Servizi AWS per regione
. Per endpoint specifici, consulta la pagina Endpoint e quote del servizio e scegli il link relativo al servizio.
Architettura
Il diagramma seguente mostra un'architettura a account singolo. AWS Lambda, Amazon Elastic Compute Cloud (Amazon EC2) e DynamoDB si trovano tutti nello stesso account. In questo scenario, le funzioni Lambda e le EC2 istanze Amazon possono accedere a DynamoDB. Per concedere l'accesso alla tabella DynamoDB, puoi creare una policy basata sull'identità in IAM oppure puoi creare una policy basata sulle risorse in DynamoDB.

Il diagramma seguente mostra un'architettura multi-account. Se le risorse di una tabella Account AWS richiedono l'accesso a una tabella DynamoDB in un account diverso, è necessario impostare una policy basata sulle risorse in DynamoDB per concedere l'accesso richiesto. Ad esempio, nel diagramma seguente, l'accesso alla tabella DynamoDB nell'Account A viene concesso a una funzione Lambda nell'Account B utilizzando una politica basata sulle risorse.

Questo modello descrive l'accesso tra più account tra Lambda e DynamoDB. È possibile utilizzare passaggi simili per altri Servizi AWS se le autorizzazioni appropriate sono configurate su entrambi gli account. Ad esempio, se desideri fornire a una funzione Lambda l'accesso a un bucket Amazon Simple Storage Service (Amazon S3) nell'Account A, puoi creare una policy basata sulle risorse in Amazon S3 e aggiungere le autorizzazioni al ruolo di esecuzione Lambda nell'Account B.
Strumenti
Servizi AWS
Amazon DynamoDB è un servizio di database NoSQL interamente gestito che offre prestazioni elevate, prevedibili e scalabili.
AWS Identity and Access Management (IAM) ti aiuta a gestire in modo sicuro l'accesso alle tue risorse AWS controllando chi è autenticato e autorizzato a utilizzarle.
AWS Lambda è un servizio di calcolo che consente di eseguire il codice senza gestire i server o effettuarne il provisioning. Esegue il codice solo quando necessario e si ridimensiona automaticamente, quindi paghi solo per il tempo di elaborazione che utilizzi.
Codice
Questo modello include un codice di esempio nella sezione Informazioni aggiuntive per mostrare come configurare una funzione Lambda nell'Account B per scrivere nella tabella DynamoDB nell'Account A. Il codice viene fornito solo a scopo illustrativo e di test. Se stai implementando questo pattern in un ambiente di produzione, usa il codice come riferimento e personalizzalo per il tuo ambiente.
Best practice
Segui le best practice per le policy basate sulle risorse nella documentazione di DynamoDB.
Segui il principio del privilegio minimo e concedi le autorizzazioni minime necessarie per eseguire un'attività. Per ulteriori informazioni, consulta le best practice relative alla concessione dei privilegi minimi e alla sicurezza nella documentazione IAM.
Epiche
Attività | Descrizione | Competenze richieste |
---|---|---|
Crea una politica nell'Account B. | Questa policy IAM consente l'PutItemazione per una tabella DynamoDB nell'Account A.
| Informazioni generali su AWS |
Crea un ruolo nell'account B. | La funzione Lambda nell'Account B utilizza questo ruolo IAM per accedere alla tabella DynamoDB nell'Account A.
Per ulteriori informazioni sulla creazione di ruoli, consulta la documentazione IAM. | Informazioni generali su AWS |
Nota l'ARN del ruolo . |
| Informazioni generali su AWS |
Attività | Descrizione | Competenze richieste |
---|---|---|
Creazione di una tabella DynamoDB | Utilizzate il seguente AWS CLI comando per creare una tabella DynamoDB.
Sostituisci quanto segue in questo esempio di codice:
NotaSi specifica la configurazione della politica basata sulle risorse nell' Per ulteriori informazioni sulla creazione di tabelle, consulta la documentazione di DynamoDB. | Informazioni generali su AWS |
Attività | Descrizione | Competenze richieste |
---|---|---|
Crea una funzione Lambda per scrivere dati su DynamoDB. |
Per ulteriori informazioni sulla creazione di funzioni Lambda, consulta la documentazione Lambda. | Informazioni generali su AWS |
Attività | Descrizione | Competenze richieste |
---|---|---|
Eliminare risorse. | Per evitare di incorrere in costi associati alle risorse create in questo schema, procedi come segue per eliminare tali risorse:
| Informazioni generali su AWS |
Risoluzione dei problemi
Problema | Soluzione |
---|---|
Quando si crea la funzione Lambda, viene visualizzato un | Conferma di aver inserito correttamente l'ID Regione AWS e dell'account A. Questi fanno parte dell'ARN per la tabella DynamoDB. |
Risorse correlate
Guida introduttiva a DynamoDB (documentazione su DynamoDB)
Utilizzo di policy basate sulle risorse per DynamoDB (documentazione DynamoDB)
Logica di valutazione delle politiche tra account (documentazione IAM)
Riferimento agli elementi della policy IAM JSON (documentazione IAM)
Informazioni aggiuntive
Codice di esempio
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
Nota
Quando viene creata un'istanza del client DynamoDB, viene fornito l'ARN della tabella DynamoDB anziché il nome della tabella. Ciò è necessario affinché la funzione Lambda si connetta alla tabella DynamoDB corretta durante l'esecuzione.