#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 — это —
- ami-1853ac65 для us-east-1
- ami-25615740 для us-east-2
- ami-dff017b8 для us-west-2
Репозиторий изображений Docker —
- 354658284331 для us-east-1
- 763976151875 для us-east-2
- 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
)