

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, le recomendamos que utilice [Amazon Managed Blockchain (AMB).](https://aws.amazon.com/managed-blockchain/) Para obtener más información sobre cómo empezar a utilizar Amazon Managed Blockchain, consulte nuestro [taller sobre Hyperledger Fabric](https://catalog.us-east-1.prod.workshops.aws/workshops/008da2cb-8454-42d0-877b-bc290bff7fcf/en-US) o nuestro [blog sobre la implementación de un nodo de Ethereum](https://aws.amazon.com/blogs/database/deploy-an-ethereum-node-on-amazon-managed-blockchain/). Si tienes preguntas sobre AMB o necesitas más ayuda, [ponte en contacto con nuestro Soporte](https://console.aws.amazon.com/support/home#/case/create?issueType=technical) 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
<a name="blockchain-templates-ethereum"></a>

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](http://www.ethdocs.org/en/latest/) y la documentación de [Solidity](https://solidity.readthedocs.io/en/v0.4.21/#).

## Enlaces para el lanzamiento
<a name="blockchain-ethereum-launch"></a>

Consulte [Getting Started with AWS Blockchain Templates](https://aws.amazon.com/blockchain/templates/getting-started/) para ver los enlaces que se CloudFormation pueden lanzar en regiones específicas con las plantillas de Ethereum.

## Opciones de Ethereum
<a name="blockchain-ethereum-options"></a>

Al configurar la red Ethereum con la plantilla, debe elegir opciones que determinan los requisitos siguientes:
+ [Elección de la plataforma de contenedores](#blockchain-ethereum-platform)
+ [Elección de una red de Ethereum pública o privada](#blockchain-private-public)
+ [Cambio de las cuentas predeterminadas y la frase mnemotécnica](#blockchain-ethereum-mnemonic)

### Elección de la plataforma de contenedores
<a name="blockchain-ethereum-platform"></a>

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 EC2 instancias de Amazon de Amazon ECS.
+ **docker-local**: especifica que Ethereum se ejecuta en una sola instancia. EC2

#### Uso de la plataforma de contenedores Amazon ECS
<a name="blockchain-ethereum-ecs"></a>

Con Amazon ECS, crea su red Ethereum en un clúster de ECS compuesto por varias EC2 instancias, con un Application Load Balancer y 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](blockchain-templates-getting-started.md).

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

![\[AWS diagram showing VPC with public and private subnets, load balancers, and Ethereum nodes in ECS containers.\]](http://docs.aws.amazon.com/es_es/blockchain-templates/latest/developerguide/images/ethereum-ecs-arch.png)


#### Uso de la plataforma docker-local
<a name="blockchain-ethereum-docker-local"></a>

Como alternativa, puedes lanzar contenedores de Ethereum en una sola EC2 instancia de Amazon. Todos los contenedores se ejecutan en una sola EC2 instancia. 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:

![\[Diagram of Ethereum network on AWS with VPC, EC2 instance, containers, and ECR registry.\]](http://docs.aws.amazon.com/es_es/blockchain-templates/latest/developerguide/images/ethereum-docker-local-arch.png)


### Elección de una red de Ethereum pública o privada
<a name="blockchain-private-public"></a>

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
<a name="blockchain-ethereum-mnemonic"></a>

Una frase mnemotécnica es un conjunto aleatorio de palabras que puedes usar para generar carteras de Ethereum (es decir, pares de private/public claves) para las 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
<a name="blockchain-ethereum-prereq"></a>

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 AWS componentes enumerados para cada una de las siguientes categorías:

**Topics**
+ [Requisitos previos para acceder a los recursos de Ethereum](#blockchain-ethereum-prereq-access)
+ [Requisitos previos de IAM](#blockchain-ethereum-prereq-iam)
+ [Requisitos previos del grupo de seguridad](#blockchain-ethereum-prereq-sec)
+ [Requisitos previos de VPC](#blockchain-ethereum-prereq-vpc)
+ [Ejemplos de permisos de IAM para el perfil de la EC2 instancia y el rol de ECS](#blockchain-ethereum-iam-examples)

### Requisitos previos para acceder a los recursos de Ethereum
<a name="blockchain-ethereum-prereq-access"></a>


| Requisito previo | Para la plataforma ECS | Para docker-local | 
| --- | --- | --- | 
|  Un EC2 key pair de Amazon que puedes usar para acceder a EC2 las instancias. 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 obligatorio con la plataforma docker-local cuando la EC2 instancia 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](blockchain-template-getting-started-prerequisites.md#blockchain-templates-bastion-host).  |  ✔  |  ✔ (con subred privada)  | 

### Requisitos previos de IAM
<a name="blockchain-ethereum-prereq-iam"></a>


| 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 EC2 instancia de Amazon con los permisos adecuados para que EC2 las instancias interactúen con otros servicios. Para obtener más información, consulte [To create an EC2 instance profile](blockchain-template-getting-started-prerequisites.md#create-ec2-role).   |  ✔  |  ✔  | 
|  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](#blockchain-ethereum-ecs-role).  |  ✔  |    | 

### Requisitos previos del grupo de seguridad
<a name="blockchain-ethereum-prereq-sec"></a>


| Requisito previo | Para la plataforma ECS | Para docker-local | 
| --- | --- | --- | 
| Un grupo de seguridad para EC2 instancias, con los siguientes requisitos: | ✔ |  ✔  | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/blockchain-templates/latest/developerguide/blockchain-templates-ethereum.html)  | ✔ |  ✔  | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/blockchain-templates/latest/developerguide/blockchain-templates-ethereum.html)  | ✔ |  ✔  | 
| [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/blockchain-templates/latest/developerguide/blockchain-templates-ethereum.html) | ✔ |  | 
| [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/blockchain-templates/latest/developerguide/blockchain-templates-ethereum.html) |  | ✔ | 
|  Un grupo de seguridad para el equilibrador de carga de aplicaciones, con los siguientes requisitos: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/blockchain-templates/latest/developerguide/blockchain-templates-ethereum.html)  |  ✔  |    | 

### Requisitos previos de VPC
<a name="blockchain-ethereum-prereq-vpc"></a>


| 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 EC2 instancias. Recomendamos el uso de una subred privada.  |  ✔  |  ✔  | 
|  Dos subredes con acceso público. Cada subred debe estar en zonas de disponibilidad diferentes entre sí, y una de ellas debe estar en la misma zona de disponibilidad que la subred para las instancias. EC2   |  ✔  |    | 

### Ejemplos de permisos de IAM para el perfil de la EC2 instancia y el rol de ECS
<a name="blockchain-ethereum-iam-examples"></a>

Al utilizar la plantilla, debe especificar un ARN de perfil de EC2 instancia como uno de los parámetros. 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](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) 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 EC2 instancia
<a name="blockchain-ethereum-ec2-instance"></a>

La siguiente política de permisos muestra las acciones permitidas para el perfil de EC2 instancia al elegir 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
<a name="blockchain-ethereum-ecs-role"></a>

Para los permisos asociados a la función de ECS, le recomendamos que comience con la política de EC2 ContainerServiceRole permisos de **Amazon**. 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 up-to-date los 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/](https://console.aws.amazon.com/iam/).

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

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

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

1. En **Select your use case (Seleccione su caso de uso)**, elija **Elastic Container Service (Servicio de contenedor elástico)**, **Next:Permissions (Siguiente: Permisos)**.  
![\[AWS console interface for creating a role, with Elastic Container Service selected as the use case.\]](http://docs.aws.amazon.com/es_es/blockchain-templates/latest/developerguide/images/ecs-role.png)

1. Para la **política de permisos**, deja seleccionada la política predeterminada (**Amazon EC2 ContainerServiceRole**) y selecciona **Next:Review**.

1. En **Nombre del rol**, ingresa un valor que te ayude a identificar el rol, por ejemplo. *ECSRoleForEthereum* En **Role Description (Descripción del rol)**, escriba un breve resumen. Anote el nombre del rol para consultarlo más adelante.

1. Elija **Crear rol**.

1. Seleccione en la lista el rol que acaba de crear. Si su cuenta tiene varios roles, puede buscar el nombre de rol.  
![\[AWSIAM console showing a role named "ECSRoleForEtherum" with its description.\]](http://docs.aws.amazon.com/es_es/blockchain-templates/latest/developerguide/images/ecs-role-list.png)

1. 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.  
![\[AWSIAM role summary page showing role ARN, description, and attached policies.\]](http://docs.aws.amazon.com/es_es/blockchain-templates/latest/developerguide/images/ecs-role-arn.png)

## Conexión a Ethereum Resources
<a name="blockchain-ethereum-connecting"></a>

Cuando la pila raíz que hayas creado con la plantilla muestre **CREATE\$1COMPLETE**, podrás conectarte a los recursos de Ethereum mediante la consola. 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 URLs se puede acceder directamente a ellos 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](#ethereum-create-bastion-host) más abajo.
+ **docker-local**: se conecta mediante la dirección IP de la EC2 instancia que aloja los servicios de Ethereum, tal como se indica a continuación. Usa la EC2 consola para buscar la instancia que *ec2-IP-address* creó la plantilla.
  + **EthStats**—Utilice http://*ec2-IP-address*
  + **EthExplorer**—Utilice http: //:8080 *ec2-IP-address*
  + **EthJsonRpc**— Utilice http: //:8545 *ec2-IP-address*

  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 EC2 seguridad** que especificó mediante la plantilla de cadena de bloques de AWS 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](#ethereum-create-bastion-host) más abajo.

### Conexiones proxy mediante un host bastión
<a name="ethereum-create-bastion-host"></a>

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](https://docs.aws.amazon.com/quickstart/latest/linux-bastion/architecture.html) en la *Guía de inicio rápido del host bastión de Linux*.

El host del bastión es una EC2 instancia. Asegúrese de que se cumplan los siguientes requisitos:
+ La EC2 instancia 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 a 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, Application Load Balancer si ECS es la plataforma de contenedores o la EC2 instancia de host si docker-local es la plataforma de contenedores) permite el tráfico entrante en todos los puertos desde fuentes de 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. *BastionIP*Sustitúyala por la dirección IP de la EC2 instancia del host del bastión y *MySshKey.pem* por el archivo de pares de claves que copiaste 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.