Uso de AWS Blockchain Template para Ethereum - AWS Blockchain Templates

AWS Blockchain Templates se suspendió el 30 de abril de 2019. No habrá más actualizaciones de este servicio ni de esta documentación complementaria. Para disfrutar de la mejor experiencia de Managed Blockchain AWS, te recomendamos que utilices Amazon Managed Blockchain (AMB). Para obtener más información sobre cómo empezar a utilizar Amazon Managed Blockchain, consulte nuestro taller sobre Hyperledger Fabric o nuestro blog sobre la implementación de un nodo de Ethereum. Si tienes preguntas sobre AMB o necesitas más ayuda, ponte en contacto con nuestro AWS Support equipo de AWS cuentas.

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Uso de AWS Blockchain Template para Ethereum

Ethereum es un marco de trabajo de cadena de bloques que administra contratos inteligentes mediante Solidity, un lenguaje específico de Ethereum. Homestead es la versión más reciente de Ethereum. Para obtener más información, consulte la documentación de Ethereum Homestead y la documentación de Solidity.

Enlaces para el lanzamiento

Consulte Introducción a AWS Blockchain Templates para ver los vínculos para lanzar AWS CloudFormation en regiones específicas utilizando las plantillas de Ethereum.

Opciones de Ethereum

Al configurar la red Ethereum con la plantilla, debe elegir opciones que determinan los requisitos siguientes:

Elección de la plataforma de contenedores

Las AWS Blockchain Templates utilizan contenedores de Docker almacenados en Amazon ECR para implementar un software de cadena de bloques. La AWS Blockchain Template para Ethereum ofrece dos opciones de plataforma de contenedores:

  • ecs: especifica que Ethereum se ejecuta en un clúster de Amazon ECS de instancias de Amazon EC2.

  • docker-local: especifica que Ethereum se ejecuta en una sola instancia EC2.

Uso de la plataforma de contenedores Amazon ECS

Con Amazon ECS, debe crear la red de Ethereum en un clúster de ECS formado por varias instancias EC2, con un equilibrador de carga de aplicaciones y con los recursos relacionados. Para obtener más información sobre cómo utilizar la configuración de Amazon ECS, consulte el tutorial Introducción a AWS Blockchain Templates.

El siguiente diagrama muestra una red de Ethereum creada utilizando la plantilla con la opción de plataforma de contenedores ECS:

Uso de la plataforma docker-local

También puede lanzar contenedores de Ethereum dentro de una única instancia Amazon EC2. Todos los contenedores se ejecutan en una sola instancia EC2. Se trata de una configuración simplificada.

El siguiente diagrama muestra una red de Ethereum creada utilizando la plantilla con la opción de plataforma de contenedores docker-local:

Elección de una red de Ethereum pública o privada

Si se elige un valor distinto de 1-4 para Ethereum Network ID (ID de la red Ethereum), se crean nodos privados de Ethereum que se ejecutan dentro de la red que se defina, utilizando los parámetros de red privada que se especifiquen.

Si se elige un valor de 1-4 para ID de la red Ethereum, los nodos de Ethereum que se crean se unen a la red Ethereum pública. Puede hacer caso omiso de la configuración de red privada y de sus valores predeterminados. Si decide unir los nodos de Ethereum a la red Ethereum pública, asegúrese de que es posible tener acceso a los servicios adecuados de la red a través de Internet.

Cambio de las cuentas predeterminadas y la frase mnemotécnica

Una frase mnemotécnica es un conjunto aleatorio de palabras que puede usar para generar carteras de Ethereum (es decir, pares de claves privadas/públicas) para cuentas asociadas en cualquier red. La frase mnemotécnica se puede utilizar para acceder a Ether para cuentas asociadas. Creamos una frase mnemotécnica predeterminada asociada a las cuentas predeterminadas que utiliza la plantilla de Ethereum.

aviso

Utilice las cuentas predeterminadas y la frase mnemotécnica asociada solo con fines de prueba. No envíe Ether real usando el conjunto predeterminado de cuentas porque cualquier persona con acceso a la frase mnemotécnica puede acceder o robar Ether de las cuentas. En su lugar, especifique cuentas personalizadas para fines de producción. La frase mnemotécnica asociada a la cuenta predeterminada es outdoor father modify clever trophy abandon vital feel portion grit evolve twist.

Requisitos previos

Cuando se configura la red de Ethereum utilizando la AWS Blockchain Template para Ethereum, se deben cumplir los requisitos mínimos que se indican a continuación. La plantilla requiere los componentes de AWS enumerados para cada una de las categorías siguientes:

Requisitos previos para acceder a los recursos de Ethereum

Requisito previo Para la plataforma ECS Para docker-local

Un par de claves de Amazon EC2 que se puede utilizar para obtener acceso a las instancias EC2. La clave debe existir en la misma región que el clúster y los demás recursos de ECS.

