Utilizzo del modello AWS Blockchain per Ethereum - AWS Blockchain Templates

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

Utilizzo del modello AWS Blockchain per Ethereum

Ethereum è un framework blockchain che esegue contratti smart tramite Solidity, un linguaggio specifico di Ethereum. Homestead è la versione più recente di Ethereum. Per ulteriori informazioni, consulta la .Documentazione di Ethereum Homesteade laSoliditàdocumentazione.

Link per l'avvio

Consulta .Nozioni di base su AWS Blockchain Templatesper link da lanciareAWS CloudFormationin regioni specifiche che utilizzano i modelli Ethereum.

Opzioni Ethereum

Quando configuri la rete Ethereum utilizzando il modello, puoi effettuare delle scelte che determinano i requisiti successivi:

Scelta della piattaforma dei container

I modelli AWS Blockchain utilizzano i container Docker archiviati in Amazon ECR per distribuire il software blockchain. Il modello AWS Blockchain per Ethereum offre due opzioniPiattaforma dei container:

  • ecsSpecifica che Ethereum viene eseguito su un cluster Amazon ECS di istanze Amazon EC2.

  • docker-localeSpecifica che Ethereum viene eseguito su una singola istanza EC2.

Utilizzo della piattaforma dei container Amazon ECS

Con Amazon ECS, puoi creare la tua rete Ethereum su un cluster ECS costituito da più istanze EC2, con un Application Load Balancer e risorse correlate. Per ulteriori informazioni sull'utilizzo della configurazione Amazon ECS, consulta ilNozioni di base su AWS Blockchain Templatestutorial.

Il diagramma seguente mostra una rete Ethereum creata utilizzando il modello con l'opzione della piattaforma dei container ECS:

Utilizzo della piattaforma docker-local

In alternativa, puoi avviare i container Ethereum all'interno di una singola istanza Amazon EC2. Tutti i container vengono eseguiti su una singola istanza EC2. Questa è una configurazione semplificata.

Il diagramma seguente mostra una rete Ethereum creata utilizzando il modello con l'opzione della piattaforma dei container docker-local:

Scelta di una rete Ethereum pubblica o privata

La scelta di un valore per l'ID di rete Ethereum diverso da 1-4 crea nodi Ethereum privati che vengono eseguiti all'interno di una rete che hai definito, utilizzando i parametri della rete privata da te specificati.

Quando scegli unID rete EthereumDa 1 a 4, i nodi Ethereum creati sono uniti alla rete Ethereum pubblica. Puoi ignorare le impostazioni della rete privata e le relative impostazioni predefinite. Se scegli di unire i nodi Ethereum alla rete Ethereum pubblica, assicurati che i servizi appropriati nella tua rete siano accessibili da Internet.

Modifica degli account predefiniti e della frase mnemonica

Una frase mnemonica è un insieme casuale di parole che è possibile utilizzare per generare wallet Ethereum (cioè coppie di chiavi private/pubbliche) per gli account associati su qualsiasi rete. La frase mnemonica può essere utilizzata per l'accesso a Ether da parte degli account associati. Abbiamo creato un mnemonico predefinito associato agli account predefiniti utilizzati dal modello Ethereum.

avvertimento

Utilizzare gli account predefiniti e la frase mnemonica associata solo a scopo di test. Non inviare Ether reale utilizzando il set predefinito di account perché chiunque abbia accesso alla frase mnemonica può accedere o rubare Ether dagli account. Specificare invece account personalizzati per scopi di produzione. La frase mnemonica associata all'account predefinito è outdoor father modify clever trophy abandon vital feel portion grit evolve twist.

Prerequisiti

Quando configuri la tua rete Ethereum utilizzando il modello AWS Blockchain per Ethereum, è necessario che i requisiti minimi elencati di seguito siano soddisfatti. Il modello richiede i componenti AWS elencati per ciascuna delle seguenti categorie:

