Seleziona le tue preferenze relative ai cookie

Utilizziamo cookie essenziali e strumenti simili necessari per fornire il nostro sito e i nostri servizi. Utilizziamo i cookie prestazionali per raccogliere statistiche anonime in modo da poter capire come i clienti utilizzano il nostro sito e apportare miglioramenti. I cookie essenziali non possono essere disattivati, ma puoi fare clic su \"Personalizza\" o \"Rifiuta\" per rifiutare i cookie prestazionali.

Se sei d'accordo, AWS e le terze parti approvate utilizzeranno i cookie anche per fornire utili funzionalità del sito, ricordare le tue preferenze e visualizzare contenuti pertinenti, inclusa la pubblicità pertinente. Per continuare senza accettare questi cookie, fai clic su \"Continua\" o \"Rifiuta\". Per effettuare scelte più dettagliate o saperne di più, fai clic su \"Personalizza\".

Configurazione dell'accesso multi-account in Amazon DynamoDB - Prontuario AWS

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à.

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 per ridurre al minimo le minacce alla sicurezza e soddisfare i requisiti di conformità. L'implementazione di strategie di isolamento del carico di lavoro spesso richiede l'accesso tra account e regioni diverse alle risorse DynamoDB utilizzando policy basate sull'identità (IAM). AWS Identity and Access Management Ciò comporta l'impostazione delle autorizzazioni IAM e la creazione di una relazione di fiducia tra. Account AWS

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

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.

Utilizzo delle autorizzazioni IAM per accedere a una tabella DynamoDB nello stesso account.

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.

Utilizzo di una policy basata sulle risorse per accedere a una tabella DynamoDB in un account diverso.

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

Epiche

AttivitàDescrizioneCompetenze richieste

Crea una politica nell'Account B.

Questa policy IAM consente l'PutItemazione per una tabella DynamoDB nell'Account A.

  1. Accedi all'account B in. AWS Management Console

  2. Apri la console IAM.

  3. Nel riquadro di navigazione, seleziona Policy e quindi Crea policy.

  4. Nella pagina Specificare le autorizzazioni, per l'editor delle politiche, seleziona JSON.

  5. Immetti la seguente policy.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "Statement1", "Effect": "Allow", "Action": "dynamodb:PutItem", "Resource": "arn:aws:dynamodb:<Region>:<Account-A-ID>:table/Table-Account-A" } ] }
  6. Sostituisci <Region> e <Account-A-ID> con i tuoi valori, quindi scegli Avanti.

  7. Per Nome della politica, inserisci un nome univoco per la tua politica, ad esempioDynamoDB-PutItem-Policy.

  8. (Facoltativo) Aggiungi una descrizione della politica.

  9. Scegli Create Policy (Crea policy).

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.

  1. Apri la console IAM.

  2. Nel riquadro di navigazione, scegli Ruoli e quindi Crea ruolo.

  3. In Select trusted entity (Seleziona entità attendibile), scegli Servizio AWS.

  4. Nella sezione Caso d'uso, scegli Lambda.

  5. Scegli Successivo: autorizzazioni.

  6. Nella casella Politiche di filtro, inserisci DynamoDB.

  7. Nell'elenco delle politiche di DynamoDB, scegli. DynamoDB-PutItem-Policy

  8. Deseleziona la casella Politiche di filtro, quindi inserisci Lambda.

  9. Nell'elenco delle politiche Lambda, scegli AWSLambda Esegui.

  10. Scegli Avanti: assegna un nome, rivedi e crea.

  11. Per Nome ruolo, inserisci un nome univoco per il ruolo, ad esempio DynamoDB-PutItemAccess.

  12. (Facoltativo) Aggiungi una descrizione del ruolo.

  13. (Facoltativo) Aggiungi metadati al ruolo collegando i tag come coppie chiave-valore.

  14. Scegliere Crea ruolo.

Per ulteriori informazioni sulla creazione di ruoli, consulta la documentazione IAM.

Informazioni generali su AWS

