【问题标题】:AWS CloudFormation launch Hyperledger Fabric Failed with Error: failed to create: [EC2InstanceForDev]AWS CloudFormation 启动 Hyperledger Fabric 失败并出现错误:创建失败:[EC2InstanceForDev]
【发布时间】:2019-07-27 09:36:32
【问题描述】:

遵循 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 政策来解决此错误?

谢谢!

【问题讨论】:

  • 只是为了确定,您是否被接受了产品预览?另外,您是否在提供预览的正确区域运行?
  • 嗨@MC_,我可以知道产品的预览版在哪里吗?你能分享一下链接吗?我在 us-west-2 中创建所有资源,因此我使用文档中的“在美国西部(俄勒冈)区域 (us-west-2) 启动”链接。
  • 但是您注册了它的预览版吗?这应该从您的帐户中完成。否则,您将无法部署此服务,因为它不会启用。
  • QuantumLedgerDatabase 的注册链接,AmazonManagedBlockchain 的注册链接

标签: hyperledger-fabric amazon-cloudformation amazon-iam


【解决方案1】:

Hyperledger Fabric 的官方 AWS 区块链云形成模板是一个嵌套模板(我们的基本模板调用另一个模板,该模板在自己创建的 EC2 实例上完成所有设置)。

但问题是它在 EC2-Instance 上执行所有操作,除了安装 docker-compose 之外,它会抛出一个错误,即最后找不到 docker-compose 命令,这会导致 CloudFormation 模板中断(EC2InstanceForDev)并进行回滚。因此,我们可以在 EC2 实例上手动运行相同的脚本,而不是使用 CloudFormation 模板,只需稍作改动。变化是预先安装 docker-compose。其余设置保持不变,即 - 1。创建 VPC,2. 创建公共子网,3. 如果您想稍后附加它,请创建 EIP,4. 为 SSH 创建密钥对,5. 创建 IAM 角色和策略,6. 创建具有入站 8080(TCP) 的安全组& 22(SSH), 7. 使用步骤 (1to6) 中创建的资源启动 EC2 实例。

首选 AMI 是 -

  1. ami-1853ac65 用于 us-east-1
  2. ami-25615740 用于 us-east-2
  3. ami-dff017b8 用于 us-west-2

Docker 映像存储库 -

  1. 354658284331 for us-east-1
  2. 763976151875 for us-east-2
  3. 712425161857 for 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 区域的相应 AWS ECR 帐号,并且脚本有(example.com org1 org2 org3 mychannel),请根据需要也更改此设置。它与我们在 CF 模板中输入的 RootDomain、Org1SubDomain、Org2SubDomain、Org3SubDomain、ChannelName 相同)。

整个过程在 us-east-1 地区进行了测试。该脚本可以直接部署在 us-east-1 区域。访问 Hyperledger Web 监控界面 (http://EC2-DNS OR EIP:8080)

【讨论】:

    猜你喜欢
    • 2019-05-21
    • 1970-01-01
    • 2019-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-19
    • 2019-02-04
    • 2019-01-06
    相关资源
    最近更新 更多