Назад | Перейти на главную страницу

Шаблон блокчейна aws получил сигнал об ошибке с уникальным идентификатором + не удалось создать экземпляр ec2 для разработчика

Я узнаю о How to Deploy Hyperledger Fabric on AWS with Blockchain Templates. из этого учебника https://medium.com/faun/how-to-deploy-hyperledger-fabric-on-aws-with-blockchain-templates-12ff1b219d98

Я попытался выполнить все шаги, но понял, что в его шагах чего-то не хватает, и я попытался вставить недостающие части, но почему-то все еще получаю ошибку при создании.

Я пытался погуглить, но, похоже, не смог найти много.

Интересно, есть ли кто-нибудь, кто может дать мне предложения / советы.

Я постараюсь записать шаги того, что я сделал.

  1. Я создал новый, запустив мастер VPC с VPC with a single public subnet Я назвал это BlockChainVPC

  2. Я создал новый EC2 и выбрал первый AMI Amazon Linux 2 AMI (HVM), SSD Volume Type, Я настроил сеть на использование VPC, созданного на предыдущем шаге, а затем оставил другие данные экземпляра по умолчанию. Что касается группы безопасности, я создал новую группу безопасности с именем Hyperledge с входящими правилами HTTP + HTTPS, чтобы быть доступным где угодно. Что касается исходящего трафика, он открыт для всего трафика. Что касается PEM, я создал новый PEM с именем blockchainbook

  3. Я создал один эластичный ip с настройкой us-west-2 для сетевой пограничной группы. Я создал оба ec2 + vpc в Орегоне (us-west-2). Затем я связал этот эластичный IP-адрес с созданным мной ранее ec2.

  4. Я создал другую группу безопасности с именем blockchainbook с SSH + 8080 в качестве правил для входящих и всего трафика для исходящих. Эта группа безопасности с новым VPC (blockchainVPC)

  5. Я создал новую политику в IAM под названием EC2BC, Я добавил полный доступ к Elastic Container Registry и Elastic Container Service и S3 с ресурсами как all resources

  6. Я создал новую роль с именем EC2Blockchain с участием aws service и общий вариант использования EC2 Я прикрепил к этой роли созданную мной политику (EC2BC).

  7. Я вернулся к EC2, созданному на шаге 2, затем прикрепил EC2Blockchain роль к нему.

  8. Я перешел на эту страницу из AWS https://aws.amazon.com/blockchain/templates/getting-started/ и выбрал Launch in US West (Oregon) region (us-west-2) для запуска Hyperledger Fabric, который приводит меня к облачной информации с URL-адресом шаблона Hyperledger Fabric. Что касается имени стека, я ввел BlockchainStack. VPC Connection, я выбрал BlockChainVPC который я создал на шаге 1. Подсеть, я выбрал подсеть, которая была создана с BlockchainVPC. Пара ключей EC2 Я выбрал ту, которую создал с помощью ec2 на шаге 2. Группа безопасности, я выбираю blockchainbook Я создал на шаге 4. Что касается профиля экземпляра EC2 ARN, я выбрал Role ARN из роли, которую я создал на шаге 6.

  9. Наконец, я начал создавать стек и увидел, что он выполняется из-за состояния CREATE_IN_PROGRESS, через несколько минут я вижу ошибку Embedded stack arn:aws:cloudformation:us-west-2:234234234:stack/BlockchainStack-FabricEC2CommonStack-1OF23423423/234234234-234234234-234 was not successfully created: The following resource(s) failed to create: [EC2InstanceForDev].

После ошибки я снова попытался воссоздать стек, все настройки остались прежними, кроме профиля экземпляра EC2 ARN, на этот раз я выбрал Instance Profile ARNs из роли, которую я создал на шаге 6. Но ошибка все та же, не повезло.

Я также подумал, что это может быть разрешение роли, которое я установил, или группа безопасности, которую я ошибся, поэтому я даже попытался привязать политику администратора к роли и всему трафику как для входящего, так и для исходящего для группы безопасности, но все равно не повезло.

