Accesso a DAX attraverso account AWS
Si immagini di avere un cluster DynamoDB Accelerator (DAX) in esecuzione in un account AWS (account A) e che il cluster DAX debba essere accessibile da un'istanza Amazon Elastic Compute Cloud (Amazon EC2) in un altro account AWS (account B). In questo tutorial puoi eseguire questa operazione avviando un'istanza EC2 nell'account B con un ruolo dall'account B. Quindi puoi utilizzare le credenziali di sicurezza temporanee dell'istanza EC2 per assumere un ruolo IAM dall'account A. Infine, utilizzi le credenziali di sicurezza temporanee per assumere il ruolo IAM nell'account A per effettuare chiamate all'applicazione tramite una connessione peering di Amazon VPC al cluster DAX nell'account A. Per eseguire queste attività è necessario l'accesso amministrativo in entrambi gli account AWS.
Importante
Non è possibile fare in modo che un cluster DAX acceda a una tabella DynamoDB da un account diverso.
Argomenti
Configurazione di IAM
-
Crea un file di testo denominato
AssumeDaxRoleTrust.jsoncon il seguente contenuto che consente a Amazon EC2 di lavorare per conto tuo. -
Nell'account B, creare un ruolo che Amazon EC2 può utilizzare durante l'avvio delle istanze.
aws iam create-role \ --role-name AssumeDaxRole \ --assume-role-policy-document file://AssumeDaxRoleTrust.json -
Crea un file di testo denominato
AssumeDaxRolePolicy.jsoncon il contenuto seguente che consente al codice in esecuzione sull'istanza EC2 nell'account B di assumere un ruolo IAM nell'account A. SostituisciaccountAcon l'ID effettivo dell'account A. -
Aggiungi la policy al ruolo appena creato.
aws iam put-role-policy \ --role-name AssumeDaxRole \ --policy-name AssumeDaxRolePolicy \ --policy-document file://AssumeDaxRolePolicy.json -
Crea un profilo di istanza per consentire alle istanze di utilizzare il ruolo.
aws iam create-instance-profile \ --instance-profile-name AssumeDaxInstanceProfile -
Associa il ruolo al profilo di istanza.
aws iam add-role-to-instance-profile \ --instance-profile-name AssumeDaxInstanceProfile \ --role-name AssumeDaxRole -
Crea un file di testo denominato
DaxCrossAccountRoleTrust.jsoncon il contenuto seguente che consente all'account B di assumere un ruolo dell'account A. SostituisciaccountBcon l'ID effettivo dell'account B. -
Nell'account A, crea il ruolo che l'account B può assumere.
aws iam create-role \ --role-name DaxCrossAccountRole \ --assume-role-policy-document file://DaxCrossAccountRoleTrust.json -
Crea un file di testo denominato
DaxCrossAccountPolicy.jsonche consente l'accesso al cluster DAX. Sostituiscidax-cluster-arncon l'Amazon Resource Name (ARN) corretto del tuo cluster DAX. -
Nell'account A, aggiungi la policy al ruolo.
aws iam put-role-policy \ --role-name DaxCrossAccountRole \ --policy-name DaxCrossAccountPolicy \ --policy-document file://DaxCrossAccountPolicy.json
Configurazione VPC
-
Individuare il gruppo di sottoreti del cluster DAX dell'account A. Sostituisci
cluster-namecon il nome del cluster DAX a cui l'account B deve accedere.aws dax describe-clusters \ --cluster-namecluster-name--query 'Clusters[0].SubnetGroup' -
Utilizzando il
subnet-group, individua il VPC del cluster.aws dax describe-subnet-groups \ --subnet-group-namesubnet-group\ --query 'SubnetGroups[0].VpcId' -
Utilizzando il
vpc-id, trova il CIDR del VPC.aws ec2 describe-vpcs \ --vpcvpc-id\ --query 'Vpcs[0].CidrBlock' -
Dall'account B, crea un VPC utilizzando un CIDR diverso, non sovrapposto rispetto a quello trovato nel passaggio precedente. Quindi, crea almeno una subnet. È possibile utilizzare la creazione guidata VPC nella AWS Management Console o l'AWS CLI.
-
Dall'account B, richiedi una connessione peering al VPC dell'account A come descritto in Creazione e accettazione di una connessione peering VPC. Dall'account A, accetta la connessione.
-
Dall'account B, trova la tabella di routing del nuovo VPC. Sostituisci
vpc-idcon l'ID del VPC creato nell'account B.aws ec2 describe-route-tables \ --filters 'Name=vpc-id,Values=vpc-id' \ --query 'RouteTables[0].RouteTableId' -
Aggiungi un percorso per inviare il traffico destinato al CIDR dell'account A alla connessione peering VPC. Ricordati di sostituire ogni
segnaposto di input utentecon i valori corretti per i tuoi account.aws ec2 create-route \ --route-table-idaccountB-route-table-id\ --destination-cidraccountA-vpc-cidr\ --vpc-peering-connection-idpeering-connection-id -
Dall'account A, individuare la tabella di routing del cluster DAX utilizzando il
vpc-idtrovato in precedenza.aws ec2 describe-route-tables \ --filters 'Name=vpc-id, Values=accountA-vpc-id' \ --query 'RouteTables[0].RouteTableId' -
Dall'account A, aggiungi un percorso per inviare il traffico destinato al CIDR dell'account B alla connessione peering VPC. Sostituisci ogni
segnaposto di input utentecon i valori corretti per gli account.aws ec2 create-route \ --route-table-idaccountA-route-table-id\ --destination-cidraccountB-vpc-cidr\ --vpc-peering-connection-idpeering-connection-id -
Dall'account B, avvia un'istanza EC2 nel VPC creato in precedenza. Assegnarle il nome
AssumeDaxInstanceProfile. Puoi utilizzare la procedura guidata di avvio nella AWS Management Console o l'AWS CLI. Prendi nota del gruppo di sicurezza dell'istanza. -
Dall'account A, individua il gruppo di sicurezza utilizzato dal cluster DAX. Ricorda di sostituire
cluster-namecon il nome del cluster DAX.aws dax describe-clusters \ --cluster-namecluster-name\ --query 'Clusters[0].SecurityGroups[0].SecurityGroupIdentifier' -
Aggiorna il gruppo di sicurezza del cluster DAX per consentire il traffico in ingresso dal gruppo di sicurezza dell'istanza EC2 creata nell'account B. Ricorda di sostituire i
segnaposto di input utentecon i valori corretti per gli account.aws ec2 authorize-security-group-ingress \ --group-idaccountA-security-group-id\ --protocol tcp \ --port 8111 \ --source-groupaccountB-security-group-id\ --group-owneraccountB-id
A questo punto, un'applicazione nell'istanza EC2 dell'account B è in grado di utilizzare il profilo dell'istanza per assumere il ruolo arn:aws:iam:: e utilizzare il cluster DAX.accountA-id:role/DaxCrossAccountRole
Modifica del client DAX per consentire l'accesso multi-account
Nota
Le credenziali AWS Security Token Service (AWS STS) sono temporanee. Alcuni client gestiscono automaticamente l'aggiornamento, mentre altri richiedono una logica aggiuntiva per aggiornare le credenziali. Consigliamo di seguire le indicazioni della documentazione appropriata.