Prerequisiti per accedere alle risorse Ethereum

Prerequisito Per la piattaforma ECS Per docker-local

Una key pair Amazon EC2 che puoi utilizzare per accedere alle istanze EC2. La chiave deve esistere nella stessa regione del cluster ECS e delle altre risorse.

Un componente connesso a Internet, ad esempio un bastion host o un sistema di bilanciamento del carico connesso a Internet, con un indirizzo interno dal quale è consentito il traffico verso l'Application Load Balancer. Questa operazione è necessaria per la piattaforma ECS perché il modello crea un sistema di bilanciamento del carico interno per motivi di sicurezza. Questa operazione è necessaria con la piattaforma docker-local quando l'istanza EC2 si trova in una sottorete privata, che è l'opzione consigliata. Per informazioni sulla configurazione di un bastion host, consulta Per creare un host bastione.

✔ (con sottorete privata)

Prerequisiti IAM

Prerequisito Per la piattaforma ECS Per docker-local

Un'entità principale IAM (utente o gruppo) che dispone delle autorizzazioni per utilizzare tutti i servizi correlati.

Un profilo dell'istanza Amazon EC2 con autorizzazioni appropriate per le istanze EC2 necessarie per l'interazione con altri servizi. Per ulteriori informazioni, consultare . To create an EC2 instance profile .

Un ruolo IAM con autorizzazioni appropriate per Amazon ECS necessarie per l'interazione con altri servizi. Per ulteriori informazioni, consultare . Creazione del ruolo ECS e delle autorizzazioni .

Prerequisiti per i gruppi di sicurezza

Prerequisito Per la piattaforma ECS Per docker-local

Un gruppo di sicurezza per le istanze EC2 con i seguenti requisiti:

  • Le regole in uscita che consentono il traffico verso 0.0.0.0/0 (impostazione predefinita).

  • Una regola in entrata che consente tutto il traffico da se stessa (lo stesso gruppo di sicurezza).

  • Una regola in entrata che consente tutto il traffico proveniente dal gruppo di sicurezza per l'Application Load Balancer.

  • Regole in entrata che consentono HTTP (porta 80),EthStats(servito sulla porta 8080), JSON RPC su HTTP (porta 8545) e SSH (porta 22) da origini esterne attendibili, ad esempio CIDR IP del computer client.

Un gruppo di sicurezza per Application Load Balancer con i seguenti requisiti:

  • Una regola in entrata che consente tutto il traffico da se stessa (lo stesso gruppo di sicurezza).

  • Una regola in entrata che consente l'instradamento di tutto il traffico dal gruppo di sicurezza per le istanze EC2.

  • Le regole in uscita che consentono l'instradamento di tutto il traffico solo verso il gruppo di sicurezza per le istanze EC2. Per ulteriori informazioni, consultare . Creazione di gruppi di sicurezza .

  • Se si associa lo stesso gruppo di sicurezza a un bastion host, una regola in entrata che consente il traffico SSH (porta 22) da origini attendibili.

  • Se il bastion host o un altro componente connesso a Internet si trova in un gruppo di sicurezza diverso, una regola in entrata che consente il traffico da tale componente.

Prerequisiti per VPC

Prerequisito Per la piattaforma ECS Per docker-local

Un indirizzo IP elastico utilizzato per accedere ai servizi Ethereum.

Una sottorete per eseguire le istanze EC2. Ti consigliamo una sottorete privata.

Due sottoreti pubblicamente accessibili. Ogni sottorete deve trovarsi in zone di disponibilità diverse l'una dall'altra, una delle quali nella stessa zona di disponibilità della sottorete per le istanze EC2.

Esempio di autorizzazioni IAM per il profilo dell'istanza EC2 e il ruolo ECS