Un componente con conexión a Internet, como un host bastión o un equilibrador de carga con conexión a Internet, con una dirección interna desde la que se permite el tráfico en el equilibrador de carga de aplicaciones. Esto es necesario con la plataforma ECS porque la plantilla crea un equilibrador de carga interno por razones de seguridad. Esto es necesario con la plataforma docker-local cuando la instancia EC2 se encuentra en una subred privada, lo que recomendamos. Para obtener información sobre la configuración de un host bastión, consulte Creación de un host bastión.

✔ (con subred privada)

Requisitos previos de IAM

Requisito previo Para la plataforma ECS Para docker-local

Una entidad principal (usuario o grupo) de IAM que tenga permisos para trabajar con todos los servicios relacionados.

Un perfil de instancia Amazon EC2 con los permisos adecuados para que las instancias EC2 interactúen con los demás servicios. Para obtener más información, consulte To create an EC2 instance profile.

Un rol de IAM con los permisos adecuados para que Amazon ECS interactúe con los demás servicios. Para obtener más información, consulte Creación del rol y los permisos de ECS.

Requisitos previos del grupo de seguridad

Requisito previo Para la plataforma ECS Para docker-local

Un grupo de seguridad para las instancias EC2, con los siguientes requisitos:

  • Reglas de salida que permitan el tráfico a 0.0.0.0/0 (valor predeterminado).

  • Una regla de entrada que permite todo el tráfico de sí misma (el mismo grupo de seguridad).

  • Una regla de entrada que permite todo el tráfico del grupo de seguridad para el equilibrador de carga de aplicaciones.

  • Reglas de entrada que permiten HTTP (puerto 80), EthStats (servido en el puerto 8080), JSON RPC a través de HTTP (puerto 8545) y SSH (puerto 22) desde fuentes externas de confianza, como el CIDR IP del equipo cliente.

Un grupo de seguridad para el equilibrador de carga de aplicaciones, con los siguientes requisitos:

  • Una regla de entrada que permite todo el tráfico de sí misma (el mismo grupo de seguridad).

  • Una regla de entrada que permita todo el tráfico desde el grupo de seguridad a las instancias EC2.

  • Las reglas de salida que permiten todo el tráfico únicamente al grupo de seguridad para las instancias EC2. Para obtener más información, consulte Creación de los grupos de seguridad.

  • Si asocia este mismo grupo de seguridad con un host bastión, una regla de entrada que permite el tráfico SSH (puerto 22) de orígenes de confianza.

  • Si el host bastión u otro componente con conexión a Internet se encuentra en un grupo de seguridad diferente, una regla de entrada que permite el tráfico desde ese componente.

Requisitos previos de VPC

Requisito previo Para la plataforma ECS Para docker-local

Una dirección IP elástica, que se utiliza para tener acceso a los servicios de Ethereum.

Una subred para ejecutar las instancias EC2. Recomendamos el uso de una subred privada.

Dos subredes con acceso público. Cada subred debe estar en distintas zonas de disponibilidad, con una en la misma zona de disponibilidad que la subred de las instancias EC2.

Ejemplo de permisos de IAM para el perfil de instancia EC2 y el rol de ECS

Debe especificar el ARN de un perfil de instancia EC2 como uno de los parámetros cuando utilice la plantilla. Si utiliza la plataforma de contenedores ECS, también debe especificar el ARN de un rol de ECS. Las políticas de permisos asociadas a estos roles permiten a los recursos de AWS y a las instancias del clúster interactuar con otros recursos de AWS. Para obtener más información, consulte Roles de IAM en la Guía del usuario de IAM. Utilice las instrucciones de política y los procedimientos siguientes como punto de partida para la creación de los permisos.

Ejemplo de política de permisos para el perfil de instancia EC2

La siguiente política de permisos demuestra las acciones permitidas para el perfil de instancia EC2 cuando se elige la plataforma de contenedores ECS. Se pueden utilizar las mismas instrucciones de política en una plataforma de contenedores docker-local, quitando las claves de contexto ecs para limitar el acceso.

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

Creación del rol y los permisos de ECS

Para los permisos asociados a la función de ECS, le recomendamos que comience con la política de permisos de AmazonEC2. ContainerServiceRole Utilice el procedimiento siguiente para crear un rol y asociarle esta política de permisos. Utilice la consola de IAM para ver la mayoría de los up-to-date permisos de esta política.

Crear el rol de IAM para Amazon ECS
  1. Abra la consola de IAM en https://console.aws.amazon.com/iam/.

  2. En el panel de navegación, elija Roles, Crear rol.

  3. En Select type of trusted entity (Seleccionar tipo de entidad de confianza), elija AWS service.

  4. En Choose the service that will use this role (Elegir el servicio que usará este rol), elija Elastic Container Service.

  5. En Select your use case (Seleccione su caso de uso), elija Elastic Container Service (Servicio de contenedor elástico), Next:Permissions (Siguiente: Permisos).

  6. Para la política de permisos, deje seleccionada la política predeterminada (AmazonEC2 ContainerServiceRole) y elija Next:Review.

  7. En Nombre del rol, introduzca un valor que le ayude a identificar el rol, como ECS. RoleForEthereum En Role Description (Descripción del rol), escriba un breve resumen. Anote el nombre del rol para consultarlo más adelante.

  8. Elija Crear rol.

  9. Seleccione en la lista el rol que acaba de crear. Si su cuenta tiene varios roles, puede buscar el nombre de rol.

  10. Copie el valor de Role ARN (ARN del rol) y guárdelo donde pueda copiarlo de nuevo. Necesitará este ARN al crear la red Ethereum.

