Я узнаю о 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
Я попытался выполнить все шаги, но понял, что в его шагах чего-то не хватает, и я попытался вставить недостающие части, но почему-то все еще получаю ошибку при создании.
Я пытался погуглить, но, похоже, не смог найти много.
Интересно, есть ли кто-нибудь, кто может дать мне предложения / советы.
Я постараюсь записать шаги того, что я сделал.
Я создал новый, запустив мастер VPC с VPC with a single public subnet
Я назвал это BlockChainVPC
Я создал новый EC2 и выбрал первый AMI Amazon Linux 2 AMI (HVM), SSD Volume Type
, Я настроил сеть на использование VPC, созданного на предыдущем шаге, а затем оставил другие данные экземпляра по умолчанию. Что касается группы безопасности, я создал новую группу безопасности с именем Hyperledge
с входящими правилами HTTP + HTTPS, чтобы быть доступным где угодно. Что касается исходящего трафика, он открыт для всего трафика. Что касается PEM, я создал новый PEM с именем blockchainbook
Я создал один эластичный ip с настройкой us-west-2
для сетевой пограничной группы. Я создал оба ec2 + vpc в Орегоне (us-west-2). Затем я связал этот эластичный IP-адрес с созданным мной ранее ec2.
Я создал другую группу безопасности с именем blockchainbook
с SSH + 8080 в качестве правил для входящих и всего трафика для исходящих. Эта группа безопасности с новым VPC (blockchainVPC)
Я создал новую политику в IAM под названием EC2BC
, Я добавил полный доступ к Elastic Container Registry
и Elastic Container Service
и S3
с ресурсами как all resources
Я создал новую роль с именем EC2Blockchain
с участием aws service
и общий вариант использования EC2
Я прикрепил к этой роли созданную мной политику (EC2BC).
Я вернулся к EC2, созданному на шаге 2, затем прикрепил EC2Blockchain
роль к нему.
Я перешел на эту страницу из 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.
Наконец, я начал создавать стек и увидел, что он выполняется из-за состояния 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 -
Репозиторий образов Docker -
СЦЕНАРИЙ ДЛЯ РАБОТЫ НА 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
)