Verwenden der AWS Blockchain-Vorlage für Ethereum - AWS Blockchain-Vorlagen

AWS Blockchain Templates wurde am 30. April 2019 eingestellt. Es werden keine weiteren Aktualisierungen an diesem Service oder dieser unterstützenden Dokumentation vorgenommen. Für ein optimales Managed Blockchain-Erlebnis in empfehlen AWSwir die Verwendung von Amazon Managed Blockchain (AMB). Weitere Informationen zu den ersten Schritten mit Amazon Managed Blockchain finden Sie in unserem Workshop zu Hyperledger Fabric oder in unserem Blog zur Bereitstellung eines Ethereum-Knotens. Wenn Sie Fragen zu AMB haben oder weitere Unterstützung benötigen, wenden AWS Support Sie sich an oder Ihr AWS Kontoteam.

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Verwenden der AWS Blockchain-Vorlage für Ethereum

Ethereum ist ein Blockchain-Framework, das intelligente Verträge mit Solidity, einer Ethereum-spezifischen Sprache, ausführt. Homestead ist die neueste Version von Ethereum. Weitere Informationen finden Sie in der Ethereum-Homestead-Dokumentation und in der Solidity-Dokumentation.

Links für den Start

Unter Erste Schritte mit AWS Blockchain-Vorlagen finden Sie Links zum Starten AWS CloudFormation in bestimmten Regionen mithilfe der Ethereum-Vorlagen.

Ethereum-Optionen

Wenn Sie das Ethereum-Netzwerk mithilfe der Vorlage konfigurieren, treffen Sie Entscheidungen, die die nachfolgenden Anforderungen bestimmen:

Auswahl der Container-Plattform

AWS Blockchain Templates verwenden Docker-Container, die in Amazon ECR gespeichert sind, um Blockchain-Software bereitzustellen. Die AWS Blockchain-Vorlage für Ethereum bietet zwei Optionen für die Container-Plattform :

  • ecs – Gibt an, dass Ethereum auf einem Amazon-ECS-Cluster von Amazon EC2 ausgeführt wird.

  • docker-local – Gibt an, dass Ethereum auf einer einzelnen EC2-Instance ausgeführt wird.

Verwenden der Amazon-ECS-Container-Plattform

Mit Amazon ECS erstellen Sie Ihr Ethereum-Netzwerk auf einem ECS-Cluster, der aus mehreren EC2-Instances mit einem Application Load Balancer und zugehörigen Ressourcen besteht. Weitere Informationen zur Verwendung der Amazon-ECS-Konfiguration finden Sie im Erste Schritte mit AWS Blockchain-VorlagenTutorial.

Das folgende Diagramm zeigt ein Ethereum-Netzwerk, das mit der -Vorlage mit der ECS-Container-Plattformoption erstellt wurde:

Verwendung der Docker-Local-Plattform

Alternativ können Sie Ethereum-Container innerhalb einer einzigen Amazon EC2 starten. Alle Container werden auf einer einzelnen EC2-Instance ausgeführt. Dies ist eine vereinfachte Einrichtung.

Das folgende Diagramm zeigt ein Ethereum-Netzwerk, das mit der Vorlage mit der Docker-lokalen Container-Plattformoption erstellt wurde:

Auswählen eines privaten oder öffentlichen Ethereum-Netzwerks

Wenn Sie einen anderen Ethereum-Netzwerk-ID-Wert als 1-4 wählen, werden private Ethereum-Knoten erstellt, die innerhalb eines von Ihnen definierten Netzwerks unter Verwendung der von Ihnen angegebenen privaten Netzwerkparameter ausgeführt werden.

Wenn Sie eine Ethereum-Netzwerk-ID zwischen 1 und 4 auswählen, werden die von Ihnen erstellten Ethereum-Knoten mit dem öffentlichen Ethereum-Netzwerk verbunden. Sie können private Netzwerkeinstellungen und deren Standardeinstellungen ignorieren. Wenn Sie sich dafür entscheiden, Ethereum-Knoten mit dem öffentlichen Ethereum-Netzwerk zu verbinden, stellen Sie sicher, dass die entsprechenden Dienste in Ihrem Netzwerk über das Internet zugänglich sind.

Ändern der Standardkonten und der mnemonischen Phrase

Eine mnemonische Phrase ist eine zufällige Liste von Wörtern, die Sie verwenden können, um Ethereum-Wallets (d. h. private/öffentliche Schlüsselpaare) für zugehörige Konten in jedem Netzwerk zu generieren. Die mnemonische Phrase kann verwendet werden, um auf Ether für verknüpfte Konten zuzugreifen. Wir haben eine Standard-Mnemonik erstellt, die den Standardkonten zugeordnet ist, die von der Ethereum-Vorlage verwendet werden.

Warnung