Nota l'ARN del ruolo .

  1. Aprire la console IAM.

  2. Nel pannello di navigazione, selezionare Ruoli.

  3. Nella casella di ricerca, inserisciDynamoDB-PutItemAccess, quindi scegli il ruolo.

  4. Nella pagina di riepilogo del ruolo, copia l'Amazon Resource Name (ARN). Si utilizza l'ARN quando si configura la funzione Lambda.

Informazioni generali su AWS

Creare una policy e un ruolo IAM per la funzione Lambda nell'Account B

AttivitàDescrizioneCompetenze richieste

Crea una politica nell'Account B.

Questa policy IAM consente l'PutItemazione per una tabella DynamoDB nell'Account A.

  1. Accedi all'account B in. AWS Management Console

  2. Apri la console IAM.

  3. Nel riquadro di navigazione, seleziona Policy e quindi Crea policy.

  4. Nella pagina Specificare le autorizzazioni, per l'editor delle politiche, seleziona JSON.

  5. Immetti la seguente policy.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "Statement1", "Effect": "Allow", "Action": "dynamodb:PutItem", "Resource": "arn:aws:dynamodb:<Region>:<Account-A-ID>:table/Table-Account-A" } ] }
  6. Sostituisci <Region> e <Account-A-ID> con i tuoi valori, quindi scegli Avanti.

  7. Per Nome della politica, inserisci un nome univoco per la tua politica, ad esempioDynamoDB-PutItem-Policy.

  8. (Facoltativo) Aggiungi una descrizione della politica.

  9. Scegli Create Policy (Crea policy).

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.

  1. Apri la console IAM.

  2. Nel riquadro di navigazione, scegli Ruoli e quindi Crea ruolo.

  3. In Select trusted entity (Seleziona entità attendibile), scegli Servizio AWS.

  4. Nella sezione Caso d'uso, scegli Lambda.

  5. Scegli Successivo: autorizzazioni.

  6. Nella casella Politiche di filtro, inserisci DynamoDB.

  7. Nell'elenco delle politiche di DynamoDB, scegli. DynamoDB-PutItem-Policy

  8. Deseleziona la casella Politiche di filtro, quindi inserisci Lambda.

  9. Nell'elenco delle politiche Lambda, scegli AWSLambda Esegui.

  10. Scegli Avanti: assegna un nome, rivedi e crea.

  11. Per Nome ruolo, inserisci un nome univoco per il ruolo, ad esempio DynamoDB-PutItemAccess.

  12. (Facoltativo) Aggiungi una descrizione del ruolo.

  13. (Facoltativo) Aggiungi metadati al ruolo collegando i tag come coppie chiave-valore.

  14. Scegliere Crea ruolo.

Per ulteriori informazioni sulla creazione di ruoli, consulta la documentazione IAM.

Informazioni generali su AWS

Nota l'ARN del ruolo .

  1. Aprire la console IAM.

  2. Nel pannello di navigazione, selezionare Ruoli.

  3. Nella casella di ricerca, inserisciDynamoDB-PutItemAccess, quindi scegli il ruolo.

  4. Nella pagina di riepilogo del ruolo, copia l'Amazon Resource Name (ARN). Si utilizza l'ARN quando si configura la funzione Lambda.

Informazioni generali su AWS
AttivitàDescrizioneCompetenze richieste

Creazione di una tabella DynamoDB

Utilizzate il seguente AWS CLI comando per creare una tabella DynamoDB.

aws dynamodb create-table \ --table-name Table-Account-A \ --attribute-definitions \ AttributeName=category,AttributeType=S \ AttributeName=item,AttributeType=S \ --key-schema \ AttributeName=category,KeyType=HASH \ AttributeName=item,KeyType=RANGE \ --provisioned-throughput \ ReadCapacityUnits=5,WriteCapacityUnits=5 \ --resource-policy \ '{ "Version": "2012-10-17", "Statement": [ { "Sid": "Statement1", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::<Account-B-ID>:role/<Role-Name>" }, "Action": "dynamodb:PutItem", "Resource": "arn:aws:dynamodb:<Region>:<Account-A-ID>:table/Table-Account-A" } ] }'

