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à.
Accesso a DAX più AWS account
Immagina di avere un cluster DynamoDB Accelerator DAX () in esecuzione in AWS un account (account A) e che DAX il cluster debba essere accessibile da un'istanza Amazon Elastic Compute Cloud (EC2Amazon) in un AWS altro account (account B). In questo tutorial, esegui questa operazione avviando un'EC2istanza nell'account B con un IAM ruolo dell'account B. Quindi utilizzi le credenziali di sicurezza temporanee dell'EC2istanza per assumere un IAM ruolo dall'account A. Infine, utilizzi le credenziali di sicurezza temporanee derivanti dall'assunzione del IAM ruolo nell'account A per effettuare chiamate alle applicazioni tramite una connessione VPC peering Amazon al DAX cluster nell'account A. Per eseguire queste attività è necessario l'accesso amministrativo in entrambi gli account. AWS
Importante
Non è possibile fare in modo che un DAX cluster acceda a una tabella DynamoDB da un account diverso.
Argomenti
Configurazione di IAM
-
Crea un file di testo denominato
AssumeDaxRoleTrust.json
con il seguente contenuto, che EC2 consenta ad Amazon di lavorare per tuo conto.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
-
Nell'account B, crea un ruolo che Amazon EC2 può utilizzare per 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.json
con il seguente contenuto, che consenta al codice in esecuzione sull'EC2istanza dell'account B di assumere un IAM ruolo nell'account A. SostituisciloaccountA
con l'ID effettivo dell'account A.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::
accountA
:role/DaxCrossAccountRole" } ] } -
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.json
con il contenuto seguente che consente all'account B di assumere un ruolo dell'account A. SostituisciaccountB
con l'ID effettivo dell'account B.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
accountB
:role/AssumeDaxRole" }, "Action": "sts:AssumeRole" } ] } -
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.json
che consente l'accesso al cluster DAX. Sostituiscilodax-cluster-arn
con l'Amazon Resource Name (ARN) corretto del tuo DAX cluster.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "dax:GetItem", "dax:BatchGetItem", "dax:Query", "dax:Scan", "dax:PutItem", "dax:UpdateItem", "dax:DeleteItem", "dax:BatchWriteItem", "dax:ConditionCheckItem" ], "Resource": "
dax-cluster-arn
" } ] } -
Nell'account A, aggiungi la policy al ruolo.
aws iam put-role-policy \ --role-name DaxCrossAccountRole \ --policy-name DaxCrossAccountPolicy \ --policy-document file://DaxCrossAccountPolicy.json
Configura un VPC
-
Individua il gruppo di subnet del cluster DAX dell'account A. Sostituisci
cluster-name
con il nome del DAX cluster a cui deve accedere l'account B.aws dax describe-clusters \ --cluster-name
cluster-name
--query 'Clusters[0].SubnetGroup' -
Usandolo
subnet-group
, trova quello del clusterVPC.aws dax describe-subnet-groups \ --subnet-group-name
subnet-group
\ --query 'SubnetGroups[0].VpcId' -
vpc-id
Usandolo, trova VPC iCIDR.aws ec2 describe-vpcs \ --vpc
vpc-id
\ --query 'Vpcs[0].CidrBlock' -
Dall'account B, crea un VPC utilizzando un account diverso e non sovrapposto CIDR rispetto a quello trovato nel passaggio precedente. Quindi, crea almeno una subnet. È possibile utilizzare la procedura guidata VPC di creazione in o in. AWS Management Console AWS CLI
-
Dall'account B, richiedi una connessione peering all'account A VPC come descritto in Creazione e accettazione di una connessione VPC peering. Dall'account A, accetta la connessione.
-
Dall'account B, trova la nuova tabella VPC di routing. Sostituisci
vpc-id
con l'ID VPC che hai 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 all'account A CIDR alla connessione VPC peering. Ricordati di sostituirli
user input placeholder
con i valori corretti per i tuoi account.aws ec2 create-route \ --route-table-id
accountB-route-table-id
\ --destination-cidraccountA-vpc-cidr
\ --vpc-peering-connection-idpeering-connection-id
-
Dall'account A, trova la tabella di routing del DAX cluster utilizzando quella
vpc-id
che hai trovato 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 all'account B CIDR alla connessione VPC peering. Sostituiscili
user input placeholder
con i valori corretti per i tuoi account.aws ec2 create-route \ --route-table-id
accountA-route-table-id
\ --destination-cidraccountB-vpc-cidr
\ --vpc-peering-connection-idpeering-connection-id
-
Dall'account B, avvia un'EC2istanza nell'account VPC che hai creato in precedenza. Assegnarle il nome
AssumeDaxInstanceProfile
. È possibile utilizzare la procedura guidata di avvio in AWS Management Console o in. AWS CLI Prendi nota del gruppo di sicurezza dell'istanza. -
Dall'account A, individua il gruppo di sicurezza utilizzato dal cluster DAX. Ricordati di sostituirlo
cluster-name
con il nome del tuo DAX cluster.aws dax describe-clusters \ --cluster-name
cluster-name
\ --query 'Clusters[0].SecurityGroups[0].SecurityGroupIdentifier' -
Aggiorna il gruppo di sicurezza del DAX cluster per consentire il traffico in entrata dal gruppo di sicurezza dell'EC2istanza che hai creato nell'account B. Ricorda di sostituirlo
user input placeholders
con i valori corretti per i tuoi account.aws ec2 authorize-security-group-ingress \ --group-id
accountA-security-group-id
\ --protocol tcp \ --port 8111 \ --source-groupaccountB-security-group-id
\ --group-owneraccountB-id
A questo punto, un'applicazione sull'EC2istanza dell'account B è in grado di utilizzare il profilo dell'istanza per assumere il arn:aws:iam::
ruolo e utilizzare il DAX cluster.accountA-id
:role/DaxCrossAccountRole
Modifica il DAX client per consentire l'accesso a più account
Nota
AWS Security Token Service (AWS STS) le credenziali sono credenziali 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.