AWS CloudFormation не удалось запустить Hyperledger Fabric с ошибкой: не удалось создать: [EC2InstanceForDev]

#hyperledger-fabric #amazon-cloudformation #amazon-iam

#hyperledger-fabric #aws-cloudformation #amazon-iam

Вопрос:

Следуя документации aws: https://docs.aws.amazon.com/blockchain-templates/latest/developerguide/blockchain-templates-hyperledger.html Использование политики 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",
                "s3:Get*",
                "s3:List*"
            ],
            "Resource": "*"
        }
    ]
}
  

Но не удалось запустить стек. Затем я добавил все приведенные ниже разрешения:

 AmazonEC2FullAccess
AmazonEC2ContainerRegistryFullAccess
AmazonS3FullAccess
AmazonEC2ContainerRegistryReadOnly
AmazonS3ReadOnlyAccess
AmazonEC2ContainerServiceFullAccess
AdministratorAccess
  

Но по-прежнему безуспешно, и я получил эту ошибку:

Не удалось создать следующие ресурсы: [EC2InstanceForDev].

Какую политику IAM я должен добавить, чтобы устранить эту ошибку?

Спасибо!

Комментарии:

1. Просто чтобы убедиться, были ли вы допущены к предварительному просмотру продукта? Кроме того, вы работаете в правильном регионе, где доступен предварительный просмотр?

2. Привет @ MC_, могу я узнать, где предварительный просмотр продукта? Не могли бы вы, пожалуйста, поделиться ссылкой? Я создаю все свои ресурсы в us-west-2, поэтому я использую ссылку «Запуск в регионе US West (Орегон) (us-west-2)» из документации.

3. Но вы подписались на предварительный просмотр для этого? Это должно быть сделано из вашей учетной записи. В противном случае вы не сможете развернуть эту службу, поскольку она не будет включена.

4. Ссылка для регистрации в QuantumLedgerDatabase , для AmazonManagedBlockchain

Ответ №1:

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

Но проблема в том, что он выполняет все в экземпляре EC2, за исключением установки docker-compose, и выдает ошибку, что команда docker-compose не найдена в конце, что приводит к разрыву шаблона CloudFormation (EC2InstanceForDev) и выполняет откат. Таким образом, вместо использования шаблона CloudFormation мы можем запустить тот же скрипт вручную на EC2-instance с небольшим изменением. Изменение заключается в предварительной установке docker-compose. Настройка Rest остается прежней, т.е. — 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 для us-east-1
  2. 763976151875 для us-east-2
  3. 712425161857 для us-west-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), пожалуйста, измените это тоже в соответствии с требованиями. Это тот же корневой домен, Org1SubDomain, Org2SubDomain, Org3SubDomain, имя канала, которое мы вводим в шаблоне CF).

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