

O AWS Blockchain Templates foi descontinuado em 30 de abril de 2019. Nenhuma atualização adicional será feita para este serviço ou nesta documentação de suporte. Para obter a melhor experiência de Managed Blockchain AWS, recomendamos que você use o [Amazon Managed Blockchain (AMB)](https://aws.amazon.com/managed-blockchain/). Para saber mais sobre como começar a usar o Amazon Managed Blockchain, veja o nosso [workshop sobre o Hyperledger Fabric](https://catalog.us-east-1.prod.workshops.aws/workshops/008da2cb-8454-42d0-877b-bc290bff7fcf/en-US) ou o nosso [blog sobre a implantação de um nó Ethereum](https://aws.amazon.com/blogs/database/deploy-an-ethereum-node-on-amazon-managed-blockchain/). Se você tiver dúvidas sobre o AMB ou precisar de mais suporte, [entre em contato com Suporte](https://console.aws.amazon.com/support/home#/case/create?issueType=technical) nossa equipe de AWS contas.

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Configurar pré-requisitos
<a name="blockchain-template-getting-started-prerequisites"></a>

A configuração do AWS Blockchain Template especificada neste tutorial requer que você faça o seguinte:
+ [Crie uma VPC e sub-redes](#blockchain-templates-create-a-vpc)
+ [Criar security groups](#blockchain-templates-create-security-group)
+ [Crie uma função do IAM para o Amazon ECS e um perfil de EC2 instância](#blockchain-templates-iam-roles)
+ [Criar um bastion host](#blockchain-templates-bastion-host)

## Crie uma VPC e sub-redes
<a name="blockchain-templates-create-a-vpc"></a>

O AWS Blockchain Template para o Ethereum lança recursos da em uma rede virtual definida por você usando a Amazon Virtual Private Cloud (Amazon VPC). A configuração especificada neste tutorial cria um Application Load Balancer, que exige duas sub-redes públicas em zonas de disponibilidade diferentes. Além disso, uma sub-rede privada é necessária para as instâncias de contêiner, e a sub-rede deve estar na mesma zona de disponibilidade que o Application Load Balancer. Primeiro, use o assistente da VPC para criar uma sub-rede pública e uma sub-rede privada na mesma zona de disponibilidade. Depois disso, crie uma segunda sub-rede pública nesta VPC em uma zona de disponibilidade diferente.

Para obter mais informações, consulte [O que é a Amazon VPC?](https://docs.aws.amazon.com/vpc/latest/userguide/) no *Guia do usuário da Amazon VPC*.

Use o console Amazon VPC ([https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)) para criar o endereço IP elástico, a VPC e a sub-rede conforme descrito abaixo.

**Para criar um endereço IP elástico**

1. Abra o console da Amazon VPC em [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/).

1. Escolha **Elastic IPs**, **Aloque novo endereço**, **Aloque**.

1. Anote o endereço IP elástico criado e escolha **Close (Fechar)**.

1. Na lista de endereços IP elásticos, localize **Allocation ID (ID de alocação)** para o endereço IP elástico criado anteriormente. Você o usará mais tarde, quando criar a VPC.

**Para criar a VPC**

1. Na barra de navegação, selecione uma região para a VPC. VPCs são específicos de uma região, então selecione a mesma região na qual você criou seu key pair e onde você está lançando a pilha Ethereum. Para obter mais informações, consulte [Criar um par de chaves](blockchain-templates-setting-up.md#blockchain-templates-create-a-key-pair).

1. No painel da VPC, escolha **Start VPC Wizard**.

1. Na página **Step 1: Select a VPC Configuration (Etapa 1: Selecionar uma configuração da VPC)**, escolha **VPC with Public and Private Subnets (VPC com sub-redes públicas e privadas)** e **Select (Selecionar)**.

1. Na página **Etapa 2: VPC com sub-redes públicas e privadas, deixe o bloco CIDR** e o **bloco IPv4 CIDR** com seus valores **IPv6 padrão.** Em **VPC name (Nome da VPC)**, insira um nome fácil de lembrar.

1. Para o ** IPv4 CIDR da sub-rede pública**, deixe o valor padrão. Em **Availability Zone (Zona de disponibilidade)**, escolha uma zona. Em **Public subnet name (Nome da sub-rede pública)**, insira um nome fácil de lembrar.

   Essa sub-rede é especificada como uma das duas primeiras sub-redes do Application Load Balancer ao usar o modelo.

   Anote a zona de disponibilidade desta sub-rede porque você deverá selecionar a mesma zona de disponibilidade para a sub-rede privada e uma diferente para a outra sub-rede pública.

1. Para o ** IPv4 CIDR da sub-rede privada**, deixe o valor padrão. Em **Availability Zone (Zona de disponibilidade)**, selecione a mesma zona de disponibilidade da etapa anterior. Em **Private subnet name (Nome da sub-rede privada)**, insira um nome fácil de lembrar.

1. Em **Elastic IP Allocation ID (ID de alocação do IP elástico)**, selecione o endereço IP elástico criado anteriormente.

1. Mantenha os valores padrão das demais configurações.

1. Escolha **Criar VPC**.

   **O exemplo abaixo mostra uma VPC **EthereumNetworkVPC** com uma sub-rede pública **EthereumPubSub1 e uma sub-rede privada 1**. EthereumPvtSub** A sub-rede pública usa a zona de disponibilidade **us-west-2a**.  
![\[VPC configuration form with public and private subnet details for EthereumVPC.\]](http://docs.aws.amazon.com/pt_br/blockchain-templates/latest/developerguide/images/VPC.png)

**Para criar a segunda sub-rede pública em uma zona de disponibilidade diferente**

1. Escolha **Subnets (Sub-redes)** e selecione a sub-rede pública criada anteriormente na lista. Selecione a guia **Route Table (Tabela de rotas)** e anote o ID da **Route table (Tabela de rotas)**. Especifique essa mesma tabela de rotas para a segunda sub-rede pública abaixo.

1. Selecione **Create Subnet**.

1. Em **Name tag (Tag de nome)**, insira um nome para a sub-rede. Use esse nome mais tarde quando criar o bastion host nessa rede.

1. Em **VPC**, selecione a VPC criada anteriormente.

1. Em **Availability Zone (Zona de disponibilidade)**, selecione uma zona diferente daquela selecionada para a primeira sub-rede pública.

1. Para **bloco IPv4 CIDR**, insira **10.0.2.0/24**.

1. Escolha **Yes, Create** (Sim, criar). A sub-rede é adicionada à lista de sub-redes.

1. Com a sub-rede selecionada na lista, escolha **Subnet Actions (Ações de sub-rede)** e **Modify auto-assign IP settings (Modificar configurações de IP de atribuição automática)**. Selecione **Atribuir automaticamente IPs**, **Salvar**, **Fechar**. Isso permite que o bastion host obtenha um endereço IP público quando você o cria nessa sub-rede.

1. Na guia **Route Table (Tabela de rotas)**, escolha **Edit (Editar)**. Em **Change to (Alterar para)**, selecione o ID da tabela de rotas anotado anteriormente e escolha **Save (Salvar)**.

Agora você deverá ver três sub-redes para a VPC que criou anteriormente. Anote os nomes das sub-redes IDs para que você possa especificá-los usando o modelo.

![\[VPC Dashboard showing three subnets with their IDs, states, and IPv4 CIDR ranges.\]](http://docs.aws.amazon.com/pt_br/blockchain-templates/latest/developerguide/images/subnets-listing.png)


## Criar security groups
<a name="blockchain-templates-create-security-group"></a>

Os grupos de segurança agem como firewalls, controlando o tráfego de entrada e saída para recursos. Ao usar o modelo para criar uma rede de Ethererum em um cluster do Amazon ECS, você especifica dois grupos de segurança:
+ Um grupo de segurança para EC2 instâncias que controla o tráfego de e para EC2 instâncias no cluster
+ Um grupo de segurança para o Application Load Balancer que controla o tráfego entre o Application Load Balancer EC2 , as instâncias e o bastion host. Associe esse grupo de segurança com o bastion host também.

Cada grupo de segurança tem regras que permitem a comunicação entre o Application Load Balancer e as EC2 instâncias, além de outras regras mínimas. Isso requer que os grupos de segurança referenciem-se uns aos outros. Por esse motivo, você primeiro cria os grupos de segurança e, então, você os atualiza com as regras apropriadas.

**Para criar dois grupos de segurança**

1. Abra o EC2 console da Amazon em [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. No painel de navegação, escolha **Security Groups**, **Create Security Group (Criar Security Group)**.

1. *Em **Nome do grupo de segurança**, insira um nome para o grupo de segurança que seja fácil de identificar e o diferencie do outro, como *Ethereum EC2 -SG ou EthereumAlb-SG*.* Você usará esses nomes depois. Em **Description (Descrição)**, insira um breve resumo.

1. Em **VPC**, selecione a VPC criada anteriormente.

1. Escolha **Criar**.

1. Repita as etapas acima para criar o outro grupo de segurança.

**Adicione regras de entrada ao grupo de segurança para instâncias EC2**

1. Selecione o grupo de segurança para EC2 instâncias que você criou anteriormente

1. Na guia **Entrada**, escolha **Editar**.

1. Para **Tipo**, escolha **Todo o tráfego**. Em **Fonte**, deixe **Personalizado** selecionado e escolha o grupo de segurança que você está editando no momento na lista, por exemplo, *Ethereum EC2 -SG*. Isso permite que as EC2 instâncias do grupo de segurança se comuniquem umas com as outras.

1. Escolha **Add Rule**.

1. Para **Tipo**, escolha **Todo o tráfego**. Em **Source (Origem)**, mantenha a opção **Custom (Personalizada)** selecionada. Escolha o grupo de segurança do Application Load Balancer na lista, por exemplo, *EthereumALB-SG*. Isso permite que as EC2 instâncias do grupo de segurança se comuniquem com o Application Load Balancer.

1. Escolha **Salvar**.

**Adicionar entrada e editar regras de saída para o grupo de segurança do Application Load Balancer**

1. Selecione o grupo de segurança para os Application Load Balancers que você criou anteriormente

1. Na guia **Inbound (Entrada)**, escolha **Edit (Editar)** e adicione as seguintes regras de entrada:

   1. Para **Tipo**, escolha **Todo o tráfego**. Em **Source (Origem)**, mantenha a opção **Custom (Personalizada)** selecionada e escolha o grupo de segurança que você está editando na lista, por exemplo, *EthereumALB-SG*. Isso permite que o Application Load Balancer comunique-se consigo mesmo e com o bastion host.

   1. Escolha **Add Rule**.

   1. Para **Tipo**, escolha **Todo o tráfego**. Em **Source**, deixe a opção **Custom** selecionada e escolha o grupo de segurança para EC2 instâncias na lista, por exemplo, *Ethereum EC2 -SG*. Isso permite que as EC2 instâncias do grupo de segurança se comuniquem com o Application Load Balancer e o bastion host.

   1. Escolha **Add Rule**.

   1. Para **Tipo**, escolha **SSH**. Em **Source (Origem)**, selecione **My IP (Meu IP)**, que detecta o CIDR IP do computador e o insere.
**Importante**  
Essa regra permite que o bastion host aceite tráfego SSH do seu computador, permitindo que seu computador use o bastion host para visualizar interfaces da web e se conectar a EC2 instâncias na rede Ethereum. Para permitir que outras pessoas se conectem à rede Ethereum, adicione-as como origens a essa regra. Permita apenas tráfego de entrada para origens confiáveis.

   1. Escolha **Salvar**.

1. Na guia **Outbound (Saída)**, escolha **Edit (Editar)** e exclua a regra que foi criada automaticamente para permitir o tráfego de saída para todos os endereços IP.

1. Escolha **Add Rule**.

1. Para **Tipo**, escolha **Todo o tráfego**. Em **Destino**, deixe **Personalizado** selecionado e escolha o grupo de segurança para EC2 instâncias na lista. Isso permite conexões de saída do Application Load Balancer e do bastion host EC2 para instâncias na rede Ethereum.

1. Escolha **Add Rule**.

1. Para **Tipo**, escolha **Todo o tráfego**. Em **Destination (Destino)**, mantenha a opção **Custom (Personalizada)** selecionada. Escolha o grupo de segurança que você está editando na lista, por exemplo, *EthereumALB-SG*. Isso permite que o Application Load Balancer comunique-se consigo mesmo e com o bastion host.

1. Escolha **Salvar**.

## Crie uma função do IAM para o Amazon ECS e um perfil de EC2 instância
<a name="blockchain-templates-iam-roles"></a>

Ao usar esse modelo, você especifica uma função do IAM para o Amazon ECS e um perfil de EC2 instância. As políticas de permissões anexadas a essas funções permitem que os recursos e instâncias AWS no cluster interajam com os outros recursos AWS. Para obter mais informações, consulte [Perfis do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) no *Guia do usuário do IAM*. Você configura a função do IAM para o Amazon ECS e o perfil da EC2 instância usando o console do IAM ([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)).

**Para criar os perfis do IAM do Amazon ECS**

1. Abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação, selecione **Funções** e **Criar função**.

1. Em **Select type of trusted entity** (Selecionar tipo de entidade confiável), escolha **AWS service** (Produto da AWS).

1. Em **Choose the service that will use this role** (Escolher o serviço que usará esta função), escolha **Elastic Container Service**.

1. Em **Select your use case (Selecionar seu caso de uso)**, escolha **Elastic Container Service**, **Next:Permissions (Próximo: permissões)**.  
![\[AWS console interface for creating a role, with Elastic Container Service selected as the use case.\]](http://docs.aws.amazon.com/pt_br/blockchain-templates/latest/developerguide/images/ecs-role.png)

1. Em **Política de permissões**, deixe a política padrão (**Amazon EC2 ContainerServiceRole**) selecionada e escolha **Next:Review**.

1. Em **Nome da função**, insira um valor que ajude a identificar a função, como *ECSRoleForEthereum*. Em **Role Description (Descrição da função)**, digite um resumo breve. Anote o nome da função para mais tarde.

1. Selecione **Criar perfil**.

1. Na lista, selecione a função que você acabou de criar. Caso sua conta tenha várias funções, você pode pesquisar o nome da função.  
![\[AWSIAM console showing a role named "ECSRoleForEtherum" with its description.\]](http://docs.aws.amazon.com/pt_br/blockchain-templates/latest/developerguide/images/ecs-role-list.png)

1. Copie o valor de **Role ARN (ARN da função)** e salve-o para copiá-lo novamente depois. Você precisará dele quando for criar a rede de Ethereum.  
![\[AWSIAM role summary page showing role ARN, description, and attached policies.\]](http://docs.aws.amazon.com/pt_br/blockchain-templates/latest/developerguide/images/ecs-role-arn.png)

O perfil de EC2 instância que você especifica no modelo é assumido pelas EC2 instâncias na rede Ethereum para interagir com outros AWS serviços. Você cria uma política de permissões para a função, cria a função (que cria automaticamente um perfil de instância com o mesmo nome) e, em seguida, anexa a política de permissões à função.

**Para criar um perfil de EC2 instância**

1. No painel de navegação, escolha **Policies**, **Create policy**.

1. Escolha **JSON** e substitua a instrução de política padrão pela seguinte política JSON:

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

1. Selecione **Revisar política**.

1. Em **Nome**, insira um valor que ajude a identificar essa política de permissões, por exemplo *EthereumPolicyForEC2*. Em **Description (Descrição)**, insira um breve resumo. Selecione **Criar política**.  
![\[AWS console showing Create policy page with name, description, and service permissions.\]](http://docs.aws.amazon.com/pt_br/blockchain-templates/latest/developerguide/images/ec2-perms-policy.png)

1. Selecione **Roles (Funções)**, **Create role (Criar função)**.

1. Escolha **EC2**, **Avançar: Permissões**.

1. No campo **Pesquisar**, digite o nome da política de permissões que você criou anteriormente, por exemplo *EthereumPolicyForEC2*.

1. Escolha a marca de seleção da política que criada anteriormente e escolha **Next: Review (Próximo: revisão)**.  
![\[AWS console showing Create role page with EthereumPolicyForEC2 policy selected.\]](http://docs.aws.amazon.com/pt_br/blockchain-templates/latest/developerguide/images/ec2-select-policy.png)

1. Em **Nome da função**, insira um valor que ajude a identificar a função, por exemplo *EC2RoleForEthereum*. Em **Role description (Descrição da função)**, insira um resumo e escolha **Create role (Criar função)**.

1. Na lista, selecione a função que você acabou de criar. Caso sua conta tenha várias funções, é possível inserir o nome da função no campo **Search (Pesquisa)**.  
![\[AWSIAM interface showing a role named EC2RoleforEther with associated description and trusted entity.\]](http://docs.aws.amazon.com/pt_br/blockchain-templates/latest/developerguide/images/ec2-select-role.png)

1. Copie o valor de**Instance Profile ARN (ARN do perfil de instância)** e salve-o para copiá-lo novamente depois. Você precisará dele quando for criar a rede de Ethereum.  
![\[AWSIAM role summary page showing Role ARN and Instance Profile ARNs fields.\]](http://docs.aws.amazon.com/pt_br/blockchain-templates/latest/developerguide/images/ec2-role-arn.png)

## Criar um bastion host
<a name="blockchain-templates-bastion-host"></a>

Neste tutorial, crie um bastion host. Essa é uma EC2 instância que você usa para se conectar às interfaces da web e às instâncias da sua rede Ethereum. Seu único objetivo é encaminhar o tráfego SSH de clientes confiáveis fora da VPC para que eles possam acessar recursos de rede Ethereum.

Configure o bastion host porque o Application Load Balancer criado pelo modelo é interno, o que significa que ele roteia somente endereços IP internos. O bastion host:
+ Tem um endereço IP interno que o Application Load Balancer reconhece porque você o inicia na segunda sub-rede pública criada anteriormente.
+ Tem um endereço IP público que a sub-rede atribui, que pode ser acessado por origens confiáveis fora da VPC.
+ É associado ao grupo de segurança do Application Load Balancer criado anteriormente, que tem uma regra de entrada que permite tráfego SSH (porta 22) de clientes confiáveis.

Para acessar a rede Ethereum, clientes confiáveis precisam ser configurados para se conectarem por meio do bastion host. Para obter mais informações, consulte [Conecte-se EthStats e EthExplorer usando o Bastion Host](blockchain-bastion-host-connect.md). Um bastion host é uma das abordagens. É possível usar qualquer abordagem que forneça acesso de clientes confiáveis a recursos privados em uma VPC.

**Como criar um bastion host**

1. Siga as cinco primeiras etapas para [iniciar uma instância](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EC2_GetStarted.html#ec2-launch-instance) no *Guia do EC2 usuário da Amazon*.

1. Escolha **Edit Instance Details (Editar detalhes da instância)**. Em **Network (Rede)**, escolha a VPC criada anteriormente. Em **Subnet (Sub-rede)**, selecione a segunda sub-rede pública criada anteriormente. Deixe todas as outras configurações com seus valores padrão.

1. Confirme a alteração quando solicitado e escolha **Review and Launch (Revisar e executar)**.

1. Escolha **Edit security groups (Editar grupos de segurança)**. Em **Assign a security group (Atribuir um grupo de segurança)**, escolha **Select an existing security group (Selecionar um security group existente)**.

1. Na lista de grupos de segurança, selecione o grupo de segurança para o Application Load Balancer criado anteriormente e escolha **Review and Launch (Revisar e executar)**.

1. Escolha **Executar**.

1. Anote o ID da instância. Ele será necessário mais tarde, quando você [Conecte-se EthStats e EthExplorer usando o Bastion Host](blockchain-bastion-host-connect.md).  
![\[Green checkmark indicating successful instance launch with partially obscured instance ID.\]](http://docs.aws.amazon.com/pt_br/blockchain-templates/latest/developerguide/images/bastion-instance.png)