Verwenden Sie die Standardkonten und die zugehörige mnemonische Phrase nur zu Testzwecken. Senden Sie keinen echten Ether mit dem Standardkontensatz, da jeder Benutzer mit Zugriff auf die mnemonische Phrase auf Ether zugreifen oder aus den Konten stehlen kann. Geben Sie stattdessen benutzerdefinierte Konten für Produktionszwecke an. Die dem Standardkonto zugeordnete mnemonische Phrase lautet outdoor father modify clever trophy abandon vital feel portion grit evolve twist.

Voraussetzungen

Wenn Sie Ihr Ethereum-Netzwerk mit der AWS Blockchain Template for Ethereum einrichten, müssen die unten aufgeführten Mindestanforderungen erfüllt sein. Die Vorlage benötigt die für jede der folgenden Kategorien aufgeführten AWS-Komponenten:

Voraussetzungen für den Zugriff auf Ethereum-Ressourcen

Voraussetzung Für ECS-Plattform Für Docker-Local

Ein Amazon EC2-Schlüsselpaar, mit dem Sie auf EC2-Instances zugreifen können. Der Schlüssel muss sich in derselben Region wie der ECS-Cluster und die anderen Ressourcen befinden.

Eine mit dem Internet verbundene Komponente, z. B. ein Bastion-Host oder ein mit dem Internet verbundener Load Balancer, mit einer internen Adresse, von der aus Datenverkehr in den Application Load Balancer zugelassen wird. Dies ist bei der ECS-Plattform erforderlich, da die Vorlage aus Sicherheitsgründen einen internen Load Balancer erstellt. Dies ist bei der Docker-Local-Plattform erforderlich, wenn sich die EC2-Instance in einem privaten Subnetz befindet, was wir empfehlen. Weitere Informationen zum Konfigurieren eines Bastion-Hosts finden Sie unter Erstellen eines Bastion-Host.

✔ (mit privatem Subnetz)

Voraussetzungen für IAM

Voraussetzung Für ECS-Plattform Für Docker-Local

Ein IAM-Prinzipal (Benutzer oder Gruppe), der über Berechtigungen zum Arbeiten mit allen verwandten -Services verfügt.

Ein Amazon EC2-Instance-Profil mit entsprechenden Berechtigungen für EC2-Instances zur Interaktion mit anderen -Services. Weitere Informationen finden Sie unter To create an EC2 instance profile.

Eine IAM-Rolle mit Berechtigungen für Amazon ECS zur Interaktion mit anderen -Services. Weitere Informationen finden Sie unter Erstellen der ECS-Rolle und Berechtigungen.

Sicherheitsgruppen-Voraussetzungen

Voraussetzung Für ECS-Plattform Für Docker-Local

Eine Sicherheitsgruppe für EC2-Instances mit den folgenden Voraussetzungen:

  • Die Regeln für ausgehenden Datenverkehr, die erlauben, dass der Datenverkehr 0.0.0.0/0 (Standard).

  • Eine Regel für eingehenden Datenverkehr, die den gesamten Datenverkehr von sich aus (von derselben Sicherheitsgruppe) zulässt.

  • Eine Regel für eingehenden Datenverkehr, die den gesamten Datenverkehr von der Sicherheitsgruppe für den Application Load Balancer zulässt.

  • Regeln für eingehenden Datenverkehr, die HTTP (Port 80), EthStats (über Port 8080), JSON RPC über HTTP (Port 8545) und SSH (Port 22) aus vertrauenswürdigen externen Quellen zulassen, z. B. das IP CIDR Ihres Client-Computers.

Eine Sicherheitsgruppe für den Application Load Balancer mit den folgenden Voraussetzungen:

  • Eine Regel für eingehenden Datenverkehr, die den gesamten Datenverkehr von sich aus (von derselben Sicherheitsgruppe) zulässt.

  • Eine Regel für eingehenden Datenverkehr, die sämtlichen Datenverkehr von der Sicherheitsgruppe für EC2-Instances zulässt.

  • Regel für ausgehenden Datenverkehr, die den gesamten Datenverkehr nur an die Sicherheitsgruppe für EC2-Instances zulassen. Weitere Informationen finden Sie unter Erstellen von Sicherheitsgruppen.

  • Wenn dieselbe Sicherheitsgruppe einem Bastion-Host zugeordnet wird, eine Regel für eingehenden Datenverkehr, die SSH-Datenverkehr (Port 22) von vertrauenswürdigen Quellen zulässt.

  • Wenn der Bastion-Host oder eine andere mit dem Internet verbundene Komponente zu einer anderen Sicherheitsgruppe gehört, eine Regel für eingehenden Datenverkehr, die den Datenverkehr von dieser Komponente zulässt.

VPC-Voraussetzungen

Voraussetzung Für ECS-Plattform Für Docker-Local

