Utilisation du modèle AWS Blockchain pour Ethereum - Modèles d’AWS Blockchain

AWS Blockchain Templates a été abandonné le 30 avril 2019. Aucune autre mise à jour de ce service ou de cette documentation justificative ne sera apportée. Pour une expérience optimale de Managed Blockchain AWS, nous vous recommandons d'utiliser Amazon Managed Blockchain (AMB). Pour en savoir plus sur les premiers pas avec Amazon Managed Blockchain, consultez notre atelier sur Hyperledger Fabric ou notre blog sur le déploiement d'un nœud Ethereum. Si vous avez des questions sur AMB ou si vous avez besoin d'une assistance supplémentaire, contactez AWS Support l'équipe chargée de votre AWS compte.

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Utilisation du modèle AWS Blockchain pour Ethereum

Ethereum est un framework de blockchain qui exécute des contrats intelligents à l'aide de Solidity, un langage spécifique à Ethereum. Homestead est la version la plus récente d'Ethereum. Pour plus d'informations, consultez la documentation Ethereum Homestead et la documentation Solidity.

Liens pour le lancement

Consultez Getting Started with AWS Blockchain Templates pour obtenir des liens à lancer AWS CloudFormation dans des régions spécifiques à l'aide des modèles Ethereum.

Options Ethereum

Lorsque vous configurez le réseau Ethereum à l'aide du modèle, vous faites des choix qui déterminent les exigences suivantes :

Choix de la plateforme de conteneur

Les modèles AWS Blockchain Templates utilisent des conteneurs Docker stockés dans Amazon ECR pour déployer un logiciel de blockchain. Le modèle AWS Blockchain pour Ethereum propose deux options pour la plateforme de conteneurs :

  • ecs —Spécifie qu'Ethereum s'exécute sur un cluster Amazon ECS d'instances Amazon EC2.

  • docker-local —Spécifie qu'Ethereum s'exécute sur une seule instance EC2.

Utilisation de la plateforme de conteneurs Amazon ECS

Avec Amazon ECS, vous créez votre réseau Ethereum sur un cluster ECS composé de plusieurs instances EC2, avec un Application Load Balancer et les ressources associées. Pour plus d'informations sur l'utilisation de la configuration Amazon ECS, consultez le Commencer à utiliser les modèles AWS Blockchain didacticiel.

Le schéma suivant illustre un réseau Ethereum créé à l'aide du modèle avec l'option de plateforme de conteneur ECS :

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

Utilisation de la plateforme Docker-Local

Vous pouvez également lancer des conteneurs Ethereum au sein d'une seule instance Amazon EC2. Tous les conteneurs s'exécutent sur une seule instance EC2. Il s'agit d'une configuration simplifiée.

Le schéma suivant illustre un réseau Ethereum créé à l'aide du modèle avec l'option de plateforme de conteneur docker-local :

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

Choisir un réseau Ethereum privé ou public

Le choix d'une valeur d'ID réseau Ethereum autre que 1 à 4 crée des nœuds Ethereum privés qui s'exécutent dans un réseau que vous définissez, à l'aide de paramètres de réseau privé que vous spécifiez.

Lorsque vous choisissez un identifiant de réseau Ethereum compris entre 1 et 4, les nœuds Ethereum que vous créez sont joints au réseau public Ethereum. Vous pouvez ignorer les paramètres du réseau privé et leurs valeurs par défaut. Si vous choisissez de joindre des nœuds Ethereum au réseau Ethereum public, assurez-vous que les services appropriées de votre réseau sont accessibles via Internet.

Modification des comptes par défaut et de la phrase mnémonique