Quando utilizzi il modello, puoi specificare un ARN del profilo dell'istanza EC2 come uno dei parametri. Se utilizzi la piattaforma dei container ECS, puoi anche specificare un ARN del ruolo ECS. Le policy delle autorizzazioni collegate a questi ruoli consentono alle risorse AWS e alle istanze presenti nel cluster di interagire con altre risorse AWS. Per ulteriori informazioni, consultaRuoli IAMnellaIAM User Guide. Utilizza le istruzioni e le procedure delle policy riportate di seguito come punto di partenza per la creazione delle autorizzazioni.

Esempio di policy delle autorizzazioni per il profilo dell'istanza EC2

Le seguenti policy delle autorizzazioni mostrano le operazioni consentite per il profilo dell'istanza EC2 quando scegli la piattaforma dei container ECS. Le stesse istruzioni delle policy possono essere utilizzate in una piattaforma di container docker-local, in cui le chiavi di contesto ecs sono state rimosse per limitare l'accesso.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecs:CreateCluster", "ecs:DeregisterContainerInstance", "ecs:DiscoverPollEndpoint", "ecs:Poll", "ecs:RegisterContainerInstance", "ecs:StartTelemetrySession", "ecs:Submit*", "ecr:GetAuthorizationToken", "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", "logs:CreateLogStream", "logs:PutLogEvents", "dynamodb:BatchGetItem", "dynamodb:BatchWriteItem", "dynamodb:PutItem", "dynamodb:DeleteItem", "dynamodb:GetItem", "dynamodb:Scan", "dynamodb:Query", "dynamodb:UpdateItem" ], "Resource": "*" } ] }

Creazione del ruolo ECS e delle autorizzazioni

Per le autorizzazioni collegate al ruolo ECS, consigliamo di iniziare conAmazonEC2ContainerServiceRuoloPolicy di autorizzazione. Utilizza la procedura seguente per creare un ruolo e collegare questa policy delle autorizzazioni. Usa la console IAM per visualizzare di piùup-to-dateautorizzazioni in questa politica.