Eine Elastic IP-Adresse, die für den Zugriff auf Ethereum-Services verwendet wird.

Ein Subnetz für die Ausführung von EC2-Instances. Wir empfehlen Ihnen dringend, ein privates Subnetz zu verwenden.

Zwei öffentlich zugängliche Subnetze. Jedes Subnetz muss sich in unterschiedlichen Availability Zones befinden, wobei eines in derselben Availability Zone wie das Subnetz für EC2-Instances vorhanden sein muss.

Beispiel für IAM-Berechtigungen für das EC2-Instance-Profil und die ECS-Rolle

Sie geben bei Verwendung der Vorlage einen ARN für das EC2-Instance-Profil als einen der Parameter an. Wenn Sie die ECS-Container-Plattform verwenden, geben Sie zusätzlich einen ARN für die ECS-Rolle an. Die diesen Rollen zugeordneten Berechtigungsrichtlinien gestatten den AWS-Ressourcen und Instances in Ihrem Cluster, mit anderen AWS-Ressourcen zu interagieren. Weitere Informationen finden Sie unter IAM-Rollen im IAM-Benutzerhandbuch. Verwenden Sie die folgenden Richtlinienanweisungen und Verfahren als Basis für die Erstellung von Berechtigungen.

Beispiel für Berechtigungsrichtlinie für das EC2-Instance-Profil

Die folgende Berechtigungsrichtlinie zeigt die zulässigen Aktionen für das EC2-Instance-Profil, wenn Sie die ECS-Container-Plattform wählen. Dieselben Richtlinienanweisungen können auf einer Docker-Local-Container-Plattform verwendet werden, wobei ecs-Kontextschlüssel entfernt werden, um den Zugriff einzuschränken.

{ "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": "*" } ] }

Erstellen der ECS-Rolle und Berechtigungen

Für die Berechtigungen, die der ECS-Rolle angefügt sind, empfehlen wir Ihnen, mit der AmazonEC2ContainerServiceRole-Berechtigungsrichtlinie zu beginnen. Führen Sie die folgenden Schritte aus, um eine Rolle zu erstellen und diese Berechtigungsrichtlinie anzufügen. Verwenden Sie die IAM-Konsole, um die meisten up-to-date Berechtigungen in dieser Richtlinie anzuzeigen.

So erstellen Sie die IAM-Rolle für Amazon ECS
  1. Öffnen Sie die IAM-Konsole unter https://console.aws.amazon.com/iam/.

  2. Wählen Sie im Navigationsbereich Roles (Rollen) und Create Role (Rolle erstellen) aus.

  3. Wählen Sie unter Select type of trusted entity (Typ der vertrauenswürdigen Entität auswählen) die Option AWS service (AWS-Service) aus.

  4. Wählen Sie für Choose the service that will use this role (Service auswählen, der diese Rolle verwendet) die Option Elastic Container Service aus.

  5. Wählen Sie unter Select your use case (Auswahl Ihres Anwendungsfalls) die Optionen Elastic Container Service (Elastischer Container-Service), Next:Permissions (Weiter: Berechtigungen) aus.

  6. Lassen Sie für Berechtigungsrichtlinie die Standardrichtlinie (AmazonEC2ContainerServiceRole) ausgewählt und wählen Sie Weiter: Überprüfen aus.

  7. Geben Sie für Rollenname einen Wert ein, der Ihnen hilft, die Rolle zu identifizieren, z. B. ECS RoleForEthereum. Geben Sie unter Role Description (Rollenbeschreibung) eine kurze Zusammenfassung ein. Notieren Sie sich den Rollennamen für später.

  8. Wählen Sie Rolle erstellen aus.

  9. Wählen Sie die gerade erstellte Rolle aus der Liste aus. Wenn Ihr Konto viele Rollen hat, können Sie nach dem Rollennamen suchen.

  10. Kopieren Sie den Wert Role ARN (Rollen-ARN) und speichern Sie ihn, sodass Sie ihn jederzeit erneut kopieren können. Sie benötigen diesen ARN beim Erstellen des Ethereum-Netzwerks.

Herstellen einer Verbindung mit Ethereum-Ressourcen