Conexión a Ethereum Resources

Una vez que la pila raíz creada con la plantilla muestre CREATE_COMPLETE, puede conectarse a los recursos de Ethereum mediante la consola de AWS CloudFormation. La forma de conectarse depende de la plataforma de contenedores elegida, ECS o docker-local:

  • ECS: la pestaña Salida de la pila raíz proporciona enlaces a los servicios que se ejecutan en el equilibrador de carga de aplicaciones. No es posible tener acceso directo a estas direcciones URL por motivos de seguridad. Para conectarse a ellas, puede configurar y utilizar un host bastión para que actúe como proxy durante la conexión. Para obtener más información, consulte Conexiones proxy mediante un host bastión más abajo.

  • docker-local: puede conectarse utilizando la dirección IP de la instancia EC2 que aloja los servicios de Ethereum como se indica a continuación. Utilice la consola de EC2 para encontrar la dirección-IP-de-ec2 de la instancia creada por la plantilla.

    • EthStats—Utilice la dirección IP de EC2 http://

    • EthExplorer— Utilice la dirección IP http://EC2-IP:8080

    • EthJsonRpc— Utilice la dirección IP http://EC2-IP:8545

    Si ha especificado una subred pública para Ethereum Network Subnet ID (ID de subred de la red Ethereum) (List of VPC Subnets to use (Lista de subredes de VPC que se van a utilizar) dentro de la plantilla), puede conectarse directamente. El cliente debe ser un origen de confianza de tráfico entrante para SSH (puerto 22), así como los puertos de la lista. Esto lo determina el grupo de seguridad de EC2 que se especificó mediante la AWS Blockchain Template para Ethereum.

    Si ha especificado una subred privada, puede configurar y utilizar un host bastión para que actúe como proxy en las conexiones con estas direcciones. Para obtener más información, consulte Conexiones proxy mediante un host bastión más abajo.

Conexiones proxy mediante un host bastión

En algunas configuraciones, es posible que los servicios de Ethereum no estén disponibles públicamente. En esos casos, puede conectarse a los recursos de Ethereum a través de un host bastión. Para obtener más información sobre los hosts bastión, consulte Arquitectura de host bastión de Linux en la Guía de inicio rápido del host bastión de Linux.

El host bastión es una instancia EC2. Asegúrese de que se cumplan los siguientes requisitos:

  • La instancia EC2 del host bastión se encuentra dentro de una subred pública con la asignación automática de IP pública habilitada y que tiene una puerta de enlace de Internet.

  • El host bastión tiene el par de claves que permite conexiones SSH.

  • El host bastión está asociado a un grupo de seguridad que permite el tráfico SSH entrante desde los clientes que se conecten.

  • El grupo de seguridad asignado a los hosts de Ethereum (por ejemplo, el equilibrador de carga de aplicaciones si ECS es la plataforma de contenedores, o la instancia EC2 del host si docker-local es la plataforma de contenedores) permite el tráfico entrante en todos los puertos desde los orígenes que se encuentren en la VPC.

Si tiene un host bastión configurado, asegúrese de que los clientes que se conecten utilicen el host bastión como proxy. En el siguiente ejemplo, se muestra cómo establecer una conexión de proxy mediante Mac OS. Sustituya BastionIP por la dirección IP de la instancia EC2 del host del bastión y MySshKey.pem por el archivo de pares de claves que copió en el host del bastión.

En la línea de comando, escriba lo siguiente:

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

Así se configura el reenvío de puertos del puerto 9001 de la máquina local al host bastión.

A continuación, configure su navegador o sistema para que utilice el proxy SOCKS para localhost:9001. Por ejemplo, si usa Mac OS, seleccione System preferences (Preferencias del Sistema), Network (Red), Advanced (Avanzado), seleccione SOCKS proxy y escriba localhost:9001.

Si utilizas la opción FoxyProxy Estándar con Chrome, selecciona Más herramientas y extensiones. En FoxyProxy Estándar, selecciona Detalles, Opciones de extensión y Añadir nuevo proxy. Seleccione Manual Proxy Configuration (Configuración manual del proxy). En Host or IP Address (Host o dirección IP) escriba localhost y en Port (Puerto) escriba 9001. Seleccione SOCKS Proxy?, Save (Guardar).

Ahora debería poder conectarse a las direcciones de host enumeradas en la salida de la plantilla.