Sostituisci quanto segue in questo esempio di codice:

  • <Account-B-ID>è l'ID dell'account B.

  • <Role-Name>è il nome del ruolo IAM che hai creato, ad esempioDynamoDB-PutItemAccess.

  • <Region>è il Regione AWS punto in cui si crea la tabella DynamoDB.

  • <Account-A-ID>è l'ID dell'account A.

Nota

Si specifica la configurazione della politica basata sulle risorse nell'create-tableistruzione utilizzando il flag. --resource-policy Questa politica si riferisce all'ARN per la tabella DynamoDB nell'account A.

Per ulteriori informazioni sulla creazione di tabelle, consulta la documentazione di DynamoDB.

Informazioni generali su AWS

Creare una tabella DynamoDB nell'account A

AttivitàDescrizioneCompetenze richieste

Creazione di una tabella DynamoDB

Utilizzate il seguente AWS CLI comando per creare una tabella DynamoDB.

aws dynamodb create-table \ --table-name Table-Account-A \ --attribute-definitions \ AttributeName=category,AttributeType=S \ AttributeName=item,AttributeType=S \ --key-schema \ AttributeName=category,KeyType=HASH \ AttributeName=item,KeyType=RANGE \ --provisioned-throughput \ ReadCapacityUnits=5,WriteCapacityUnits=5 \ --resource-policy \ '{ "Version": "2012-10-17", "Statement": [ { "Sid": "Statement1", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::<Account-B-ID>:role/<Role-Name>" }, "Action": "dynamodb:PutItem", "Resource": "arn:aws:dynamodb:<Region>:<Account-A-ID>:table/Table-Account-A" } ] }'

Sostituisci quanto segue in questo esempio di codice:

  • <Account-B-ID>è l'ID dell'account B.

  • <Role-Name>è il nome del ruolo IAM che hai creato, ad esempioDynamoDB-PutItemAccess.

  • <Region>è il Regione AWS punto in cui si crea la tabella DynamoDB.

  • <Account-A-ID>è l'ID dell'account A.

Nota

Si specifica la configurazione della politica basata sulle risorse nell'create-tableistruzione utilizzando il flag. --resource-policy Questa politica si riferisce all'ARN per la tabella DynamoDB nell'account A.

Per ulteriori informazioni sulla creazione di tabelle, consulta la documentazione di DynamoDB.

Informazioni generali su AWS
AttivitàDescrizioneCompetenze richieste

Crea una funzione Lambda per scrivere dati su DynamoDB.

  1. Accedi all'account B in. AWS Management Console

  2. Aprire la console Lambda.

  3. Nel riquadro di navigazione, scegli Funzioni, quindi scegli Crea funzione.

  4. Per Nome, immetti lambda_write_function.

  5. Per Runtime, scegli Python 3.8 o versione successiva.

  6. In Modifica il ruolo di esecuzione predefinito, scegli Usa un ruolo esistente.

  7. Per Ruolo esistente, scegli il ruolo IAM che hai creato, ad esempioDynamoDB-PutItemAccess.

  8. Scegli Crea funzione.

  9. Nella scheda Codice, incolla il codice di esempio fornito nella sezione Informazioni aggiuntive di questo modello. Sostituisci quanto segue in questo esempio di codice:

    • <Account-A-ID>è l'ID dell'account A.

    • <Region>è il Regione AWS luogo in cui è stata creata la tabella DynamoDB.

  10. Scegliere Deploy (Implementa).

  11. Scegli Test (Esegui test). Questo richiede di configurare un evento di test. Crea un nuovo evento con il tuo nome preferito, ad esempioMyTestEventForWrite, e quindi salva la configurazione.

  12. Scegliere Test di nuovo. Viene eseguita la funzione Lambda con il nome dell'evento fornito.

  13. Controlla l'output della funzione. Dovrebbe indicare che la funzione ha avuto accesso alla tabella DynamoDB nell'Account A ed è stata in grado di scrivervi dati.

Per ulteriori informazioni sulla creazione di funzioni Lambda, consulta la documentazione Lambda.

Informazioni generali su AWS

