Configurar pré-requisitos - Modelos do AWS Blockchain

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 com Managed Blockchain no AWS, recomendamos que você use o Amazon Managed Blockchain (AMB). Para saber mais sobre como começar a usar o Amazon Managed Blockchain, veja o nosso workshop sobre o Hyperledger Fabric ou o nosso blog sobre a implantação de um nó Ethereum. Se você tiver dúvidas sobre o AMB ou precisar de mais suporte, entre em contato com AWS Support ou com a sua equipe de contas AWS.

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 configuração do AWS Blockchain Template especificada neste tutorial requer que você faça o seguinte:

Crie uma VPC e sub-redes

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? no Guia do usuário da Amazon VPC.

Use o console Amazon 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/.

  2. Escolha Elastic IPs (IPs elásticos), Allocate new address (Alocar novo endereço), Allocate (Alocar).

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

  4. 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. As VPCs são específicas para a região. Portanto, selecione a mesma região na qual você criou o par de chaves e executou a pilha do Ethereum. Para ter mais informações, consulte Criar um par de chaves.

  2. No painel da VPC, escolha Start VPC Wizard.

  3. 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).

  4. Na página Step 2: VPC with Public and Private Subnets (Etapa 2: VPC com sub-redes públicas e privadas), deixe IPv4 CIDR block (Bloco CIDR IPv4) e IPv6 CIDR block (Bloco CIDR IPv6) com seus valores padrão. Em VPC name (Nome da VPC), insira um nome fácil de lembrar.

  5. Em Public subnet's IPv4 CIDR (CIDR IPv4 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.

  6. Em Private subnet's IPv4 CIDR (CIDR IPv4 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.

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

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

  9. Escolha Create VPC (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.

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.

  2. Selecione Create Subnet.

  3. 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.

  4. Em VPC, selecione a VPC criada anteriormente.

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

  6. Em IPv4 CIDR block (Bloco CIDR IPv4), insira 10.0.2.0/24.

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

  8. 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 Auto-assign IPs (Atribuir IPs automaticamente), Save (Salvar) e Close (Fechar). Isso permite que o bastion host obtenha um endereço IP público quando você o cria nessa sub-rede.

  9. 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 e IDs das sub-redes para que você possa especificá-los usando o modelo.

Criar security groups

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 security group para instâncias do EC2 que controla o tráfego de e para instâncias do EC2 no cluster

  • Um grupo de segurança para o Application Load Balancer que controla o tráfego entre o Application Load Balancer, instâncias do EC2 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 instâncias do EC2, 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 console do Amazon EC2 em https://console.aws.amazon.com/ec2/.

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

  3. Em Security group name (nome do grupo de segurança), insira um nome para o grupo de segurança que seja fácil de identificar e diferente do outro, como EthereumEC2-SG ou EthereumALB-SG. Você usará esses nomes depois. Em Description (Descrição), insira um breve resumo.

  4. Em VPC, selecione a VPC criada anteriormente.

  5. Escolha Criar.

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

Adicione regras de entrada ao grupo de segurança para instâncias do EC2
  1. Selecione o grupo de segurança para instâncias do EC2 que você criou anteriormente

  2. Na guia Entrada, escolha Editar.

  3. 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, EthereumEC2-SG. Isso permite que as instâncias do EC2 no grupo de segurança comuniquem-se umas com as outras.

  4. Escolha Add Rule.

  5. 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 instâncias do EC2 no grupo de segurança se comuniquem com o Application Load Balancer.

  6. 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

  2. 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.

    2. Escolha Add Rule.

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

    4. Escolha Add Rule.

    5. 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 o tráfego SSH do seu computador, permitindo que o computador use o bastion host para visualizar interfaces da Web e se conectar a instâncias do EC2 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.

    6. Escolha Salvar.

  3. 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.

  4. Escolha Add Rule.

  5. Para Tipo, escolha Todo o tráfego. Em Destination (Destino), mantenha a opção Custom (Personalizada) selecionada. Escolha o grupo de segurança para instâncias do EC2 na lista. Isso permite conexões de saída do Application Load Balancer e o bastion host para instâncias do EC2 na rede Ethereum.

  6. Escolha Add Rule.

  7. 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.

  8. Escolha Salvar.

Crie um perfil do IAM para o Amazon ECS e um perfil de instância do EC2

Ao usar este modelo, você especificará um perfil do IAM para o Amazon ECS e um perfil de instância do EC2. 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 no Guia do usuário do IAM. Você configura o perfil do IAM para o Amazon ECS e o perfil de instância EC2 usando o console do 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/.

  2. No painel de navegação, selecione Roles (Funções) e Create Role (Criar função).

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

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

  5. Em Select your use case (Selecionar seu caso de uso), escolha Elastic Container Service, Next:Permissions (Próximo: permissões).

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

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

  8. Selecione Criar perfil.

  9. 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.

  10. 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.

O perfil da instância do EC2 que você especifica no modelo é assumido por instâncias do EC2 na rede de Ethereum para interagir com outros serviços da AWS. 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 da instância do EC2
  1. No painel de navegação, escolha Policies, Create policy.

  2. 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": "*" } ] }
  3. Escolha Revisar política.

  4. Em Nome, insira um valor que o ajude a identificar essa política de permissões, por exemplo, EthereumPolicyForEC2. Em Description (Descrição), insira um breve resumo. Escolha Criar política.

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

  6. Escolha EC2 e Next: Permissions (Próximo: permissões).

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

  8. Escolha a marca de seleção da política que criada anteriormente e escolha Next: Review (Próximo: revisão).

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

  10. 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).

  11. Copie o valor deInstance 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.

Criar um bastion host

Neste tutorial, crie um bastion host. Essa é uma instância do EC2 usada para se conectar às interfaces da Web e instâncias na 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 ter mais informações, consulte Conecte-se EthStats e EthExplorer usando o Bastion Host. 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 no Guia do usuário do Amazon EC2 para instâncias Linux.

  2. 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.

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

  4. 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).

  5. 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).

  6. Escolha Executar.

  7. Anote o ID da instância. Ele será necessário mais tarde, quando você Conecte-se EthStats e EthExplorer usando o Bastion Host.