Utilizzo del modello AWS Blockchain per Ethereum - AWS Blockchain Templates

AWS Blockchain Templates è stato interrotto il 30 aprile 2019. Non verranno effettuati ulteriori aggiornamenti a questo servizio o alla presente documentazione di supporto. Per la migliore esperienza di Managed Blockchain su AWS, ti consigliamo di utilizzare Amazon Managed Blockchain (AMB). Per ulteriori informazioni su come iniziare a usare Amazon Managed Blockchain, consulta il nostro workshop su Hyperledger Fabric o il nostro blog sull'implementazione di un nodo Ethereum. Se hai domande su AMB o hai bisogno di ulteriore assistenza, contatta o contatta AWS Support il team del tuo account. 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à.

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 Homestead e la documentazione di Solidity.

Link per l'avvio

Consulta Getting Started with AWS Blockchain Templates per i link da avviare AWS CloudFormation in regioni specifiche utilizzando 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

AWS Blockchain Templates utilizza contenitori Docker archiviati in Amazon ECR per distribuire software blockchain. Il modello AWS Blockchain per Ethereum offre due scelte per la piattaforma container:

  • ecs: specifica che Ethereum viene eseguito su un cluster Amazon ECS di istanze Amazon EC2.

  • docker-local: specifica che Ethereum viene eseguito su una singola istanza EC2.

Utilizzo della piattaforma container Amazon ECS

Con Amazon ECS, crei la tua rete Ethereum su un cluster ECS composto da più istanze EC2, con un Application Load Balancer e risorse correlate. Per ulteriori informazioni sull'uso della configurazione di Amazon ECS, consulta il Guida introduttiva a AWS Blockchain Templates tutorial.

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

AWS diagram showing VPC with public and private subnets, load balancers, and Ethereum nodes in ECS containers.

Utilizzo della piattaforma docker-local

In alternativa, puoi avviare contenitori 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 docker-local container platform:

Diagram of Ethereum network on AWS with VPC, EC2 instance, containers, and ECR registry.

Scelta di una rete Ethereum privata o pubblica

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 un ID di rete Ethereum compreso tra 1 e 4, i nodi Ethereum che crei vengono uniti alla rete pubblica Ethereum. 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, devono essere soddisfatti i requisiti minimi elencati di seguito. Il modello richiede i componenti AWS elencati per ciascuna delle seguenti categorie:

Prerequisiti per l'accesso alle risorse di Ethereum

Prerequisito Per la piattaforma ECS Per docker-local

Una coppia di chiavi Amazon EC2 che puoi usare 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 responsabile IAM (utente o gruppo) che dispone delle autorizzazioni per lavorare con tutti i servizi correlati.

Un profilo di istanza Amazon EC2 con autorizzazioni appropriate per consentire alle istanze EC2 di interagire con altri servizi. Per ulteriori informazioni, consulta To create an EC2 instance profile.

Un ruolo IAM con autorizzazioni per Amazon ECS per interagire con altri servizi. Per ulteriori informazioni, consulta 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 fonti esterne affidabili, come l'IP CIDR 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, consulta 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.

Esempi di autorizzazioni IAM per il profilo di 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, consulta Ruoli IAM nella Guida per l'utente di IAM. 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 associate al ruolo ECS, ti consigliamo di iniziare con la politica di autorizzazione di Amazon EC2. ContainerServiceRole Utilizza la procedura seguente per creare un ruolo e collegare questa policy delle autorizzazioni. Utilizza la console IAM per visualizzare la maggior parte delle autorizzazioni in questa politica. up-to-date

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 Ruoli > Crea 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.

    AWS console interface for creating a role, with Elastic Container Service selected as the use case.
  6. Per la politica di autorizzazione, lascia selezionata la politica predefinita (Amazon EC2 ContainerServiceRole) e scegli Avanti:Revisione.

  7. Per Nome del ruolo, inserisci un valore che ti aiuti a identificare il ruolo, ad esempio ECS. RoleForEthereum Per Role Description (Descrizione ruolo) immetti un breve riepilogo. Annota il nome del ruolo per utilizzarlo in seguito.

  8. Scegli Crea ruolo.

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

    AWSIAM console showing a role named "ECSRoleForEtherum" with its description.
  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.

    AWSIAM role summary page showing role ARN, description, and attached policies.

Connessione a Ethereum Resources

Dopo che lo stack principale creato con il modello mostra CREATE_COMPLETE, puoi connetterti alle risorse Ethereum utilizzando la console. AWS CloudFormation La modalità di connessione dipende dalla piattaforma dei container (ECS o docker-local) che hai scelto:

  • ECS: la scheda Output dello stack principale 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 Bastion di seguito.

  • docker-local: ti connetti utilizzando l'indirizzo IP dell'istanza EC2 che ospita i servizi Ethereum come elencato di seguito. Utilizza la console EC2 per trovare l'indirizzo ec2-IP-address dell'istanza creata dal modello.

    • EthStats—Usa l'indirizzo IP http://EC2

    • EthExplorer—Usa l'indirizzo IP http://EC2:8080

    • EthJsonRpc—Usa l'indirizzo IP http://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 dal gruppo di sicurezza EC2 che hai specificato utilizzando il modello AWS Blockchain 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 Bastion di seguito.

Connessioni proxy utilizzando un host Bastion

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

L'host bastion è un'istanza EC2. Assicurati che siano soddisfatti i seguenti requisiti:

  • L'istanza EC2 per l'host bastion si trova all'interno di una sottorete pubblica con Auto-Assign Public IP abilitato e che dispone di un gateway Internet.

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

  • L'host bastion è 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, l'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 da sorgenti all'interno del VPC.

Con un bastion host configurato, assicurati che i client che si connettono utilizzino l'host bastion come proxy. L'esempio seguente mostra la configurazione di una connessione proxy utilizzando Mac OS. Sostituisci BastionIP con l'indirizzo IP dell'istanza EC2 del bastion host e MySshKey.pem con il file key pair che hai copiato sull'host bastion.

Nella riga di comando, digita quanto segue:

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

Questo imposta il port forwarding per la porta 9001 sul computer locale verso l'host bastion.

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

Utilizzando FoxyProxy Standard con Chrome, seleziona Altri strumenti, Estensioni. In FoxyProxy Standard, seleziona Dettagli, Opzioni di estensione, Aggiungi nuovo proxy. 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 di Ethereum elencati nell'output del modello.