Creare una funzione Lambda nell'account B

AttivitàDescrizioneCompetenze richieste

Crea una funzione Lambda per scrivere dati su DynamoDB.

  1. Accedi all'account B in. AWS Management Console

  2. Aprire la console Lambda.

  3. Nel riquadro di navigazione, scegli Funzioni, quindi scegli Crea funzione.

  4. Per Nome, immetti lambda_write_function.

  5. Per Runtime, scegli Python 3.8 o versione successiva.

  6. In Modifica il ruolo di esecuzione predefinito, scegli Usa un ruolo esistente.

  7. Per Ruolo esistente, scegli il ruolo IAM che hai creato, ad esempioDynamoDB-PutItemAccess.

  8. Scegli Crea funzione.

  9. Nella scheda Codice, incolla il codice di esempio fornito nella sezione Informazioni aggiuntive di questo modello. Sostituisci quanto segue in questo esempio di codice:

    • <Account-A-ID>è l'ID dell'account A.

    • <Region>è il Regione AWS luogo in cui è stata creata la tabella DynamoDB.

  10. Scegliere Deploy (Implementa).

  11. Scegli Test (Esegui test). Questo richiede di configurare un evento di test. Crea un nuovo evento con il tuo nome preferito, ad esempioMyTestEventForWrite, e quindi salva la configurazione.

  12. Scegliere Test di nuovo. Viene eseguita la funzione Lambda con il nome dell'evento fornito.

  13. Controlla l'output della funzione. Dovrebbe indicare che la funzione ha avuto accesso alla tabella DynamoDB nell'Account A ed è stata in grado di scrivervi dati.

Per ulteriori informazioni sulla creazione di funzioni Lambda, consulta la documentazione Lambda.

Informazioni generali su AWS
AttivitàDescrizioneCompetenze richieste

Eliminare risorse.

Per evitare di incorrere in costi associati alle risorse create in questo schema, procedi come segue per eliminare tali risorse:

  1. Nell'Account B, elimina la funzione Lambda che hai creato per connetterti a DynamoDB. Per istruzioni, consulta la documentazione di Lambda.

  2. Nell'Account A, elimina la tabella DynamoDB che hai creato. Per istruzioni, consulta la documentazione di DynamoDB.

  3. Per le migliori pratiche di sicurezza, elimina la policy IAM (DynamoDB-PutItem-Policy) quando non è più necessaria. Per ulteriori informazioni, consulta la documentazione di IAM.

  4. Per le migliori pratiche di sicurezza, elimina IAM role (DynamoDB-PutItemAccess) quando non è più necessario. Per ulteriori informazioni, consulta la documentazione di IAM.

Informazioni generali su AWS

Eliminazione

AttivitàDescrizioneCompetenze richieste

Eliminare risorse.

Per evitare di incorrere in costi associati alle risorse create in questo schema, procedi come segue per eliminare tali risorse:

  1. Nell'Account B, elimina la funzione Lambda che hai creato per connetterti a DynamoDB. Per istruzioni, consulta la documentazione di Lambda.

  2. Nell'Account A, elimina la tabella DynamoDB che hai creato. Per istruzioni, consulta la documentazione di DynamoDB.

  3. Per le migliori pratiche di sicurezza, elimina la policy IAM (DynamoDB-PutItem-Policy) quando non è più necessaria. Per ulteriori informazioni, consulta la documentazione di IAM.

  4. Per le migliori pratiche di sicurezza, elimina IAM role (DynamoDB-PutItemAccess) quando non è più necessario. Per ulteriori informazioni, consulta la documentazione di IAM.

Informazioni generali su AWS

Risoluzione dei problemi

ProblemaSoluzione

Quando si crea la funzione Lambda, viene visualizzato un ResourceNotFoundException errore.

Conferma di aver inserito correttamente l'ID Regione AWS e dell'account A. Questi fanno parte dell'ARN per la tabella DynamoDB.

Risorse correlate

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.

PrivacyCondizioni del sitoPreferenze cookie
© 2025, Amazon Web Services, Inc. o società affiliate. Tutti i diritti riservati.