Есть ли у кого-нибудь предложения / советы по этому поводу?

Заранее благодарю за любую помощь.

Официальный шаблон формирования облака AWS Blockchain для Hyperledger Fabric - это вложенный шаблон (наш базовый шаблон вызывает другой шаблон, который выполняет всю настройку на экземпляре EC2, который создается самим).

Но проблема в том, что он делает все на EC2-Instance, кроме установки docker-compose, и выдает ошибку, что команда docker-compose не найдена в конце, что приводит к сбою шаблона CloudFormation (EC2InstanceForDev) и откату. Поэтому вместо использования шаблона CloudFormation мы можем запустить тот же скрипт вручную на экземпляре EC2 с небольшими изменениями. Изменение заключается в предварительной установке docker-compose. Настройка отдыха остается прежней, т.е. 1. Создайте VPC, 2. Создайте общедоступные подсети, 3. Создайте EIP, если вы хотите присоединить его позже, 4. Создайте пару ключей для SSH, 5. Создайте роль и политику IAM, 6. Создайте группу безопасности с входящим трафиком 8080 ( TCP) & 22 (SSH), 7. Запустите экземпляр EC2 с ресурсами, созданными на шаге (1to6).

Предпочтительный AMI -

  1. ami-1853ac65 для us-east-1
  2. ami-25615740 для us-east-2
  3. ami-dff017b8 для us-west-2

Репозиторий образов Docker -

  1. 354658284331 для сша-восток-1
  2. 763976151875 для сша-восток-2
  3. 712425161857 для сша-запад-2

СЦЕНАРИЙ ДЛЯ РАБОТЫ НА EC2 (Укажите chmod 777 и chmod + x для сценария) -

#!/bin/bash -x
sudo curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
docker-compose --version
res=$?
echo $res
mkdir /tmp/fabric-install/
cd /tmp/fabric-install/
wget https://aws-blockchain-templates-us-east-1.s3.us-east-1.amazonaws.com/hyperledger/fabric/templates/simplenetwork/latest/HyperLedger-BasicNetwork.tgz -O /home/ec2-user/HyperLedger-BasicNetwork.tgz
cd /home/ec2-user
tar xzvf HyperLedger-BasicNetwork.tgz
rm /home/ec2-user/HyperLedger-BasicNetwork.tgz
chown -R ec2-user:ec2-user HyperLedger-BasicNetwork
chmod +x /home/ec2-user/HyperLedger-BasicNetwork/artifacts/first-run-standalone.sh
/home/ec2-user/HyperLedger-BasicNetwork/artifacts/first-run-standalone.sh us-east-1 example.com org1 org2 org3 mychannel 354658284331.dkr.ecr.us-east-1.amazonaws.com/ 354658284331
res=$?
echo $res

IAM-политика, которую я привязал к роли -

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ecr:GetAuthorizationToken",
                "ecr:BatchCheckLayerAvailability",
                "ecr:GetDownloadUrlForLayer",
                "ecr:GetRepositoryPolicy",
                "ecr:DescribeRepositories",
                "ecr:ListImages",
                "ecr:DescribeImages",
                "ecr:BatchGetImage"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:Get*",
                "s3:List*"
            ],
            "Resource": "*"
        }
]
}

НОТА - Пожалуйста, замените соответствующий номер учетной записи AWS ECR для вашего региона и соответствующий регион AWS в приведенном выше скрипте и скрипте (example.com org1 org2 org3 mychannel). Пожалуйста, измените и это в соответствии с требованиями. Это тот же самый RootDomain, Org1SubDomain, Org2SubDomain, Org3SubDomain, ChannelName, который мы вводим в шаблоне CF).

Весь этот процесс апробирован в регионе us-east-1. Скрипт можно прямо развернуть в регионе us-east-1. Чтобы получить доступ к интерфейсу веб-монитора Hyperledger (http://EC2-DNS OR EIP:8080)