Nachdem der Root-Stack, den Sie mit der Vorlage erstellen, CREATE_COMPLETE anzeigt, können Sie über die AWS CloudFormationKonsole eine Verbindung zu Ethereum-Ressourcen herstellen. Die Art der Verbindung hängt von der Container-Plattform ab, die Sie wählen: ECS oder Docker-Local:

  • ECS – Die Registerkarte Ausgabe des Root-Stacks enthält Links zu Services, die auf dem Application Load Balancer ausgeführt werden. Auf diese URLs kann aus Sicherheitsgründen nicht direkt zugegriffen werden. Um eine Verbindung herzustellen, können Sie einen Bastion-Host für Proxy-Verbindungen zu ihnen einrichten und verwenden. Weitere Informationen hierzu finden Sie unter Proxy-Verbindungen mit einem Bastion-Host weiter unten.

  • docker-local – Sie stellen eine Verbindung mit der IP-Adresse der EC2-Instance her, die Ethereum-Services hostet, wie unten aufgeführt. Verwenden Sie die EC2-Konsole, um die ec2-IP-Adresse der Instance zu suchen, mit der die Vorlage erstellt wurde.

    • EthStats– Verwenden Sie http://ec2-IP-address

    • EthExplorer– Verwenden Sie http://ec2-IP-address :8080

    • EthJsonRpc– Verwenden Sie http://ec2-IP-address :8545

    Wenn Sie ein öffentliches Subnetz für die Ethereum Network Subnet ID (Ethereum-Netzwerk-Subnetz-ID) (Liste der in der Vorlage zu verwendenden VPC-Subnetze) angegeben haben, können Sie direkt eine Verbindung herstellen. Ihr Client muss eine vertrauenswürdige Quelle für eingehenden Datenverkehr für SSH (Port 22) sowie die aufgeführten Ports sein. Dies wird durch die EC2-Sicherheitsgruppe bestimmt, die Sie mithilfe der AWS Blockchain-Vorlage für Ethereum angegeben haben.

    Wenn Sie ein privates Subnetz angegeben haben, können Sie einen Bastion-Host für Proxy-Verbindungen diesen Adressen einrichten und verwenden. Weitere Informationen hierzu finden Sie unter Proxy-Verbindungen mit einem Bastion-Host weiter unten.

Proxy-Verbindungen mit einem Bastion-Host

Bei einigen Konfigurationen sind Ethereum-Services möglicherweise nicht öffentlich verfügbar. In diesen Fällen können Sie über einen Bastion-Host eine Verbindung zu Ethereum-Ressourcen herstellen. Weitere Informationen über Bastion-Hosts finden Sie unter Linux-Bastion-Host-Architektur im Linux Bastion-Host Quick Start-Leitfaden.

Der Bastion-Host ist eine EC2-Instance. Stellen Sie sicher, dass die folgenden Anforderungen erfüllt sind:

  • Die EC2-Instance für den Bastion-Host befindet sich in einem öffentlichen Subnetz mit aktivierter automatischer Zuweisung öffentlicher IP und einem Internet-Gateway.

  • Der Bastion-Host verfügt über das Schlüsselpaar, das SSH-Verbindungen zulässt.

  • Der Bastion-Host ist einer Sicherheitsgruppe zugeordnet, die eingehenden SSH-Datenverkehr von den Clients zulässt, die eine Verbindung herstellen.

  • Die den Ethereum-Hosts zugewiesene Sicherheitsgruppe (z. B. der Application Load Balancer, wenn ECS die Containerplattform ist, oder die Host-EC2-Instance, wenn docker-local die Containerplattform ist) lässt eingehenden Datenverkehr auf allen Ports von Quellen innerhalb der VPC zu.

Stellen Sie bei eingerichtetem Bastion-Host sicher, dass die Clients, die eine Verbindung herstellen, den Bastion-Host als Proxy verwenden. Das folgende Beispiel zeigt das Einrichten einer Proxy-Verbindung mit Mac OS. Ersetzen Sie BastionIP durch die IP-Adresse der Bastion-Host-EC2-Instance und MySshKey.pem durch die Schlüsselpaardatei, die Sie auf den Bastion-Host kopiert haben.

Geben Sie in der Befehlszeile Folgendes ein:

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

Dadurch wird die Port-Weiterleitung für Port 9001 auf dem lokalen Computer zum Bastion-Host eingerichtet.

Konfigurieren Sie als Nächstes Ihren Browser oder Ihr System für die Verwendung des SOCKS-Proxys für localhost:9001. Beispielsweise wählen Sie unter Mac OS System Preferences (Systemeinstellungen), Network (Netzwerk), Advanced (Erweitert), SOCKS proxy (SOCKS-Proxy) und geben dann localhost:9001 ein.

Wählen Sie unter Verwendung von FoxyProxy Standard mit Chrome Weitere Tools, Erweiterungen aus. Wählen Sie unter FoxyProxy Standard die Option Details , Erweiterungsoptionen , Neuen Proxy hinzufügen aus. Wählen Sie Manual Proxy Configuration (Manuelle Proxy-Konfiguration) aus. Geben Sie für Host or IP Address (Host- oder IP-Adresse) localhost und für Port 9001 ein. Wählen Sie SOCKS proxy?, Save (Speichern) aus.

Sie sollten jetzt in der Lage sein, eine Verbindung zu den Ethereum-Hostadressen herzustellen, die in der Vorlagenausgabe aufgeführt sind.