Per creare il ruolo IAM per Amazon ECS

  1. Aprire la console IAM all'indirizzo https://console.aws.amazon.com/iam/.

  2. Nel riquadro di navigazione, seleziona Roles (Ruoli), quindi Create role (Crea nuovo ruolo).

  3. In Select type of trusted entity (Seleziona tipo di entità attendibile), scegli AWS service (Servizio AWS).

  4. In Choose the service that will use this role (Scegli il servizio che utilizzerà questo ruolo), selezionare Elastic Container Service.

  5. In Select your use case (Seleziona il tuo caso d'uso), seleziona Elastic Container Service, Next:Permissions.

  6. PerPolicy delle autorizzazionilasciare la policy predefinita (AmazonEC2ContainerServiceRuolo) selezionato e scegliSuccessivo:Review.

  7. PerRole Name (Nome ruolo), inserisci un valore che consenta di identificare il ruolo, ad esempioECSRoleForEthereum. Per Role Description (Descrizione ruolo) immetti un breve riepilogo. Prendi nota del nome del ruolo per più tardi.

  8. Scegliere Create role (Crea ruolo).

  9. Dall'elenco, scegli il ruolo che hai appena creato. Se il tuo account ha più ruoli, puoi cercare il nome del ruolo.

  10. Copia il valore di Role ARN (ARN ruolo) e salvalo in modo che sia possibile copiarlo di nuovo. Hai bisogno di questo ARN quando crei la rete Ethereum.

Connessione alle risorse Ethereum

Dopo che lo stack radice creato con il modelloCREATE_COMPLETE, puoi connetterti alle risorse di Ethereum utilizzando ilAWS CloudFormationconsole. La modalità di connessione dipende dalla piattaforma dei container (ECS o docker-local) che hai scelto:

  • ECS—IlOutputLa scheda dello stack radice fornisce collegamenti ai servizi in esecuzione su Application Load Balancer. Per motivi di sicurezza, questi URL non sono accessibili direttamente. Per connetterti, puoi configurare e utilizzare un bastion host per le connessioni proxy. Per ulteriori informazioni, consulta Connessioni proxy utilizzando un host bastione di seguito.

  • docker-localeConnetterti utilizzando l'indirizzo IP dell'istanza EC2 che ospitano i servizi Ethereum elencati di seguito. Utilizza la console EC2 per trovare l'indirizzo ec2-IP-address dell'istanza creata dal modello.

    • EthStats—Usa http://Indirizzo IP EC2

    • EthExplorer—Usa http://Indirizzo IP EC2:8080

    • EthJsonRPC—Usa http://Indirizzo IP EC2:8545

    Se hai specificato una sottorete pubblica per Ethereum Network Subnet ID (ID sottorete rete Ethereum) (List of VPC Subnets to use (Elenco sottoreti VPC da utilizzare) all'interno del modello), puoi connetterti direttamente. Il client deve essere un'origine di traffico in entrata affidabile per SSH (porta 22) e per le porte elencate. Questo è determinato dalGruppo di sicurezza EC2che hai specificato utilizzando AWS Blockchain Template per Ethereum.

    Se hai specificato una sottorete privata, puoi impostare e utilizzare un bastion host per le connessioni proxy a tali indirizzi. Per ulteriori informazioni, consulta Connessioni proxy utilizzando un host bastione di seguito.

Connessioni proxy utilizzando un host bastione

Con alcune configurazioni, i servizi Ethereum potrebbero non essere disponibili pubblicamente. In questi casi, puoi collegarti alle risorse Ethereum attraversohost. Per ulteriori informazioni sui bastion host, consulta Architettura dei bastion host di Linux nella Guida rapida sui bastion host di Linux.

Il bastion host è un'istanza EC2. Inoltre, assicurarsi che siano soddisfatti i seguenti requisiti:

  • L'istanza EC2 per l'host bastion si trova all'interno di una subnet pubblica con l'assegnazione automatica dell'IP pubblico abilitato e che dispone di un gateway Internet.

  • L'host bastion ha la key pair che consente connessioni ssh.

  • L'host bastione è associato a un gruppo di sicurezza che consente il traffico SSH in entrata dai client che si connettono.

  • Il gruppo di sicurezza assegnato agli host Ethereum (ad esempio, Application Load Balancer se ECS è la piattaforma container o l'istanza EC2 host se docker-local è la piattaforma container) consente il traffico in entrata su tutte le porte provenienti da sorgenti all'interno del VPC.

Con un host bastion configurato, assicurati che i client che si connettono utilizzino l'host bastion come proxy. L'esempio seguente mostra come impostare una connessione proxy utilizzando Mac OS. Replace (Sostituisci)BastionIPcon l'indirizzo IP dell'istanza EC2 del bastion host eMySshChiave. PEMcon il file della key pair che hai copiato sul bastion host.

Nella riga di comando, digitare quanto segue:

ssh -i mySshKey.pem ec2-user@BastionIP -D 9001

Questo imposta il port forwarding per la porta 9001 sulla macchina locale all'host del bastion.

Quindi, configura il browser o il sistema per utilizzare il proxy SOCKS perlocalhost:9001. Ad esempio con Mac OS, seleziona System Preferences (Preferenze di sistema), Network (Rete), Advanced (Avanzate), seleziona proxy SOCKS e digita localhost:9001.

Utilizzo diFoxyProxyStandard con Chrome, selezionaAltri strumenti,Estensioni. UNDERFoxyProxystandard, selezionaDettagli,Opzioni di estensioni,Add new profile. Seleziona Manual Proxy Configuration (Configurazione proxy manuale). In Host or IP Address (Indirizzo IP o host), digita localhost e in Port (Porta), digita 9001. Seleziona SOCKS proxy?, Salva.

Ora dovresti essere in grado di connetterti agli indirizzi host Ethereum elencati nell'output del modello.