Une phrase mnémonique est un ensemble aléatoire de mots que vous pouvez utiliser pour générer des portefeuilles Ethereum (c'est-à-dire, des paires de clés privées/publiques) pour les comptes associés sur n'importe quel réseau. La phrase mnémonique peut être utilisée par les comptes associés pour accéder à Ether. Nous avons créé une phrase mnémonique par défaut associée aux comptes par défaut qu’utilise le modèle Ethereum.

Avertissement

Utilisez les comptes par défaut et la phrase mnémonique associée à des fins de test uniquement. N'envoyez pas de véritable ether à l'aide de l'ensemble de comptes par défaut, car quiconque ayant accès à la phrase mnémonique peut y accéder, ou le voler, à partir des comptes. Spécifiez plutôt des comptes personnalisés à des fins de production. La phrase mnémonique associée au compte par défaut est outdoor father modify clever trophy abandon vital feel portion grit evolve twist.

Prérequis

Lorsque vous configurez votre réseau Ethereum à l'aide du modèle AWS Blockchain pour Ethereum, les exigences minimales répertoriées ci-dessous doivent être satisfaites. Le modèle requiert les composants AWS répertoriés pour chacune des catégories suivantes :

Conditions préalables pour accéder aux ressources Ethereum

Prérequis Pour la plateforme ECS Pour Docker-Local

Une paire de clés Amazon EC2 que vous pouvez utiliser pour accéder aux instances EC2. Cette clé doit être dans la même région que le cluster ECS et autres ressources.

Composant accessible sur Internet, tel qu'un hôte bastion ou un équilibreur de charge accessible sur Internet, avec une adresse interne à partir de laquelle le trafic est autorisé dans l'équilibreur de charge d'application. Ceci est requis avec la plateforme ECS, car le modèle crée un équilibreur de charge interne pour des raisons de sécurité. Ceci est requis avec la plateforme docker-local lorsque l'instance EC2 se trouve dans un sous-réseau privé, ce que nous recommandons. Pour de plus amples informations sur la configuration d'un hôte bastion, consultez Création d'un hôte bastion.

✔ (avec sous-réseau privé)

Conditions préalables à l'IAM

Prérequis Pour la plateforme ECS Pour Docker-Local

Un principal IAM (utilisateur ou groupe) autorisé à utiliser tous les services associés.

Un profil d'instance Amazon EC2 avec les autorisations appropriées permettant aux instances EC2 d'interagir avec d'autres services. Pour plus d’informations, consultez To create an EC2 instance profile.

Rôle IAM avec des autorisations permettant à Amazon ECS d'interagir avec d'autres services. Pour plus d’informations, consultez Création des rôles et autorisations ECS.

Prérequis du groupe de sécurité

Prérequis Pour la plateforme ECS Pour Docker-Local

Un groupe de sécurité pour les instances EC2, avec les conditions requises suivantes :

  • Règles sortantes autorisant le trafic vers 0.0.0.0/0 (par défaut).

  • Règle entrante qui autorise tout le trafic en provenance d'elle-même (le même groupe de sécurité).

  • Règle entrante qui autorise tout le trafic en provenance du groupe de sécurité pour l'équilibreur de charge d'application.

  • Règles entrantes qui autorisent le protocole HTTP (port 80) EthStats (servi sur le port 8080), le protocole JSON RPC sur HTTP (port 8545) et le protocole SSH (port 22) à partir de sources externes fiables, telles que le CIDR IP de votre ordinateur client.

Un groupe de sécurité de l'équilibreur de charge d'application, avec les conditions requises suivantes :

  • Règle entrante qui autorise tout le trafic en provenance d'elle-même (le même groupe de sécurité).

  • Règle entrante autorisant tout le trafic depuis le groupe de sécurité pour les instances EC2.

  • Les règles sortantes qui autorisent tout le trafic uniquement vers le groupe de sécurité pour les instances EC2. Pour plus d’informations, consultez Créer des groupes de sécurité.

  • Si vous associez ce même groupe de sécurité à un hôte bastion, règle entrante qui autorise le trafic SSH (port 22) à partir de sources approuvées.

  • Si l'hôte bastion ou un autre composant accessible sur Internet se trouve dans un groupe de sécurité différent, règle entrante qui autorise le trafic à partir de ce composant.

Prérequis pour VPC

Prérequis Pour la plateforme ECS Pour Docker-Local

Une adresse IP élastique, utilisée pour accéder aux services Ethereum.

Un sous-réseau pour exécuter des instances EC2. Un sous-réseau privé est vivement recommandé.

Deux sous-réseaux publiquement accessibles. Chaque sous-réseau doit se trouver dans des zones de disponibilité différentes, dont l’un dans la même zone de disponibilité que le sous-réseau pour les instances EC2.

Exemple d'autorisations IAM pour le profil d'instance EC2 et le rôle ECS

Vous spécifiez un ARN de profil d'instance EC2 comme l'un des paramètres lorsque vous utilisez le modèle. Si vous utilisez la plate-forme de conteneur ECS, vous spécifiez également un ARN de rôle ECS. Les politiques d'autorisation associées à ces rôles permettent aux ressources et aux instances AWS de votre cluster d'interagir avec d'autres ressources AWS. Pour plus d'informations, veuillez consulter Rôles IAM dans le Guide de l'utilisateur IAM. Utilisez les instructions de stratégie et les procédures ci-dessous comme point de départ pour créer des autorisations.

Exemple de stratégie d'autorisations pour le profil d'instance EC2

La politique d'autorisation suivante décrit les actions autorisées pour le profil d'instance EC2 lorsque vous choisissez la plate-forme de conteneur ECS. Les mêmes instructions de stratégie peuvent être utilisées dans une plateforme de conteneur docker-local, avec les clés de contexte ecs supprimées pour limiter l'accès.

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

Création des rôles et autorisations ECS

Pour les autorisations associées au rôle ECS, nous vous recommandons de commencer par la politique d'ContainerServiceRoleautorisations AmazonEC2. Utilisez la procédure suivante pour créer un rôle et associer cette politique d'autorisation. Utilisez la console IAM pour afficher le plus grand nombre up-to-date d'autorisations de cette politique.

Pour créer le rôle IAM pour Amazon ECS
  1. Ouvrez la console IAM à l'adresse https://console.aws.amazon.com/iam/.

  2. Dans le volet de navigation, choisissez Rôles, puis Créer un rôle.

  3. Sous Select type of trusted entity (Sélectionner le type d'entité de confiance), choisissez AWS service (Service AWS).

  4. Sous Choisir le service qui utilisera ce rôle, choisissez Elastic Container Service.

  5. Sous Select your use case (Sélectionnez votre cas d'utilisation), choisissez Elastic Container Service, Next:Permissions (Suivant : Autorisations).

    AWS console interface for creating a role, with Elastic Container Service selected as the use case.
  6. Pour la politique d'autorisations, laissez la politique par défaut (AmazonEC2 ContainerServiceRole) sélectionnée et choisissez Next:Review.

  7. Dans Nom du rôle, entrez une valeur qui vous aide à identifier le rôle, telle que ECS RoleForEthereum. Pour Role Description (Description du rôle), saisissez un résumé. Notez le nom du rôle pour plus tard.

  8. Sélectionnez Créer un rôle.

  9. Sélectionnez le rôle que vous venez de créer dans la liste. Si votre compte comporte de nombreux rôles, vous pouvez rechercher le nom du rôle.

    AWSIAM console showing a role named "ECSRoleForEtherum" with its description.
  10. Copiez la valeur Role ARN (ARN du rôle) et enregistrez-la afin de pouvoir la copier à nouveau. Vous aurez besoin de cet ARN lorsque vous créerez le réseau Ethereum.

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

Connexion aux ressources Ethereum

Une fois que la pile racine que vous créez avec le modèle indique CREATE_COMPLETE, vous pouvez vous connecter aux ressources Ethereum à l'aide de la AWS CloudFormation console. Comment vous connecter dépend de la plateforme de conteneur que vous choisissez, ECS ou docker-local :

  • ECS —L'onglet Output de la pile racine fournit des liens vers les services exécutés sur l'Application Load Balancer. Ces URL ne sont pas directement accessibles pour des raisons de sécurité. Pour vous connecter, vous pouvez configurer et utiliser un hôte bastion pour les connexions proxy avec celles-ci. Pour plus d’informations, consultez Connexions proxy à l'aide d'un hôte Bastion ci-dessous.

  • docker-local —Vous vous connectez en utilisant l'adresse IP de l'instance EC2 hébergeant les services Ethereum, comme indiqué ci-dessous. Utilisez la console EC2 pour trouver l'adresse-IP-ec2 de l'instance créée par le modèle.

    • EthStats—Utilisez l'adresse IP HTTP ://EC2

    • EthExplorer—Utilisez http ://EC2-IP-Address:8080

    • EthJsonRpc—Utilisez http ://EC2-IP-Address:8545

    Si vous avez spécifié un sous-réseau public pour l'Ethereum Network Subnet ID (ID sous-réseau Ethereum) (Liste de sous-réseaux VPC à utiliser dans le modèle), vous pouvez vous connecter directement. Votre client doit être une source fiable de trafic entrant pour SSH (port 22), ainsi que pour les ports répertoriés. Ceci est déterminé par le groupe de sécurité EC2 que vous avez spécifié à l'aide du modèle AWS Blockchain pour Ethereum.

    Si vous avez spécifié un sous-réseau privé, vous pouvez configurer et utiliser un hôte bastion pour les connexions proxy à ces adresses. Pour plus d’informations, consultez Connexions proxy à l'aide d'un hôte Bastion ci-dessous.

Connexions proxy à l'aide d'un hôte Bastion

Dans certaines configurations, les services Ethereum peuvent ne pas être accessibles au public. Dans ces cas, vous pouvez vous connecter aux ressources Ethereum via un hôte bastion. Pour plus d'informations sur les hôtes bastion, consultez Architecture d'hôtes bastion Linux dans le guide Quick Start de l'hôte bastion Linux.

L'hôte du bastion est une instance EC2. Assurez-vous que les conditions suivantes sont remplies :

  • L'instance EC2 de l'hôte Bastion se trouve dans un sous-réseau public sur lequel l'attribution automatique d'une adresse IP publique est activée et qui possède une passerelle Internet.

  • L'hôte Bastion possède la paire de clés qui autorise les connexions SSH.

  • L'hôte Bastion est associé à un groupe de sécurité qui autorise le trafic SSH entrant en provenance des clients qui se connectent.

  • Le groupe de sécurité attribué aux hôtes Ethereum (par exemple, l'Application Load Balancer si ECS est la plate-forme de conteneur, ou l'instance EC2 hôte si docker-local est la plate-forme de conteneur) autorise le trafic entrant sur tous les ports à partir de sources au sein du VPC.

Une fois qu'un hôte bastion est configuré, assurez-vous que les clients qui se connectent utilisent l'hôte bastion comme proxy. L'exemple suivant montre comment configurer une connexion proxy à l'aide de Mac OS. Remplacez BastionIP par l'adresse IP de l'instance EC2 de l'hôte bastion et MySshKey.pem par le fichier de paire de clés que vous avez copié sur l'hôte bastion.

Sur la ligne de commande, tapez ce qui suit :

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

Cela configure la redirection de port pour le port 9001 sur la machine locale vers l'hôte Bastion.

Configurez ensuite votre navigateur ou votre système pour utiliser le proxy SOCKS pourlocalhost:9001. Par exemple, à l'aide de Mac OS, sélectionnez System Preferences (Préférences système), Network (Réseau), Advanced (Paramètres avancés), puis sélectionnez SOCKS proxy (Proxy SOCKS) et saisissez localhost:9001

Dans FoxyProxy Standard avec Chrome, sélectionnez Plus d'outils, Extensions. Sous FoxyProxy Standard, sélectionnez Détails, Options d'extension, Ajouter un nouveau proxy. Sélectionnez Manual Proxy Configuration (Configuration manuelle du proxy). Pour Host or IP Address (Hôte ou adresse IP), saisissez localhost et pour Port, saisissez 9001. Sélectionnez SOCKS proxy? (Proxy SOCKS ?), Save (Enregistrer).

Vous devriez maintenant être en mesure de vous connecter aux adresses d'hôte Ethereum répertoriées dans la sortie du modèle.